diff --git a/browser/browser.cc b/browser/browser.cc index bb4b27f8f9c..49f2cef4ef6 100644 --- a/browser/browser.cc +++ b/browser/browser.cc @@ -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) { diff --git a/browser/browser.h b/browser/browser.h index 0139ee0c64c..d20fc973ff2 100644 --- a/browser/browser.h +++ b/browser/browser.h @@ -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(); diff --git a/browser/browser_mac.mm b/browser/browser_mac.mm index 3d01c94d5db..63312f4e6ec 100644 --- a/browser/browser_mac.mm +++ b/browser/browser_mac.mm @@ -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]; } diff --git a/browser/browser_win.cc b/browser/browser_win.cc index 7256f7e4666..b065f70782f 100644 --- a/browser/browser_win.cc +++ b/browser/browser_win.cc @@ -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 version_info( + FileVersionInfo::CreateFileVersionInfo(path)); + return UTF16ToUTF8(version_info->product_name()); + } + + return "Atom-Shell"; } void Browser::CancelQuit() {