Index: chrome/browser/ui/webui/options/browser_options_handler.cc |
diff --git a/chrome/browser/ui/webui/options/browser_options_handler.cc b/chrome/browser/ui/webui/options/browser_options_handler.cc |
index 4a637736893126e8d2f75c44bd8777d629682df5..dc84154783e4b9e60d21eadbba159e0ae66d7f92 100644 |
--- a/chrome/browser/ui/webui/options/browser_options_handler.cc |
+++ b/chrome/browser/ui/webui/options/browser_options_handler.cc |
@@ -285,6 +285,8 @@ void BrowserOptionsHandler::GetLocalizedValues(base::DictionaryValue* values) { |
{ "defaultFontSizeLabel", IDS_OPTIONS_DEFAULT_FONT_SIZE_LABEL }, |
{ "defaultSearchManageEngines", IDS_OPTIONS_DEFAULTSEARCH_MANAGE_ENGINES }, |
{ "defaultZoomFactorLabel", IDS_OPTIONS_DEFAULT_ZOOM_LEVEL_LABEL }, |
+ { "defaultZoomScopeLabel", |
+ IDS_OPTIONS_DEFAULT_ZOOM_SCOPE_LABEL }, |
{ "disableWebServices", IDS_OPTIONS_DISABLE_WEB_SERVICES }, |
{ "doNotTrack", IDS_OPTIONS_ENABLE_DO_NOT_TRACK }, |
{ "doNotTrackConfirmDisable", |
@@ -851,6 +853,10 @@ void BrowserOptionsHandler::RegisterMessages() { |
"defaultZoomFactorAction", |
base::Bind(&BrowserOptionsHandler::HandleDefaultZoomFactor, |
base::Unretained(this))); |
+ web_ui()->RegisterMessageCallback( |
+ "defaultZoomScopeAction", |
+ base::Bind(&BrowserOptionsHandler::HandleDefaultZoomScope, |
+ base::Unretained(this))); |
#if defined(OS_WIN) || defined(OS_MACOSX) |
web_ui()->RegisterMessageCallback( |
"showManageSSLCertificates", |
@@ -985,9 +991,10 @@ void BrowserOptionsHandler::InitializeHandler() { |
Profile* profile = Profile::FromWebUI(web_ui()); |
PrefService* prefs = profile->GetPrefs(); |
ChromeZoomLevelPrefs* zoom_level_prefs = profile->GetZoomLevelPrefs(); |
- // Only regular profiles are able to edit default zoom level, or delete per- |
- // host zoom levels, via the settings menu. We only require a zoom_level_prefs |
- // if the profile is able to change these preference types. |
+ // Only regular profiles are able to edit default zoom level, default zoom |
+ // scope, or delete per-host zoom levels, via the settings menu. We only |
+ // require a zoom_level_prefs if the profile is able to change these |
+ // preference types. |
DCHECK(zoom_level_prefs || |
profile->GetProfileType() != Profile::REGULAR_PROFILE); |
if (zoom_level_prefs) { |
@@ -995,6 +1002,10 @@ void BrowserOptionsHandler::InitializeHandler() { |
zoom_level_prefs->RegisterDefaultZoomLevelCallback( |
base::Bind(&BrowserOptionsHandler::SetupPageZoomSelector, |
base::Unretained(this))); |
+ default_zoom_scope_subscription_ = |
+ zoom_level_prefs->RegisterDefaultZoomScopeCallback( |
+ base::Bind(&BrowserOptionsHandler::SetupZoomScopeCheckbox, |
+ base::Unretained(this))); |
} |
g_browser_process->policy_service()->AddObserver( |
@@ -1147,6 +1158,7 @@ void BrowserOptionsHandler::InitializePage() { |
SetupNetworkPredictionControl(); |
SetupFontSizeSelector(); |
SetupPageZoomSelector(); |
+ SetupZoomScopeCheckbox(); |
SetupAutoOpenFileTypes(); |
SetupProxySettingsSection(); |
SetupManagingSupervisedUsers(); |
@@ -1742,6 +1754,17 @@ void BrowserOptionsHandler::HandleDefaultZoomFactor( |
} |
} |
+void BrowserOptionsHandler::HandleDefaultZoomScope( |
+ const base::ListValue* args) { |
+ bool checked; |
+ if (args->GetBoolean(0, &checked)) { |
+ ChromeZoomLevelPrefs* zoom_level_prefs = |
+ Profile::FromWebUI(web_ui())->GetZoomLevelPrefs(); |
+ DCHECK(zoom_level_prefs); |
+ zoom_level_prefs->SetZoomScopeIsPerOriginPref(checked); |
+ } |
+} |
+ |
void BrowserOptionsHandler::HandleRestartBrowser(const base::ListValue* args) { |
chrome::AttemptRestart(); |
} |
@@ -2149,6 +2172,18 @@ void BrowserOptionsHandler::SetupPageZoomSelector() { |
zoom_factors_value); |
} |
+void BrowserOptionsHandler::SetupZoomScopeCheckbox() { |
+ ChromeZoomLevelPrefs* zoom_level_prefs = |
+ Profile::FromWebUI(web_ui())->GetZoomLevelPrefs(); |
+ base::FundamentalValue is_per_origin( |
+ zoom_level_prefs |
+ ? zoom_level_prefs->GetZoomScopeIsPerOriginPref() |
+ : ChromeZoomLevelPrefs::kZoomScopeSettingDefault); |
+ |
+ web_ui()->CallJavascriptFunctionUnsafe( |
+ "BrowserOptions.setupZoomScopeCheckbox", is_per_origin); |
+} |
+ |
void BrowserOptionsHandler::SetupAutoOpenFileTypes() { |
// Set the hidden state for the AutoOpenFileTypesResetToDefault button. |
// We show the button if the user has any auto-open file types registered. |