From 446235c8cdfc979d5cc8917000288ca2f252f745 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Wed, 9 Sep 2015 15:55:26 +0800 Subject: [PATCH 1/2] Fix backward compatibility with old BrowserWindow options --- atom/browser/api/atom_api_window.cc | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/atom/browser/api/atom_api_window.cc b/atom/browser/api/atom_api_window.cc index 4acd101f3c9..7403a7ecbb7 100644 --- a/atom/browser/api/atom_api_window.cc +++ b/atom/browser/api/atom_api_window.cc @@ -70,14 +70,13 @@ Window::Window(v8::Isolate* isolate, const mate::Dictionary& options) { options.Get(switches::kWebPreferences, &web_preferences); // Be compatible with old options which are now in web_preferences. - std::string str; - double d; - if (options.Get(switches::kNodeIntegration, &str)) - web_preferences.Set(switches::kNodeIntegration, str); - if (options.Get(switches::kPreloadScript, &str)) - web_preferences.Set(switches::kPreloadScript, str); - if (options.Get(switches::kZoomFactor, &d)) - web_preferences.Set(switches::kZoomFactor, d); + v8::Local value; + if (options.Get(switches::kNodeIntegration, &value)) + web_preferences.Set(switches::kNodeIntegration, value); + if (options.Get(switches::kPreloadScript, &value)) + web_preferences.Set(switches::kPreloadScript, value); + if (options.Get(switches::kZoomFactor, &value)) + web_preferences.Set(switches::kZoomFactor, value); // Creates the WebContents used by BrowserWindow. auto web_contents = WebContents::Create(isolate, web_preferences); From c2b2a2072fb87bf2701a101c14cf887ba84fb2cd Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Wed, 9 Sep 2015 16:11:45 +0800 Subject: [PATCH 2/2] spec: Set node-integration in window.open should work --- spec/chromium-spec.coffee | 19 +++++++++++++++---- spec/fixtures/pages/window-opener-node.html | 7 +++++++ 2 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 spec/fixtures/pages/window-opener-node.html diff --git a/spec/chromium-spec.coffee b/spec/chromium-spec.coffee index c594a97f3b8..d09a021db9f 100644 --- a/spec/chromium-spec.coffee +++ b/spec/chromium-spec.coffee @@ -36,11 +36,20 @@ describe 'chromium feature', -> describe 'window.open', -> it 'returns a BrowserWindowProxy object', -> - b = window.open 'about:blank', 'test', 'show=no' + b = window.open 'about:blank', '', 'show=no' assert.equal b.closed, false assert.equal b.constructor.name, 'BrowserWindowProxy' b.close() + it 'accepts "node-integration" as feature', (done) -> + listener = (event) -> + window.removeEventListener 'message', listener + b.close() + assert.equal event.data, 'undefined' + done() + window.addEventListener 'message', listener + b = window.open "file://#{fixtures}/pages/window-opener-node.html", '', 'node-integration=no,show=no' + describe 'window.opener', -> ipc = remote.require 'ipc' url = "file://#{fixtures}/pages/window-opener.html" @@ -58,19 +67,21 @@ describe 'chromium feature', -> w.loadUrl url it 'is not null for window opened by window.open', (done) -> - b = window.open url, 'test2', 'show=no' + b = window.open url, '', 'show=no' ipc.on 'opener', (event, opener) -> b.close() done(if opener isnt null then undefined else opener) describe 'window.opener.postMessage', -> it 'sets source and origin correctly', (done) -> - b = window.open "file://#{fixtures}/pages/window-opener-postMessage.html", 'test', 'show=no' - window.addEventListener 'message', (event) -> + listener = (event) -> + window.removeEventListener 'message', listener b.close() assert.equal event.source.guestId, b.guestId assert.equal event.origin, 'file://' done() + window.addEventListener 'message', listener + b = window.open "file://#{fixtures}/pages/window-opener-postMessage.html", '', 'show=no' describe 'creating a Uint8Array under browser side', -> it 'does not crash', -> diff --git a/spec/fixtures/pages/window-opener-node.html b/spec/fixtures/pages/window-opener-node.html new file mode 100644 index 00000000000..118603c82d3 --- /dev/null +++ b/spec/fixtures/pages/window-opener-node.html @@ -0,0 +1,7 @@ + + + + +