diff --git a/atom/browser/browser.cc b/atom/browser/browser.cc index 739921fda90f..e80cb4e60e20 100644 --- a/atom/browser/browser.cc +++ b/atom/browser/browser.cc @@ -89,10 +89,6 @@ std::string Browser::GetName() const { void Browser::SetName(const std::string& name) { name_override_ = name; - -#if defined(OS_WIN) - SetAppUserModelID(name); -#endif } bool Browser::OpenFile(const std::string& file_path) { diff --git a/atom/browser/browser.h b/atom/browser/browser.h index 8719e18f3140..0500e317755b 100644 --- a/atom/browser/browser.h +++ b/atom/browser/browser.h @@ -100,8 +100,13 @@ class Browser : public WindowListObserver { // Add a custom task to jump list. void SetUserTasks(const std::vector& tasks); - // Set the application user model ID, called when "SetName" is called. - void SetAppUserModelID(const std::string& name); + // Set the application user model ID. + void SetAppUserModelID(const base::string16& name); + + // Returns the application user model ID, if there isn't one, then create + // one from app's name. + // The returned string managed by Browser, and should not be modified. + PCWSTR GetAppUserModelID(); #endif // Tell the application to open a file. diff --git a/atom/browser/browser_win.cc b/atom/browser/browser_win.cc index b861af945421..0e5ce8e2d955 100644 --- a/atom/browser/browser_win.cc +++ b/atom/browser/browser_win.cc @@ -56,7 +56,7 @@ void Browser::AddRecentDocument(const base::FilePath& path) { if (SUCCEEDED(hr)) { SHARDAPPIDINFO info; info.psi = item; - info.pszAppID = app_user_model_id_.c_str(); + info.pszAppID = GetAppUserModelID(); SHAddToRecentDocs(SHARD_APPIDINFO, &info); } } @@ -66,7 +66,7 @@ void Browser::ClearRecentDocuments() { if (FAILED(destinations.CoCreateInstance(CLSID_ApplicationDestinations, NULL, CLSCTX_INPROC_SERVER))) return; - if (FAILED(destinations->SetAppID(app_user_model_id_.c_str()))) + if (FAILED(destinations->SetAppID(GetAppUserModelID()))) return; destinations->RemoveAllDestinations(); } @@ -75,7 +75,7 @@ void Browser::SetUserTasks(const std::vector& tasks) { CComPtr destinations; if (FAILED(destinations.CoCreateInstance(CLSID_DestinationList))) return; - if (FAILED(destinations->SetAppID(app_user_model_id_.c_str()))) + if (FAILED(destinations->SetAppID(GetAppUserModelID()))) return; // Start a transaction that updates the JumpList of this application. @@ -117,12 +117,18 @@ void Browser::SetUserTasks(const std::vector& tasks) { destinations->CommitList(); } -void Browser::SetAppUserModelID(const std::string& name) { - app_user_model_id_ = base::string16(L"electron.app."); - app_user_model_id_ += base::UTF8ToUTF16(name); +void Browser::SetAppUserModelID(const base::string16& name) { + app_user_model_id_ = name; SetCurrentProcessExplicitAppUserModelID(app_user_model_id_.c_str()); } +PCWSTR Browser::GetAppUserModelID() { + if (app_user_model_id_.empty()) + SetAppUserModelID(base::UTF8ToUTF16(GetName())); + + return app_user_model_id_.c_str(); +} + std::string Browser::GetExecutableFileVersion() const { base::FilePath path; if (PathService::Get(base::FILE_EXE, &path)) {