diff options
author | pastarmovj@chromium.org <pastarmovj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-01 12:52:56 +0000 |
---|---|---|
committer | pastarmovj@chromium.org <pastarmovj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-01 12:52:56 +0000 |
commit | e450fa6624812d5d27142daa79f7bbe1f3d2326a (patch) | |
tree | 5ec7c6c96e3c0c74da4b20fd9dba9f958c88068c /chrome/browser/ui/cocoa/options | |
parent | bbdd9ddbd76d7579f66ec07f5f847cf874b6d35a (diff) | |
download | chromium_src-e450fa6624812d5d27142daa79f7bbe1f3d2326a.zip chromium_src-e450fa6624812d5d27142daa79f7bbe1f3d2326a.tar.gz chromium_src-e450fa6624812d5d27142daa79f7bbe1f3d2326a.tar.bz2 |
Introduced a new policy DefaultBrowserSettingEnabled.
When set it either enforces Chrome's registration as default browser,
or prevents the user from seeing the reminder about Chrome not being default
as well as disabled the UI for setting it as default browser. When not set
the old behavior is observed.
BUG=65290
TEST=Manual. Set the policy and the UI should be disabled. If set to true the browser should become default browser immediately.
Review URL: http://codereview.chromium.org/6348021
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73280 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui/cocoa/options')
-rw-r--r-- | chrome/browser/ui/cocoa/options/preferences_window_controller.h | 1 | ||||
-rw-r--r-- | chrome/browser/ui/cocoa/options/preferences_window_controller.mm | 36 |
2 files changed, 25 insertions, 12 deletions
diff --git a/chrome/browser/ui/cocoa/options/preferences_window_controller.h b/chrome/browser/ui/cocoa/options/preferences_window_controller.h index 494ac79..3815beb 100644 --- a/chrome/browser/ui/cocoa/options/preferences_window_controller.h +++ b/chrome/browser/ui/cocoa/options/preferences_window_controller.h @@ -92,6 +92,7 @@ class ProfileSyncService; BooleanPrefMember instantEnabled_; IBOutlet NSButton* instantCheckbox_; scoped_nsobject<SearchEngineListModel> searchEngineModel_; + BooleanPrefMember default_browser_policy_; // Used when creating a new home page url to make the new cell editable. BOOL pendingSelectForEdit_; BOOL restoreButtonsEnabled_; diff --git a/chrome/browser/ui/cocoa/options/preferences_window_controller.mm b/chrome/browser/ui/cocoa/options/preferences_window_controller.mm index d106d4b..e5332b6 100644 --- a/chrome/browser/ui/cocoa/options/preferences_window_controller.mm +++ b/chrome/browser/ui/cocoa/options/preferences_window_controller.mm @@ -406,6 +406,7 @@ CGFloat AutoSizeUnderTheHoodContent(NSView* view, // KVC getter methods. - (BOOL)fileHandlerUIEnabled; +- (BOOL)canChangeDefaultBrowser; @end namespace PreferencesWindowControllerInternal { @@ -831,6 +832,13 @@ class ManagedPrefsBannerState : public policy::ManagedPrefsBannerBase { - (void)registerPrefObservers { if (!prefs_) return; + // During unit tests, there is no local state object, so we fall back to + // the prefs object (where we've explicitly registered this pref so we + // know it's there). + PrefService* local = g_browser_process->local_state(); + if (!local) + local = prefs_; + // Basics panel registrar_.Init(prefs_); registrar_.Add(prefs::kURLsToRestoreOnStartup, observer_.get()); @@ -840,6 +848,8 @@ class ManagedPrefsBannerState : public policy::ManagedPrefsBannerBase { homepage_.Init(prefs::kHomePage, prefs_, observer_.get()); showHomeButton_.Init(prefs::kShowHomeButton, prefs_, observer_.get()); instantEnabled_.Init(prefs::kInstantEnabled, prefs_, observer_.get()); + default_browser_policy_.Init(prefs::kDefaultBrowserSettingEnabled, + local, observer_.get()); // Personal Stuff panel askSavePasswords_.Init(prefs::kPasswordManagerEnabled, @@ -858,12 +868,6 @@ class ManagedPrefsBannerState : public policy::ManagedPrefsBannerBase { translateEnabled_.Init(prefs::kEnableTranslate, prefs_, observer_.get()); tabsToLinks_.Init(prefs::kWebkitTabsToLinks, prefs_, observer_.get()); - // During unit tests, there is no local state object, so we fall back to - // the prefs object (where we've explicitly registered this pref so we - // know it's there). - PrefService* local = g_browser_process->local_state(); - if (!local) - local = prefs_; metricsReporting_.Init(prefs::kMetricsReportingEnabled, local, observer_.get()); defaultDownloadLocation_.Init(prefs::kDownloadDefaultDirectory, prefs_, @@ -911,7 +915,7 @@ class ManagedPrefsBannerState : public policy::ManagedPrefsBannerBase { paths = [paths setByAddingObject:@"homepageURL"]; } else if ([key isEqualToString:@"hompageURL"]) { paths = [paths setByAddingObject:@"newTabPageIsHomePageIndex"]; - } else if ([key isEqualToString:@"isDefaultBrowser"]) { + } else if ([key isEqualToString:@"canChangeDefaultBrowser"]) { paths = [paths setByAddingObject:@"defaultBrowser"]; } else if ([key isEqualToString:@"defaultBrowserTextColor"]) { paths = [paths setByAddingObject:@"defaultBrowser"]; @@ -978,6 +982,9 @@ class ManagedPrefsBannerState : public policy::ManagedPrefsBannerBase { [self setShowHomeButtonEnabled:!showHomeButton_.IsManaged()]; } else if (*prefName == prefs::kInstantEnabled) { [self configureInstant]; + } else if (*prefName == prefs::kDefaultBrowserSettingEnabled) { + [self willChangeValueForKey:@"defaultBrowser"]; + [self didChangeValueForKey:@"defaultBrowser"]; } } @@ -1264,15 +1271,19 @@ enum { kHomepageNewTabPage, kHomepageURL }; [self didChangeValueForKey:@"defaultBrowser"]; } -// Returns the Chromium default browser state. -- (ShellIntegration::DefaultBrowserState)isDefaultBrowser { - return ShellIntegration::IsDefaultBrowser(); +// Returns the Chromium default browser state and whether this is user +// controlled or locked by a policy. +- (BOOL)canChangeDefaultBrowser { + return !default_browser_policy_.IsManaged() && + ShellIntegration::IsDefaultBrowser() != + ShellIntegration::IS_DEFAULT_BROWSER; } // Returns the text color of the "chromium is your default browser" text (green // for yes, red for no). - (NSColor*)defaultBrowserTextColor { - ShellIntegration::DefaultBrowserState state = [self isDefaultBrowser]; + ShellIntegration::DefaultBrowserState state = + ShellIntegration::IsDefaultBrowser(); return (state == ShellIntegration::IS_DEFAULT_BROWSER) ? [NSColor colorWithCalibratedRed:0.0 green:135.0/255.0 blue:0 alpha:1.0] : [NSColor colorWithCalibratedRed:135.0/255.0 green:0 blue:0 alpha:1.0]; @@ -1281,7 +1292,8 @@ enum { kHomepageNewTabPage, kHomepageURL }; // Returns the text for the "chromium is your default browser" string dependent // on if Chromium actually is or not. - (NSString*)defaultBrowserText { - ShellIntegration::DefaultBrowserState state = [self isDefaultBrowser]; + ShellIntegration::DefaultBrowserState state = + ShellIntegration::IsDefaultBrowser(); int stringId; if (state == ShellIntegration::IS_DEFAULT_BROWSER) stringId = IDS_OPTIONS_DEFAULTBROWSER_DEFAULT; |