Merge pull request #2175 from atom/propagate-app-model-id

Propagate App Model User ID on Windows
This commit is contained in:
Cheng Zhao 2015-07-13 12:16:10 -07:00
commit 0c7c6ddcc9
4 changed files with 34 additions and 0 deletions

View file

@ -8,6 +8,10 @@
#include <utility>
#include <vector>
#if defined(OS_WIN)
#include <shlobj.h>
#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;

View file

@ -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

View file

@ -58,6 +58,8 @@ extern const char kPageVisibility[];
extern const char kDisableHttpCache[];
extern const char kRegisterStandardSchemes[];
extern const char kAppUserModelId[];
} // namespace switches
} // namespace atom

View file

@ -27,6 +27,10 @@
#include "atom/common/node_includes.h"
#if defined(OS_WIN)
#include <shlobj.h>
#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();