refactor: export internalWindowOpen from guest-window-manager (#21498)

This commit is contained in:
Milan Burda 2019-12-16 02:30:25 +01:00 committed by Cheng Zhao
parent a7f5aafaca
commit 6a03d3cc66
2 changed files with 12 additions and 12 deletions

View file

@ -7,6 +7,7 @@ const path = require('path')
const url = require('url') const url = require('url')
const { app, ipcMain, session, deprecate } = electron const { app, ipcMain, session, deprecate } = electron
const { internalWindowOpen } = require('@electron/internal/browser/guest-window-manager')
const NavigationController = require('@electron/internal/browser/navigation-controller') const NavigationController = require('@electron/internal/browser/navigation-controller')
const { ipcMainInternal } = require('@electron/internal/browser/ipc-main-internal') const { ipcMainInternal } = require('@electron/internal/browser/ipc-main-internal')
const ipcMainUtils = require('@electron/internal/browser/ipc-main-internal-utils') const ipcMainUtils = require('@electron/internal/browser/ipc-main-internal-utils')
@ -397,9 +398,7 @@ WebContents.prototype._init = function () {
width: 800, width: 800,
height: 600 height: 600
} }
ipcMainInternal.emit('ELECTRON_GUEST_WINDOW_MANAGER_INTERNAL_WINDOW_OPEN', internalWindowOpen(event, url, referrer, frameName, disposition, options, additionalFeatures, postData)
event, url, referrer, frameName, disposition,
options, additionalFeatures, postData)
}) })
// Create a new browser window for the native implementation of // Create a new browser window for the native implementation of
@ -421,8 +420,7 @@ WebContents.prototype._init = function () {
webContents webContents
} }
const referrer = { url: '', policy: 'default' } const referrer = { url: '', policy: 'default' }
ipcMainInternal.emit('ELECTRON_GUEST_WINDOW_MANAGER_INTERNAL_WINDOW_OPEN', internalWindowOpen(event, url, referrer, frameName, disposition, options)
event, url, referrer, frameName, disposition, options)
}) })
} }

View file

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