From 9f29f66768292eb5b87d6244d82a59940c3824f0 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Wed, 12 Nov 2014 15:04:03 +0800 Subject: [PATCH] Add "preload" option for BrowserWindow --- atom/browser/native_window.cc | 11 +++++++++++ atom/browser/native_window.h | 3 +++ atom/common/options_switches.cc | 2 +- atom/renderer/lib/init.coffee | 2 +- 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/atom/browser/native_window.cc b/atom/browser/native_window.cc index a4366649b3a1..95dc491ed43d 100644 --- a/atom/browser/native_window.cc +++ b/atom/browser/native_window.cc @@ -101,6 +101,13 @@ NativeWindow::NativeWindow(content::WebContents* web_contents, // Read icon before window is created. options.Get(switches::kIcon, &icon_); + // The "preload" option must be absolute path. + if (options.Get(switches::kPreloadScript, &preload_script_) && + !preload_script_.IsAbsolute()) { + LOG(ERROR) << "Path of \"preload\" script must be absolute."; + preload_script_.clear(); + } + // Be compatible with old API of "node-integration" option. std::string old_string_token; if (options.Get(switches::kNodeIntegration, &old_string_token) && @@ -349,6 +356,10 @@ void NativeWindow::AppendExtraCommandLineSwitches( command_line->AppendSwitchASCII(switches::kNodeIntegration, node_integration_ ? "true" : "false"); + // Append --preload. + if (!preload_script_.empty()) + command_line->AppendSwitchPath(switches::kPreloadScript, preload_script_); + // Append --zoom-factor. if (zoom_factor_ != 1.0) command_line->AppendSwitchASCII(switches::kZoomFactor, diff --git a/atom/browser/native_window.h b/atom/browser/native_window.h index 7a21083ab301..a57a1a9dbe2b 100644 --- a/atom/browser/native_window.h +++ b/atom/browser/native_window.h @@ -318,6 +318,9 @@ class NativeWindow : public brightray::DefaultWebContentsDelegate, // Web preferences. mate::PersistentDictionary web_preferences_; + // The script to load before page's JavaScript starts to run. + base::FilePath preload_script_; + // Page's default zoom factor. double zoom_factor_; diff --git a/atom/common/options_switches.cc b/atom/common/options_switches.cc index e6e65f204bbd..4bbc5e607515 100644 --- a/atom/common/options_switches.cc +++ b/atom/common/options_switches.cc @@ -67,7 +67,7 @@ const char kEnablePlugins[] = "enable-plugins"; const char kGuestInstanceID[] = "guest-instance-id"; // Script that will be loaded by guest WebContents before other scripts. -const char kPreloadScript[] = "preload-script"; +const char kPreloadScript[] = "preload"; // Web runtime features. const char kExperimentalFeatures[] = "experimental-features"; diff --git a/atom/renderer/lib/init.coffee b/atom/renderer/lib/init.coffee index 5203ec8530dc..69e76e98e155 100644 --- a/atom/renderer/lib/init.coffee +++ b/atom/renderer/lib/init.coffee @@ -31,7 +31,7 @@ for arg in process.argv require('web-frame').setName 'ATOM_SHELL_GUEST_WEB_VIEW' else if arg.indexOf('--node-integration=') == 0 nodeIntegration = arg.substr arg.indexOf('=') + 1 - else if arg.indexOf('--preload-script=') == 0 + else if arg.indexOf('--preload=') == 0 preloadScript = arg.substr arg.indexOf('=') + 1 if location.protocol is 'chrome-devtools:'