diff --git a/lib/browser/guest-view-manager.js b/lib/browser/guest-view-manager.js index bf1de28e1ae4..2c5c75e4e758 100644 --- a/lib/browser/guest-view-manager.js +++ b/lib/browser/guest-view-manager.js @@ -116,20 +116,6 @@ const createGuest = function (embedder, params) { guest.allowPopups = params.allowpopups }) - guest.on('-add-new-contents', (...args) => { - const embedder = getEmbedder(guestInstanceId) - if (embedder != null) { - embedder.emit('-add-new-contents', ...args) - } - }) - - guest.on('-web-contents-created', (...args) => { - const embedder = getEmbedder(guestInstanceId) - if (embedder != null) { - embedder.emit('-web-contents-created', ...args) - } - }) - const sendToEmbedder = (channel, ...args) => { const embedder = getEmbedder(guestInstanceId) if (embedder != null) { @@ -157,6 +143,25 @@ const createGuest = function (embedder, params) { sendToEmbedder('ELECTRON_GUEST_VIEW_INTERNAL_SIZE_CHANGED', ...args) }) + // Forward internal web contents event to embedder to handle + // native window.open setup + guest.on('-add-new-contents', (...args) => { + if (guest.getWebPreferences().nativeWindowOpen === true) { + const embedder = getEmbedder(guestInstanceId) + if (embedder != null) { + embedder.emit('-add-new-contents', ...args) + } + } + }) + guest.on('-web-contents-created', (...args) => { + if (guest.getWebPreferences().nativeWindowOpen === true) { + const embedder = getEmbedder(guestInstanceId) + if (embedder != null) { + embedder.emit('-web-contents-created', ...args) + } + } + }) + return guestInstanceId }