Browse Source

Fix build and ensure no breaking change

Samuel Attard 7 years ago
parent
commit
87c2f0f14f

+ 2 - 0
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() {

+ 0 - 4
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

+ 4 - 25
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<DWORD*>(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<UserTask>& 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(&current_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<FileVersionInfo> version_info(
-        FileVersionInfo::CreateFileVersionInfo(path));
-    return base::UTF16ToUTF8(version_info->product_name());
-  }
-
-  return ATOM_PRODUCT_NAME;
+  return brightray::GetApplicationName();
 }
 
 }  // namespace atom

+ 7 - 1
brightray/browser/win/windows_toast_notification.cc

@@ -11,8 +11,11 @@
 #include <shlobj.h>
 #include <vector>
 
+<<<<<<< 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<ABI::Windows::UI::Notifications::IToastNotificationManagerStatics>
     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(

+ 18 - 0
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

+ 14 - 1
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 <string>
 
 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_

+ 45 - 0
brightray/common/application_info_win.cc

@@ -1,12 +1,27 @@
 #include "brightray/common/application_info.h"
 
+#include <windows.h>  // windows.h must be included first
+
+#include <shlobj.h>
+
 #include <memory>
 
 #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<FileVersionInfo> 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(&current_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

+ 1 - 0
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',