summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/cocoa/options
diff options
context:
space:
mode:
authorpastarmovj@chromium.org <pastarmovj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-01 12:52:56 +0000
committerpastarmovj@chromium.org <pastarmovj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-01 12:52:56 +0000
commite450fa6624812d5d27142daa79f7bbe1f3d2326a (patch)
tree5ec7c6c96e3c0c74da4b20fd9dba9f958c88068c /chrome/browser/ui/cocoa/options
parentbbdd9ddbd76d7579f66ec07f5f847cf874b6d35a (diff)
downloadchromium_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.h1
-rw-r--r--chrome/browser/ui/cocoa/options/preferences_window_controller.mm36
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;