diff --git a/shell/browser/api/electron_api_web_contents.cc b/shell/browser/api/electron_api_web_contents.cc index 005febd74c6c7..6913db059761c 100644 --- a/shell/browser/api/electron_api_web_contents.cc +++ b/shell/browser/api/electron_api_web_contents.cc @@ -662,23 +662,28 @@ void WebContents::WebContentsCreated(content::WebContents* source_contents, tracker->frame_name = frame_name; } -bool WebContents::ShouldCreateWebContents( - content::WebContents* web_contents, - content::RenderFrameHost* opener, +bool WebContents::IsWebContentsCreationOverridden( content::SiteInstance* source_site_instance, - int32_t route_id, - int32_t main_frame_route_id, - int32_t main_frame_widget_route_id, content::mojom::WindowContainerType window_container_type, const GURL& opener_url, const std::string& frame_name, + const GURL& target_url) { + if (Emit("-will-add-new-contents", target_url, frame_name)) { + return true; + } + return false; +} + +content::WebContents* WebContents::CreateCustomWebContents( + content::RenderFrameHost* opener, + content::SiteInstance* source_site_instance, + bool is_new_browsing_instance, + const GURL& opener_url, + const std::string& frame_name, const GURL& target_url, const std::string& partition_id, content::SessionStorageNamespace* session_storage_namespace) { - if (Emit("-will-add-new-contents", target_url, frame_name)) { - return false; - } - return true; + return nullptr; } void WebContents::AddNewContents( diff --git a/shell/browser/api/electron_api_web_contents.h b/shell/browser/api/electron_api_web_contents.h index 7ded34bc09c49..178c05d55f93e 100644 --- a/shell/browser/api/electron_api_web_contents.h +++ b/shell/browser/api/electron_api_web_contents.h @@ -383,16 +383,18 @@ class WebContents : public gin_helper::TrackableObject, const base::string16& message, int32_t line_no, const base::string16& source_id) override; - bool ShouldCreateWebContents( - content::WebContents* web_contents, - content::RenderFrameHost* opener, + bool IsWebContentsCreationOverridden( content::SiteInstance* source_site_instance, - int32_t route_id, - int32_t main_frame_route_id, - int32_t main_frame_widget_route_id, content::mojom::WindowContainerType window_container_type, const GURL& opener_url, const std::string& frame_name, + const GURL& target_url) override; + content::WebContents* CreateCustomWebContents( + content::RenderFrameHost* opener, + content::SiteInstance* source_site_instance, + bool is_new_browsing_instance, + const GURL& opener_url, + const std::string& frame_name, const GURL& target_url, const std::string& partition_id, content::SessionStorageNamespace* session_storage_namespace) override; diff --git a/spec-main/api-web-contents-spec.ts b/spec-main/api-web-contents-spec.ts index 33bed57698bf3..cdc602578585c 100644 --- a/spec-main/api-web-contents-spec.ts +++ b/spec-main/api-web-contents-spec.ts @@ -1820,14 +1820,14 @@ describe('webContents module', () => { it('cancels authentication when callback is called with no arguments', async () => { const w = new BrowserWindow({ show: false }); w.webContents.on('login', (event, request, authInfo, cb) => { - event.preventDefault() - cb() - }) - await w.loadURL(serverUrl) - const body = await w.webContents.executeJavaScript(`document.documentElement.textContent`) - expect(body).to.equal('401') - }) - }) + event.preventDefault(); + cb(); + }); + await w.loadURL(serverUrl); + const body = await w.webContents.executeJavaScript('document.documentElement.textContent'); + expect(body).to.equal('401'); + }); + }); it('emits a cancelable event before creating a child webcontents', async () => { const w = new BrowserWindow({ @@ -1835,19 +1835,19 @@ describe('webContents module', () => { webPreferences: { sandbox: true } - }) + }); w.webContents.on('-will-add-new-contents' as any, (event: any, url: any) => { - expect(url).to.equal('about:blank') - event.preventDefault() - }) - let wasCalled = false + expect(url).to.equal('about:blank'); + event.preventDefault(); + }); + let wasCalled = false; w.webContents.on('new-window' as any, () => { - wasCalled = true - }) - await w.loadURL('about:blank') - await w.webContents.executeJavaScript(`window.open('about:blank')`) - await new Promise((resolve) => { process.nextTick(resolve) }) - expect(wasCalled).to.equal(false) - await closeAllWindows() - }) -}) + wasCalled = true; + }); + await w.loadURL('about:blank'); + await w.webContents.executeJavaScript(`window.open('about:blank')`); + await new Promise((resolve) => { process.nextTick(resolve); }); + expect(wasCalled).to.equal(false); + await closeAllWindows(); + }); +});