Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4160)

Unified Diff: chrome/browser/ui/webui/settings/site_settings_handler.cc

Issue 2630583002: Add setting to isolate zoom changes by default. (Closed)
Patch Set: ... and tell closure_compiler. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/settings/site_settings_handler.cc
diff --git a/chrome/browser/ui/webui/settings/site_settings_handler.cc b/chrome/browser/ui/webui/settings/site_settings_handler.cc
index 9c17f2e19ba33fdf14ef09a3a2c1e1b1592c686f..504d2b4533169d3f67da74dece43b40fe6bf9a21 100644
--- a/chrome/browser/ui/webui/settings/site_settings_handler.cc
+++ b/chrome/browser/ui/webui/settings/site_settings_handler.cc
@@ -19,6 +19,7 @@
#include "chrome/browser/permissions/chooser_context_base.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/webui/site_settings_helper.h"
+#include "chrome/browser/ui/zoom/chrome_zoom_level_prefs.h"
#include "chrome/common/extensions/manifest_handlers/app_launch_info.h"
#include "chrome/grit/generated_resources.h"
#include "components/content_settings/core/browser/host_content_settings_map.h"
@@ -156,10 +157,17 @@ void SiteSettingsHandler::RegisterMessages() {
base::Bind(&SiteSettingsHandler::HandleUpdateIncognitoStatus,
base::Unretained(this)));
web_ui()->RegisterMessageCallback(
+ "fetchZoomScope", base::Bind(&SiteSettingsHandler::HandleFetchZoomScope,
+ base::Unretained(this)));
+ web_ui()->RegisterMessageCallback(
"fetchZoomLevels",
base::Bind(&SiteSettingsHandler::HandleFetchZoomLevels,
base::Unretained(this)));
web_ui()->RegisterMessageCallback(
+ "setZoomScopeIsPerOrigin",
+ base::Bind(&SiteSettingsHandler::HandleSetZoomScopeIsPerOrigin,
+ base::Unretained(this)));
+ web_ui()->RegisterMessageCallback(
"removeZoomLevel",
base::Bind(&SiteSettingsHandler::HandleRemoveZoomLevel,
base::Unretained(this)));
@@ -190,12 +198,25 @@ void SiteSettingsHandler::OnJavascriptAllowed() {
->AddZoomLevelChangedCallback(
base::Bind(&SiteSettingsHandler::OnZoomLevelChanged,
base::Unretained(this)));
+ // We subscribe to the ChromeZoomLevelPrefs to get updates to the default
+ // zoom scope. As with the HostZoomMap, we only allow the user to modify
+ // the default zoom scope for the default storage partition.
+ ChromeZoomLevelPrefs* zoom_level_prefs = profile_->GetZoomLevelPrefs();
+ // Only regular profiles can change the default zoom scope, so only require
+ // a |zoom_level_prefs| in this case.
+ DCHECK(zoom_level_prefs ||
+ profile_->GetProfileType() != Profile::REGULAR_PROFILE);
+ if (zoom_level_prefs)
+ default_zoom_scope_subscription_ =
+ zoom_level_prefs->RegisterDefaultZoomScopeCallback(base::Bind(
+ &SiteSettingsHandler::OnZoomScopeChanged, base::Unretained(this)));
}
void SiteSettingsHandler::OnJavascriptDisallowed() {
observer_.RemoveAll();
notification_registrar_.RemoveAll();
host_zoom_map_subscription_.reset();
+ default_zoom_scope_subscription_.reset();
}
void SiteSettingsHandler::OnGetUsageInfo(
@@ -281,6 +302,10 @@ void SiteSettingsHandler::Observe(
}
}
+void SiteSettingsHandler::OnZoomScopeChanged() {
+ SendZoomScope();
+}
+
void SiteSettingsHandler::OnZoomLevelChanged(
const content::HostZoomMap::ZoomLevelChange& change) {
SendZoomLevels();
@@ -622,11 +647,29 @@ void SiteSettingsHandler::SendIncognitoStatus(
base::FundamentalValue(incognito_enabled));
}
+void SiteSettingsHandler::HandleFetchZoomScope(const base::ListValue* args) {
+ AllowJavascript();
+ SendZoomScope();
+}
+
void SiteSettingsHandler::HandleFetchZoomLevels(const base::ListValue* args) {
AllowJavascript();
SendZoomLevels();
}
+void SiteSettingsHandler::SendZoomScope() {
+ if (!IsJavascriptAllowed())
+ return;
+
+ ChromeZoomLevelPrefs* zoom_level_prefs = profile_->GetZoomLevelPrefs();
+ bool is_per_origin = zoom_level_prefs
+ ? zoom_level_prefs->GetZoomScopeIsPerOriginPref()
+ : ChromeZoomLevelPrefs::kZoomScopeSettingDefault;
+ CallJavascriptFunction("cr.webUIListenerCallback",
+ base::StringValue("onZoomScopeChanged"),
+ base::FundamentalValue(is_per_origin));
+}
+
void SiteSettingsHandler::SendZoomLevels() {
if (!IsJavascriptAllowed())
return;
@@ -708,6 +751,18 @@ void SiteSettingsHandler::SendZoomLevels() {
zoom_levels_exceptions);
}
+void SiteSettingsHandler::HandleSetZoomScopeIsPerOrigin(
+ const base::ListValue* args) {
+ CHECK_EQ(1U, args->GetSize());
+
+ bool is_per_origin;
+ CHECK(args->GetBoolean(0, &is_per_origin));
+
+ ChromeZoomLevelPrefs* zoom_level_prefs = profile_->GetZoomLevelPrefs();
+ DCHECK(zoom_level_prefs);
+ zoom_level_prefs->SetZoomScopeIsPerOriginPref(is_per_origin);
+}
+
void SiteSettingsHandler::HandleRemoveZoomLevel(const base::ListValue* args) {
CHECK_EQ(1U, args->GetSize());

Powered by Google App Engine
This is Rietveld 408576698