diff --git a/atom/browser/native_window.cc b/atom/browser/native_window.cc index c9f209a3a2..bfac0b6fb7 100644 --- a/atom/browser/native_window.cc +++ b/atom/browser/native_window.cc @@ -8,6 +8,10 @@ #include #include +#if defined(OS_WIN) +#include +#endif + #include "atom/browser/atom_browser_context.h" #include "atom/browser/atom_browser_main_parts.h" #include "atom/browser/browser.h" @@ -388,6 +392,16 @@ void NativeWindow::AppendExtraCommandLineSwitches( command_line->AppendSwitchASCII(switches::kZoomFactor, base::DoubleToString(zoom_factor_)); +#if defined(OS_WIN) + PWSTR explicit_app_id; + + if (SUCCEEDED(GetCurrentProcessExplicitAppUserModelID(&explicit_app_id))) { + base::string16 appId = base::string16(explicit_app_id); + command_line->AppendSwitchNative(switches::kAppUserModelId, appId); + CoTaskMemFree(explicit_app_id); + } +#endif + if (web_preferences_.IsEmpty()) return; diff --git a/atom/common/options_switches.cc b/atom/common/options_switches.cc index 71469b9601..8f457116ec 100644 --- a/atom/common/options_switches.cc +++ b/atom/common/options_switches.cc @@ -107,6 +107,9 @@ const char kDisableHttpCache[] = "disable-http-cache"; // Register schemes to standard. const char kRegisterStandardSchemes[] = "register-standard-schemes"; +// The browser process app model ID +const char kAppUserModelId[] = "app-user-model-id"; + } // namespace switches } // namespace atom diff --git a/atom/common/options_switches.h b/atom/common/options_switches.h index fc25208a60..2dd48ee32a 100644 --- a/atom/common/options_switches.h +++ b/atom/common/options_switches.h @@ -58,6 +58,8 @@ extern const char kPageVisibility[]; extern const char kDisableHttpCache[]; extern const char kRegisterStandardSchemes[]; +extern const char kAppUserModelId[]; + } // namespace switches } // namespace atom diff --git a/atom/renderer/atom_renderer_client.cc b/atom/renderer/atom_renderer_client.cc index e2a114af01..178be33900 100644 --- a/atom/renderer/atom_renderer_client.cc +++ b/atom/renderer/atom_renderer_client.cc @@ -27,6 +27,10 @@ #include "atom/common/node_includes.h" +#if defined(OS_WIN) +#include +#endif + namespace atom { namespace { @@ -87,6 +91,17 @@ void AtomRendererClient::WebKitInitialized() { blink::WebCustomElement::addEmbedderCustomElementName("webview"); blink::WebCustomElement::addEmbedderCustomElementName("browserplugin"); +#if defined(OS_WIN) + base::CommandLine* command_line = + base::CommandLine::ForCurrentProcess(); + base::string16 explicit_app_id = + command_line->GetSwitchValueNative(switches::kAppUserModelId); + + if (explicit_app_id.length() > 0) { + SetCurrentProcessExplicitAppUserModelID(explicit_app_id.c_str()); + } +#endif + node_bindings_->Initialize(); node_bindings_->PrepareMessageLoop();