summaryrefslogtreecommitdiffstats
path: root/chrome/browser/shell_integration_mac.mm
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/shell_integration_mac.mm')
-rw-r--r--chrome/browser/shell_integration_mac.mm49
1 files changed, 49 insertions, 0 deletions
diff --git a/chrome/browser/shell_integration_mac.mm b/chrome/browser/shell_integration_mac.mm
new file mode 100644
index 0000000..28fdd8c
--- /dev/null
+++ b/chrome/browser/shell_integration_mac.mm
@@ -0,0 +1,49 @@
+// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/shell_integration.h"
+
+#include "base/mac_util.h"
+#import "third_party/mozilla/include/NSWorkspace+Utils.h"
+
+// Sets Chromium as default browser (only for current user). Returns false if
+// this operation fails (which we can't check for).
+bool ShellIntegration::SetAsDefaultBrowser() {
+ NSBundle* mainBundle = mac_util::MainAppBundle();
+ NSString* identifier = [mainBundle bundleIdentifier];
+ [[NSWorkspace sharedWorkspace] setDefaultBrowserWithIdentifier:identifier];
+ return true;
+}
+
+namespace {
+
+// Returns true if |identifier| is the bundle id of the default browser.
+bool IsIdentifierDefaultBrowser(NSString* identifier) {
+ NSString* defaultBrowser =
+ [[NSWorkspace sharedWorkspace] defaultBrowserIdentifier];
+ if (!identifier || !defaultBrowser)
+ return false;
+ // We need to ensure we do the comparison case-insensitive as LS doesn't
+ // persist the case of our bundle id.
+ NSComparisonResult result =
+ [defaultBrowser caseInsensitiveCompare:identifier];
+ return result == NSOrderedSame;
+}
+
+} // 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() {
+ NSBundle* mainBundle = mac_util::MainAppBundle();
+ NSString* myIdentifier = [mainBundle bundleIdentifier];
+ return IsIdentifierDefaultBrowser(myIdentifier);
+}
+
+// Returns true if Firefox is the default browser for the current user.
+bool ShellIntegration::IsFirefoxDefaultBrowser() {
+ return IsIdentifierDefaultBrowser(@"org.mozilla.firefox");
+}