Use bundle's name as application name when we have one.
authorCheng Zhao <zcbenz@gmail.com>
Thu, 5 Dec 2013 02:42:04 +0000 (10:42 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Thu, 5 Dec 2013 02:42:04 +0000 (10:42 +0800)
browser/browser.cc
browser/browser.h
browser/browser_mac.mm
browser/browser_win.cc

index bb4b27f..49f2cef 100644 (file)
@@ -48,7 +48,13 @@ void Browser::SetVersion(const std::string& version) {
 }
 
 std::string Browser::GetName() const {
-  return name_override_.empty() ? "Atom-Shell" : name_override_;
+  if (name_override_.empty()) {
+    std::string name = GetExecutableFileProductName();
+    if (!name.empty())
+      return name;
+  }
+
+  return name_override_;
 }
 
 void Browser::SetName(const std::string& name) {
index 0139ee0..d20fc97 100644 (file)
@@ -80,6 +80,9 @@ class Browser : public WindowListObserver {
   // Returns the version of application bundle or executable file.
   std::string GetExecutableFileVersion() const;
 
+  // Returns the name of application bundle or executable file.
+  std::string GetExecutableFileProductName() const;
+
   // Send the will-quit message and then terminate the application.
   void NotifyAndTerminate();
 
index 3d01c94..63312f4 100644 (file)
@@ -25,6 +25,12 @@ std::string Browser::GetExecutableFileVersion() const {
   return base::SysNSStringToUTF8(version);
 }
 
+std::string Browser::GetExecutableFileProductName() const {
+  NSDictionary* infoDictionary = base::mac::OuterBundle().infoDictionary;
+  NSString *version = [infoDictionary objectForKey:@"CFBundleName"];
+  return base::SysNSStringToUTF8(version);
+}
+
 void Browser::CancelQuit() {
   [[AtomApplication sharedApplication] replyToApplicationShouldTerminate:NO];
 }
index 7256f7e..b065f70 100644 (file)
@@ -12,6 +12,7 @@
 #include "base/memory/scoped_ptr.h"
 #include "base/path_service.h"
 #include "base/strings/utf_string_conversions.h"
+#include "common/atom_version.h"
 
 namespace atom {
 
@@ -51,7 +52,18 @@ std::string Browser::GetExecutableFileVersion() const {
     return UTF16ToUTF8(version_info->product_version());
   }
 
-  return "";
+  return ATOM_VERSION_STRING;
+}
+
+std::string Browser::GetExecutableFileProductName() const {
+  base::FilePath path;
+  if (PathService::Get(base::FILE_EXE, &path)) {
+    scoped_ptr<FileVersionInfo> version_info(
+        FileVersionInfo::CreateFileVersionInfo(path));
+    return UTF16ToUTF8(version_info->product_name());
+  }
+
+  return "Atom-Shell";
 }
 
 void Browser::CancelQuit() {