// 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"); }