From 87c2f0f14f003f7d3d9211cf4d0fbd06a0a2ff63 Mon Sep 17 00:00:00 2001 From: Samuel Attard Date: Wed, 6 Dec 2017 07:58:48 +1100 Subject: [PATCH] Fix build and ensure no breaking change --- atom/browser/browser.cc | 2 + atom/browser/browser.h | 4 -- atom/browser/browser_win.cc | 29 ++---------- .../browser/win/windows_toast_notification.cc | 8 +++- brightray/common/application_info.cc | 18 ++++++++ brightray/common/application_info.h | 15 ++++++- brightray/common/application_info_win.cc | 45 +++++++++++++++++++ brightray/filenames.gypi | 1 + 8 files changed, 91 insertions(+), 31 deletions(-) create mode 100644 brightray/common/application_info.cc diff --git a/atom/browser/browser.cc b/atom/browser/browser.cc index 2f6db3b460e2..b1aa44467733 100644 --- a/atom/browser/browser.cc +++ b/atom/browser/browser.cc @@ -17,6 +17,7 @@ #include "base/threading/thread_restrictions.h" #include "base/threading/thread_task_runner_handle.h" #include "brightray/browser/brightray_paths.h" +#include "brightray/common/application_info.h" namespace atom { @@ -121,6 +122,7 @@ std::string Browser::GetName() const { void Browser::SetName(const std::string& name) { name_override_ = name; + brightray::OverrideApplicationName(name); } int Browser::GetBadgeCount() { diff --git a/atom/browser/browser.h b/atom/browser/browser.h index 553d3648afa3..05fcdf404725 100644 --- a/atom/browser/browser.h +++ b/atom/browser/browser.h @@ -278,10 +278,6 @@ class Browser : public WindowListObserver { int badge_count_ = 0; -#if defined(OS_WIN) - base::string16 app_user_model_id_; -#endif - #if defined(OS_MACOSX) base::DictionaryValue about_panel_options_; #endif diff --git a/atom/browser/browser_win.cc b/atom/browser/browser_win.cc index f1ab2b98b941..f27e3dfa139a 100644 --- a/atom/browser/browser_win.cc +++ b/atom/browser/browser_win.cc @@ -24,13 +24,12 @@ #include "base/win/registry.h" #include "base/win/win_util.h" #include "base/win/windows_version.h" +#include "brightray/common/application_info.h" namespace atom { namespace { -const wchar_t kAppUserModelIDFormat[] = L"electron.app.$1"; - BOOL CALLBACK WindowsEnumerationHandler(HWND hwnd, LPARAM param) { DWORD target_process_id = *reinterpret_cast(param); DWORD process_id = 0; @@ -119,8 +118,7 @@ void Browser::ClearRecentDocuments() { } void Browser::SetAppUserModelID(const base::string16& name) { - app_user_model_id_ = name; - SetCurrentProcessExplicitAppUserModelID(app_user_model_id_.c_str()); + brightray::SetAppUserModelID(name); } bool Browser::SetUserTasks(const std::vector& tasks) { @@ -324,19 +322,7 @@ Browser::LoginItemSettings Browser::GetLoginItemSettings( } PCWSTR Browser::GetAppUserModelID() { - if (app_user_model_id_.empty()) { - PWSTR current_app_id; - if (SUCCEEDED(GetCurrentProcessExplicitAppUserModelID(¤t_app_id))) { - app_user_model_id_ = currrent_app_id; - } else { - current_app_id = base::ReplaceStringPlaceholders( - kAppUserModelIDFormat, base::UTF8ToUTF16(GetName()), nullptr); - SetAppUserModelID(current_app_id); - } - CoTaskMemFree(current_app_id); - } - - return app_user_model_id_.c_str(); + return brightray::GetRawAppUserModelID(); } std::string Browser::GetExecutableFileVersion() const { @@ -352,14 +338,7 @@ std::string Browser::GetExecutableFileVersion() const { } std::string Browser::GetExecutableFileProductName() const { - base::FilePath path; - if (PathService::Get(base::FILE_EXE, &path)) { - std::unique_ptr version_info( - FileVersionInfo::CreateFileVersionInfo(path)); - return base::UTF16ToUTF8(version_info->product_name()); - } - - return ATOM_PRODUCT_NAME; + return brightray::GetApplicationName(); } } // namespace atom diff --git a/brightray/browser/win/windows_toast_notification.cc b/brightray/browser/win/windows_toast_notification.cc index a0fa38640d69..9437d83a498f 100644 --- a/brightray/browser/win/windows_toast_notification.cc +++ b/brightray/browser/win/windows_toast_notification.cc @@ -11,8 +11,11 @@ #include #include +<<<<<<< HEAD #include "atom/browser/browser.h" #include "base/environment.h" +======= +>>>>>>> Fix build and ensure no breaking change #include "base/strings/utf_string_conversions.h" #include "brightray/browser/notification_delegate.h" #include "brightray/browser/win/notification_presenter_win.h" @@ -30,6 +33,7 @@ using ABI::Windows::Data::Xml::Dom::IXmlText; namespace brightray { +<<<<<<< HEAD namespace { bool GetAppUserModelId(ScopedHString* app_id) { @@ -43,6 +47,8 @@ bool IsDebuggingNotifications() { } // namespace +======= +>>>>>>> Fix build and ensure no breaking change // static ComPtr WindowsToastNotification::toast_manager_; @@ -65,7 +71,7 @@ bool WindowsToastNotification::Initialize() { return false; ScopedHString app_id; - if (!GetAppUserModelId(&app_id)) + if (!GetAppUserModelID(&app_id)) return false; return SUCCEEDED( diff --git a/brightray/common/application_info.cc b/brightray/common/application_info.cc new file mode 100644 index 000000000000..9ae8ba464d78 --- /dev/null +++ b/brightray/common/application_info.cc @@ -0,0 +1,18 @@ +#include "brightray/common/application_info.h" + +namespace brightray { + +namespace { + +std::string overriden_application_name_; + +} + +void OverrideApplicationName(const std::string& name) { + overriden_application_name_ = name; +} +std::string GetOverridenApplicationName() { + return overriden_application_name_; +} + +} // namespace brightray diff --git a/brightray/common/application_info.h b/brightray/common/application_info.h index ffff6ff0ab0e..7a7ed89649b4 100644 --- a/brightray/common/application_info.h +++ b/brightray/common/application_info.h @@ -1,13 +1,26 @@ #ifndef BRIGHTRAY_COMMON_APPLICATION_INFO_H_ #define BRIGHTRAY_COMMON_APPLICATION_INFO_H_ +#if defined(OS_WIN) +#include "brightray/browser/win/scoped_hstring.h" +#endif + #include namespace brightray { +void OverrideApplicationName(const std::string& name); +std::string GetOverridenApplicationName(); + std::string GetApplicationName(); std::string GetApplicationVersion(); -} +#if defined(OS_WIN) +PCWSTR GetRawAppUserModelID(); +bool GetAppUserModelID(ScopedHString* app_id); +void SetAppUserModelID(const base::string16& name); +#endif + +} // namespace brightray #endif // BRIGHTRAY_COMMON_APPLICATION_INFO_H_ diff --git a/brightray/common/application_info_win.cc b/brightray/common/application_info_win.cc index aa0ed280387e..ceef665ef929 100644 --- a/brightray/common/application_info_win.cc +++ b/brightray/common/application_info_win.cc @@ -1,12 +1,27 @@ #include "brightray/common/application_info.h" +#include // windows.h must be included first + +#include + #include #include "base/file_version_info.h" +#include "base/strings/string_util.h" +#include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" +#include "brightray/browser/win/scoped_hstring.h" namespace brightray { +namespace { + +base::string16 app_user_model_id_; + +} + +const wchar_t kAppUserModelIDFormat[] = L"electron.app.$1"; + std::string GetApplicationName() { auto module = GetModuleHandle(nullptr); std::unique_ptr info( @@ -21,4 +36,34 @@ std::string GetApplicationVersion() { return base::UTF16ToUTF8(info->product_version()); } +void SetAppUserModelID(const base::string16& name) { + app_user_model_id_ = name; + SetCurrentProcessExplicitAppUserModelID(app_user_model_id_.c_str()); +} + +PCWSTR GetRawAppUserModelID() { + if (app_user_model_id_.empty()) { + PWSTR current_app_id; + if (SUCCEEDED(GetCurrentProcessExplicitAppUserModelID(¤t_app_id))) { + app_user_model_id_ = current_app_id; + } else { + std::string name = GetOverridenApplicationName(); + if (name.empty()) { + name = GetApplicationName(); + } + base::string16 generated_app_id = base::ReplaceStringPlaceholders( + kAppUserModelIDFormat, base::UTF8ToUTF16(name), nullptr); + SetAppUserModelID(generated_app_id); + } + CoTaskMemFree(current_app_id); + } + + return app_user_model_id_.c_str(); +} + +bool GetAppUserModelID(ScopedHString* app_id) { + app_id->Reset(GetRawAppUserModelID()); + return app_id->success(); +} + } // namespace brightray diff --git a/brightray/filenames.gypi b/brightray/filenames.gypi index 473696feb889..6a7d91f135c4 100644 --- a/brightray/filenames.gypi +++ b/brightray/filenames.gypi @@ -112,6 +112,7 @@ 'browser/zoom_level_delegate.cc', 'browser/zoom_level_delegate.h', 'common/application_info.h', + 'common/application_info.cc', 'common/application_info_mac.mm', 'common/application_info_win.cc', 'common/content_client.cc',