chore: deprecate nativeWindowOpen in Electron 17 (#32116)

This commit is contained in:
Milan Burda 2022-01-06 14:08:59 +01:00 committed by GitHub
parent c3b9f0e7b2
commit 2f9fd06534
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 1 deletions

View file

@ -45,6 +45,16 @@ However, you should consider further restricting the information returned to
the renderer; for instance, displaying a source selector to the user and only the renderer; for instance, displaying a source selector to the user and only
returning the selected source. returning the selected source.
### Deprecated: `nativeWindowOpen`
Prior to Electron 15, `window.open` was by default shimmed to use
`BrowserWindowProxy`. This meant that `window.open('about:blank')` did not work
to open synchronously scriptable child windows, among other incompatibilities.
Since Electron 15, `nativeWindowOpen` has been enabled by default.
See the documentation for [window.open in Electron](api/window-open.md)
for more details.
## Planned Breaking API Changes (16.0) ## Planned Breaking API Changes (16.0)
### Behavior Changed: `crashReporter` implementation switched to Crashpad on Linux ### Behavior Changed: `crashReporter` implementation switched to Crashpad on Linux

View file

@ -1,4 +1,4 @@
import { app, ipcMain, session, webFrameMain } from 'electron/main'; import { app, ipcMain, session, deprecate, webFrameMain } from 'electron/main';
import type { BrowserWindowConstructorOptions, LoadURLOptions } from 'electron/main'; import type { BrowserWindowConstructorOptions, LoadURLOptions } from 'electron/main';
import * as url from 'url'; import * as url from 'url';
@ -734,6 +734,11 @@ WebContents.prototype._init = function () {
} }
}); });
}); });
const prefs = this.getLastWebPreferences() || {};
if (prefs.nativeWindowOpen === false) {
deprecate.log('Deprecation Warning: Disabling nativeWindowOpen is deprecated. The nativeWindowOpen option will be removed in Electron 18.');
}
} }
this.on('login', (event, ...args) => { this.on('login', (event, ...args) => {