From 98a723b0f0c72578ec538709140c9874a49133ac Mon Sep 17 00:00:00 2001 From: Jeremy Rose Date: Fri, 11 Mar 2022 13:57:13 -0800 Subject: [PATCH] fix: BrowserWindow.fromWebContents should work in browser-window-created --- shell/common/gin_helper/trackable_object.h | 2 +- spec-main/api-browser-window-spec.ts | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/shell/common/gin_helper/trackable_object.h b/shell/common/gin_helper/trackable_object.h index 309e412e8a6f6..7f5b45c75fbcb 100644 --- a/shell/common/gin_helper/trackable_object.h +++ b/shell/common/gin_helper/trackable_object.h @@ -117,11 +117,11 @@ class TrackableObject : public TrackableObjectBase, public EventEmitter { ~TrackableObject() override { RemoveFromWeakMap(); } void InitWith(v8::Isolate* isolate, v8::Local wrapper) override { - gin_helper::WrappableBase::InitWith(isolate, wrapper); if (!weak_map_) { weak_map_ = new electron::KeyWeakMap; } weak_map_->Set(isolate, weak_map_id_, wrapper); + gin_helper::WrappableBase::InitWith(isolate, wrapper); } private: diff --git a/spec-main/api-browser-window-spec.ts b/spec-main/api-browser-window-spec.ts index 70d57977af6a0..89ca787c0c392 100644 --- a/spec-main/api-browser-window-spec.ts +++ b/spec-main/api-browser-window-spec.ts @@ -1815,6 +1815,18 @@ describe('BrowserWindow module', () => { expect(BrowserWindow.fromWebContents(webviewContents)!.id).to.equal(w.id); await p; }); + + it('is usable immediately on browser-window-created', async () => { + const w = new BrowserWindow({ show: false }); + w.loadURL('about:blank'); + w.webContents.executeJavaScript('window.open(""); null'); + const [win, winFromWebContents] = await new Promise((resolve) => { + app.once('browser-window-created', (e, win) => { + resolve([win, BrowserWindow.fromWebContents(win.webContents)]); + }); + }); + expect(winFromWebContents).to.equal(win); + }); }); describe('BrowserWindow.openDevTools()', () => {