}
// Attach the guest to an element of embedder.
-const attachGuest = function (embedder, elementInstanceId, guestInstanceId, params) {
+const attachGuest = function (event, elementInstanceId, guestInstanceId, params) {
+ const embedder = event.sender
// Destroy the old guest when attaching.
const key = `${embedder.getId()}-${elementInstanceId}`
const oldGuestInstanceId = embedderElementsMap[key]
if (params.preload) {
webPreferences.preloadURL = params.preload
}
+
+ event.sender.emit('new-webview', event, guest, webPreferences)
+ if (event.defaultPrevented) {
+ if (guest.viewInstanceId == null) guest.viewInstanceId = params.instanceId
+ destroyGuest(embedder, guestInstanceId)
+ return
+ }
+
webViewManager.addGuest(guestInstanceId, elementInstanceId, embedder, guest, webPreferences)
guest.attachParams = params
embedderElementsMap[key] = guestInstanceId
})
ipcMain.on('ELECTRON_GUEST_VIEW_MANAGER_ATTACH_GUEST', function (event, elementInstanceId, guestInstanceId, params) {
- attachGuest(event.sender, elementInstanceId, guestInstanceId, params)
+ attachGuest(event, elementInstanceId, guestInstanceId, params)
})
ipcMain.on('ELECTRON_GUEST_VIEW_MANAGER_DESTROY_GUEST', function (event, guestInstanceId) {