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

Unified Diff: content/browser/host_zoom_map_impl.cc

Issue 11866004: Add scheme to HostZoomMap (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Add namespace Created 7 years, 9 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
« no previous file with comments | « content/browser/host_zoom_map_impl.h ('k') | content/browser/host_zoom_map_impl_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/host_zoom_map_impl.cc
diff --git a/content/browser/host_zoom_map_impl.cc b/content/browser/host_zoom_map_impl.cc
index aa5a870434a640a2f9d150c05c320f95b7f690ac..a60a923d6ae0654884d535ae7302b2c528083c04 100644
--- a/content/browser/host_zoom_map_impl.cc
+++ b/content/browser/host_zoom_map_impl.cc
@@ -54,20 +54,42 @@ void HostZoomMapImpl::CopyFrom(HostZoomMap* copy_interface) {
HostZoomMapImpl* copy = static_cast<HostZoomMapImpl*>(copy_interface);
base::AutoLock auto_lock(lock_);
base::AutoLock copy_auto_lock(copy->lock_);
- for (HostZoomLevels::const_iterator i(copy->host_zoom_levels_.begin());
- i != copy->host_zoom_levels_.end(); ++i) {
- host_zoom_levels_[i->first] = i->second;
+ host_zoom_levels_.
+ insert(copy->host_zoom_levels_.begin(), copy->host_zoom_levels_.end());
+ for (SchemeHostZoomLevels::const_iterator i(copy->
+ scheme_host_zoom_levels_.begin());
+ i != copy->scheme_host_zoom_levels_.end(); ++i) {
+ scheme_host_zoom_levels_[i->first] = HostZoomLevels();
+ scheme_host_zoom_levels_[i->first].
+ insert(i->second.begin(), i->second.end());
}
default_zoom_level_ = copy->default_zoom_level_;
}
-double HostZoomMapImpl::GetZoomLevel(const std::string& host) const {
+double HostZoomMapImpl::GetZoomLevelForHost(const std::string& host) const {
base::AutoLock auto_lock(lock_);
HostZoomLevels::const_iterator i(host_zoom_levels_.find(host));
return (i == host_zoom_levels_.end()) ? default_zoom_level_ : i->second;
}
-void HostZoomMapImpl::SetZoomLevel(const std::string& host, double level) {
+double HostZoomMapImpl::GetZoomLevelForHostAndScheme(
+ const std::string& scheme,
+ const std::string& host) const {
+ {
+ base::AutoLock auto_lock(lock_);
+ SchemeHostZoomLevels::const_iterator scheme_iterator(
+ scheme_host_zoom_levels_.find(scheme));
+ if (scheme_iterator != scheme_host_zoom_levels_.end()) {
+ HostZoomLevels::const_iterator i(scheme_iterator->second.find(host));
+ if (i != scheme_iterator->second.end())
+ return i->second;
+ }
+ }
+ return GetZoomLevelForHost(host);
+}
+
+void HostZoomMapImpl::SetZoomLevelForHost(const std::string& host,
+ double level) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
{
@@ -86,12 +108,46 @@ void HostZoomMapImpl::SetZoomLevel(const std::string& host, double level) {
if (HostZoomMap::GetForBrowserContext(
render_process_host->GetBrowserContext()) == this) {
render_process_host->Send(
- new ViewMsg_SetZoomLevelForCurrentURL(host, level));
+ new ViewMsg_SetZoomLevelForCurrentURL(std::string(), host, level));
+ }
+ }
+ HostZoomMap::ZoomLevelChange change;
+ change.mode = HostZoomMap::ZOOM_CHANGED_FOR_HOST;
+ change.host = host;
+ change.zoom_level = level;
+
+ for (size_t i = 0; i < zoom_level_changed_callbacks_.size(); i++)
+ zoom_level_changed_callbacks_[i].Run(change);
+}
+
+void HostZoomMapImpl::SetZoomLevelForHostAndScheme(const std::string& scheme,
+ const std::string& host,
+ double level) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ {
+ base::AutoLock auto_lock(lock_);
+ scheme_host_zoom_levels_[scheme][host] = level;
+ }
+
+ // Notify renderers from this browser context.
+ for (RenderProcessHost::iterator i(RenderProcessHost::AllHostsIterator());
+ !i.IsAtEnd(); i.Advance()) {
+ RenderProcessHost* render_process_host = i.GetCurrentValue();
+ if (HostZoomMap::GetForBrowserContext(
+ render_process_host->GetBrowserContext()) == this) {
+ render_process_host->Send(
+ new ViewMsg_SetZoomLevelForCurrentURL(scheme, host, level));
}
}
+ HostZoomMap::ZoomLevelChange change;
+ change.mode = HostZoomMap::ZOOM_CHANGED_FOR_SCHEME_AND_HOST;
+ change.host = host;
+ change.scheme = scheme;
+ change.zoom_level = level;
+
for (size_t i = 0; i < zoom_level_changed_callbacks_.size(); i++)
- zoom_level_changed_callbacks_[i].Run(host);
+ zoom_level_changed_callbacks_[i].Run(change);
}
double HostZoomMapImpl::GetDefaultZoomLevel() const {
@@ -159,8 +215,12 @@ void HostZoomMapImpl::SetTemporaryZoomLevel(int render_process_id,
}
}
+ HostZoomMap::ZoomLevelChange change;
+ change.mode = HostZoomMap::ZOOM_CHANGED_TEMPORARY_ZOOM;
+ change.zoom_level = level;
+
for (size_t i = 0; i < zoom_level_changed_callbacks_.size(); i++)
- zoom_level_changed_callbacks_[i].Run(std::string());
+ zoom_level_changed_callbacks_[i].Run(change);
}
void HostZoomMapImpl::Observe(int type,
« no previous file with comments | « content/browser/host_zoom_map_impl.h ('k') | content/browser/host_zoom_map_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698