diff options
author | mdm@chromium.org <mdm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-04 23:39:58 +0000 |
---|---|---|
committer | mdm@chromium.org <mdm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-04 23:39:58 +0000 |
commit | 264f74d108c0ebe22e633735606a4b8515a34400 (patch) | |
tree | 7bbe511e816955a1bac5cac1cf043d521b69ba4b /chrome/browser/shell_integration_mac.mm | |
parent | 8ecce8712d3f7ff8051340dfbebf20872b86e372 (diff) | |
download | chromium_src-264f74d108c0ebe22e633735606a4b8515a34400.zip chromium_src-264f74d108c0ebe22e633735606a4b8515a34400.tar.gz chromium_src-264f74d108c0ebe22e633735606a4b8515a34400.tar.bz2 |
Allow the default browser check to return "unknown" and reflect that in the UI.
On Linux this can happen for unsupported desktop environments. On Windows and Mac OS X this probably should not occur and likely indicates some sort of serious configuration error. This change avoids repeatedly bothering the user to set the default browser in cases where we're likely to fail at that, without incorrectly displaying that we are the default browser.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/200025
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25553 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/shell_integration_mac.mm')
-rw-r--r-- | chrome/browser/shell_integration_mac.mm | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/chrome/browser/shell_integration_mac.mm b/chrome/browser/shell_integration_mac.mm index 28fdd8c..fbf88bb 100644 --- a/chrome/browser/shell_integration_mac.mm +++ b/chrome/browser/shell_integration_mac.mm @@ -22,7 +22,7 @@ namespace { bool IsIdentifierDefaultBrowser(NSString* identifier) { NSString* defaultBrowser = [[NSWorkspace sharedWorkspace] defaultBrowserIdentifier]; - if (!identifier || !defaultBrowser) + if (!defaultBrowser) return false; // We need to ensure we do the comparison case-insensitive as LS doesn't // persist the case of our bundle id. @@ -33,14 +33,17 @@ bool IsIdentifierDefaultBrowser(NSString* identifier) { } // namespace -// Returns true if this instance of Chromium is the default browser. (Defined -// as being the handler for the http/https protocols... we don't want to -// report false here if the user has simply chosen to open HTML files in a -// text editor and ftp links with a FTP client). -bool ShellIntegration::IsDefaultBrowser() { +// Attempt to determine if this instance of Chrome is the default browser and +// return the appropriate state. (Defined as being the handler for HTTP/HTTPS +// protocols; we don't want to report "no" here if the user has simply chosen +// to open HTML files in a text editor and FTP links with an FTP client.) +ShellIntegration::DefaultBrowserState ShellIntegration::IsDefaultBrowser() { NSBundle* mainBundle = mac_util::MainAppBundle(); NSString* myIdentifier = [mainBundle bundleIdentifier]; - return IsIdentifierDefaultBrowser(myIdentifier); + if (!myIdentifier) + return UNKNOWN_DEFAULT_BROWSER; + return IsIdentifierDefaultBrowser(myIdentifier) ? IS_DEFAULT_BROWSER + : NOT_DEFAULT_BROWSER; } // Returns true if Firefox is the default browser for the current user. |