| 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.
|
|
|