diff --git a/shell/browser/electron_browser_client.cc b/shell/browser/electron_browser_client.cc index daacf11b5230f..8768c7be2ce14 100644 --- a/shell/browser/electron_browser_client.cc +++ b/shell/browser/electron_browser_client.cc @@ -1506,15 +1506,10 @@ void ElectronBrowserClient::OverrideURLLoaderFactoryParams( const url::Origin& origin, bool is_for_isolated_world, network::mojom::URLLoaderFactoryParams* factory_params) { - for (const auto& iter : process_preferences_) { - if (iter.second.browser_context != browser_context) - continue; - - if (!iter.second.web_security) { - // bypass CORB - factory_params->process_id = iter.first; - factory_params->is_corb_enabled = false; - } + // Bypass CORB when web security is disabled. + auto it = process_preferences_.find(factory_params->process_id); + if (it != process_preferences_.end() && !it->second.web_security) { + factory_params->is_corb_enabled = false; } extensions::URLLoaderFactoryManager::OverrideURLLoaderFactoryParams( diff --git a/spec-main/chromium-spec.ts b/spec-main/chromium-spec.ts index 8b3441fa57eb5..a7d835641d7fc 100644 --- a/spec-main/chromium-spec.ts +++ b/spec-main/chromium-spec.ts @@ -245,6 +245,14 @@ describe('web security', () => { `); await p; }); + + it('does not crash when multiple WebContent are created with web security disabled', () => { + const options = { webPreferences: { webSecurity: false } }; + const w1 = new BrowserWindow(options); + w1.loadURL(serverUrl); + const w2 = new BrowserWindow(options); + w2.loadURL(serverUrl); + }); }); describe('command line switches', () => {