From f2fa0e96ebcfc4b9876662d53d82a8742c24aa9b Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Tue, 22 Sep 2015 23:39:31 +0800 Subject: [PATCH 1/2] Pass options in "new-window" event --- atom/browser/lib/guest-window-manager.coffee | 7 ++++--- atom/renderer/lib/web-view/guest-view-internal.coffee | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/atom/browser/lib/guest-window-manager.coffee b/atom/browser/lib/guest-window-manager.coffee index 2dc5056a57ea..9a5c0ca349ae 100644 --- a/atom/browser/lib/guest-window-manager.coffee +++ b/atom/browser/lib/guest-window-manager.coffee @@ -22,7 +22,7 @@ createGuest = (embedder, url, frameName, options) -> guest.loadUrl url return guest.id - guest = new BrowserWindow(mergeBrowserWindowOptions(embedder, options)) + guest = new BrowserWindow(options) guest.loadUrl url # Remember the embedder, will be used by window.opener methods. @@ -51,11 +51,12 @@ createGuest = (embedder, url, frameName, options) -> # Routed window.open messages. ipc.on 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WINDOW_OPEN', (event, args...) -> [url, frameName, options] = args - event.sender.emit 'new-window', event, url, frameName, 'new-window' + options = mergeBrowserWindowOptions event.sender, options + event.sender.emit 'new-window', event, url, frameName, 'new-window', options if (event.sender.isGuest() and not event.sender.allowPopups) or event.defaultPrevented event.returnValue = null else - event.returnValue = createGuest event.sender, args... + event.returnValue = createGuest event.sender, url, frameName, options ipc.on 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WINDOW_CLOSE', (event, guestId) -> BrowserWindow.fromId(guestId)?.destroy() diff --git a/atom/renderer/lib/web-view/guest-view-internal.coffee b/atom/renderer/lib/web-view/guest-view-internal.coffee index b491184fb8d7..2852d1122874 100644 --- a/atom/renderer/lib/web-view/guest-view-internal.coffee +++ b/atom/renderer/lib/web-view/guest-view-internal.coffee @@ -16,7 +16,7 @@ WEB_VIEW_EVENTS = 'did-get-redirect-request': ['oldUrl', 'newUrl', 'isMainFrame'] 'dom-ready': [] 'console-message': ['level', 'message', 'line', 'sourceId'] - 'new-window': ['url', 'frameName', 'disposition'] + 'new-window': ['url', 'frameName', 'disposition', 'options'] 'close': [] 'crashed': [] 'gpu-crashed': [] From 8bfa3cba63720da7a37e93c549a19ce452bc35c3 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Tue, 22 Sep 2015 23:41:08 +0800 Subject: [PATCH 2/2] docs: The options parameter of new-window event --- docs/api/web-contents.md | 2 ++ docs/api/web-view-tag.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/docs/api/web-contents.md b/docs/api/web-contents.md index f971c569eee9..e858d0211a92 100644 --- a/docs/api/web-contents.md +++ b/docs/api/web-contents.md @@ -111,6 +111,8 @@ Returns: * `frameName` String * `disposition` String - Can be `default`, `foreground-tab`, `background-tab`, `new-window` and `other`. +* `options` Object - The options which will be used for creating the new + `BrowserWindow`. Emitted when the page requests to open a new window for a `url`. It could be requested by `window.open` or an external link like ``. diff --git a/docs/api/web-view-tag.md b/docs/api/web-view-tag.md index 7b4aa2ebf86c..3fda3a98edb5 100644 --- a/docs/api/web-view-tag.md +++ b/docs/api/web-view-tag.md @@ -505,6 +505,8 @@ Returns: * `frameName` String * `disposition` String - Can be `default`, `foreground-tab`, `background-tab`, `new-window` and `other`. +* `options` Object - The options which should be used for creating the new + `BrowserWindow`. Fired when the guest page attempts to open a new browser window.