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 3490fe533c87e63d932622dfeca69f3d4ffcb867..c6250c95edb2b741260588133355b98144eab440 100644 |
--- a/chrome/browser/ui/webui/options/browser_options_handler.cc |
+++ b/chrome/browser/ui/webui/options/browser_options_handler.cc |
@@ -284,6 +284,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", |
@@ -836,6 +838,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", |
@@ -970,9 +976,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) { |
@@ -980,6 +987,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( |
@@ -1132,6 +1143,7 @@ void BrowserOptionsHandler::InitializePage() { |
SetupNetworkPredictionControl(); |
SetupFontSizeSelector(); |
SetupPageZoomSelector(); |
+ SetupZoomScopeCheckbox(); |
SetupAutoOpenFileTypes(); |
SetupProxySettingsSection(); |
SetupManagingSupervisedUsers(); |
@@ -1727,6 +1739,18 @@ void BrowserOptionsHandler::HandleDefaultZoomFactor( |
} |
} |
+void BrowserOptionsHandler::HandleDefaultZoomScope( |
+ const base::ListValue* args) { |
+ // TODO Shall we get UMA data about the usage of this option? |
+ bool checked; |
+ if (args->GetBoolean(0, &checked)) { |
+ ChromeZoomLevelPrefs* zoom_level_prefs = |
+ Profile::FromWebUI(web_ui())->GetZoomLevelPrefs(); |
+ DCHECK(zoom_level_prefs); |
+ zoom_level_prefs->SetIsOriginScopePref(checked); |
+ } |
+} |
+ |
void BrowserOptionsHandler::HandleRestartBrowser(const base::ListValue* args) { |
chrome::AttemptRestart(); |
} |
@@ -2134,6 +2158,16 @@ void BrowserOptionsHandler::SetupPageZoomSelector() { |
zoom_factors_value); |
} |
+void BrowserOptionsHandler::SetupZoomScopeCheckbox() { |
+ ChromeZoomLevelPrefs* zoom_level_prefs = |
+ Profile::FromWebUI(web_ui())->GetZoomLevelPrefs(); |
+ |
+ base::FundamentalValue default_per_origin( |
+ zoom_level_prefs ? zoom_level_prefs->GetIsOriginScopePref() : true); |
+ web_ui()->CallJavascriptFunctionUnsafe( |
+ "BrowserOptions.setupZoomScopeCheckbox", default_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. |