|
@@ -1,6 +1,7 @@
|
|
|
'use strict'
|
|
|
|
|
|
-const { BrowserWindow, webContents } = require('electron')
|
|
|
+const electron = require('electron')
|
|
|
+const { BrowserWindow } = electron
|
|
|
const { isSameOrigin } = process.electronBinding('v8_util')
|
|
|
const { ipcMainInternal } = require('@electron/internal/browser/ipc-main-internal')
|
|
|
const ipcMainUtils = require('@electron/internal/browser/ipc-main-internal-utils')
|
|
@@ -244,14 +245,11 @@ ipcMainInternal.on('ELECTRON_GUEST_WINDOW_MANAGER_WINDOW_OPEN', (event, url, fra
|
|
|
}
|
|
|
|
|
|
const referrer = { url: '', policy: 'default' }
|
|
|
- ipcMainInternal.emit('ELECTRON_GUEST_WINDOW_MANAGER_INTERNAL_WINDOW_OPEN', event,
|
|
|
- url, referrer, frameName, disposition, options, additionalFeatures)
|
|
|
+ internalWindowOpen(event, url, referrer, frameName, disposition, options, additionalFeatures)
|
|
|
})
|
|
|
|
|
|
// Routed window.open messages with fully parsed options
|
|
|
-ipcMainInternal.on('ELECTRON_GUEST_WINDOW_MANAGER_INTERNAL_WINDOW_OPEN', function (event, url, referrer,
|
|
|
- frameName, disposition, options,
|
|
|
- additionalFeatures, postData) {
|
|
|
+function internalWindowOpen (event, url, referrer, frameName, disposition, options, additionalFeatures, postData) {
|
|
|
options = mergeBrowserWindowOptions(event.sender, options)
|
|
|
event.sender.emit('new-window', event, url, frameName, disposition, options, additionalFeatures, referrer)
|
|
|
const { newGuest } = event
|
|
@@ -269,11 +267,12 @@ ipcMainInternal.on('ELECTRON_GUEST_WINDOW_MANAGER_INTERNAL_WINDOW_OPEN', functio
|
|
|
} else {
|
|
|
event.returnValue = createGuest(event.sender, url, referrer, frameName, options, postData)
|
|
|
}
|
|
|
-})
|
|
|
+}
|
|
|
|
|
|
const handleMessage = function (channel, handler) {
|
|
|
ipcMainUtils.handle(channel, (event, guestId, ...args) => {
|
|
|
- const guestContents = webContents.fromId(guestId)
|
|
|
+ // Access webContents via electron to prevent circular require.
|
|
|
+ const guestContents = electron.webContents.fromId(guestId)
|
|
|
if (!guestContents) {
|
|
|
throw new Error(`Invalid guestId: ${guestId}`)
|
|
|
}
|
|
@@ -339,3 +338,5 @@ handleMessage('ELECTRON_GUEST_WINDOW_MANAGER_WEB_CONTENTS_METHOD', (event, guest
|
|
|
|
|
|
return guestContents[method](...args)
|
|
|
})
|
|
|
+
|
|
|
+exports.internalWindowOpen = internalWindowOpen
|