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

Side by Side Diff: content/browser/host_zoom_map_impl.cc

Issue 809223006: Check temporary zoom status when sending zoom level in navigation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix indents, add test comments. Created 5 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 unified diff | Download patch
« no previous file with comments | « content/browser/host_zoom_map_impl.h ('k') | content/browser/host_zoom_map_impl_browsertest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/host_zoom_map_impl.h" 5 #include "content/browser/host_zoom_map_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "base/strings/string_piece.h" 10 #include "base/strings/string_piece.h"
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 i != copy->scheme_host_zoom_levels_.end(); ++i) { 129 i != copy->scheme_host_zoom_levels_.end(); ++i) {
130 scheme_host_zoom_levels_[i->first] = HostZoomLevels(); 130 scheme_host_zoom_levels_[i->first] = HostZoomLevels();
131 scheme_host_zoom_levels_[i->first]. 131 scheme_host_zoom_levels_[i->first].
132 insert(i->second.begin(), i->second.end()); 132 insert(i->second.begin(), i->second.end());
133 } 133 }
134 default_zoom_level_ = copy->default_zoom_level_; 134 default_zoom_level_ = copy->default_zoom_level_;
135 } 135 }
136 136
137 double HostZoomMapImpl::GetZoomLevelForHost(const std::string& host) const { 137 double HostZoomMapImpl::GetZoomLevelForHost(const std::string& host) const {
138 base::AutoLock auto_lock(lock_); 138 base::AutoLock auto_lock(lock_);
139 return GetZoomLevelForHostInternal(host);
140 }
141
142 double HostZoomMapImpl::GetZoomLevelForHostInternal(
143 const std::string& host) const {
139 HostZoomLevels::const_iterator i(host_zoom_levels_.find(host)); 144 HostZoomLevels::const_iterator i(host_zoom_levels_.find(host));
140 return (i == host_zoom_levels_.end()) ? default_zoom_level_ : i->second; 145 return (i == host_zoom_levels_.end()) ? default_zoom_level_ : i->second;
141 } 146 }
142 147
143 bool HostZoomMapImpl::HasZoomLevel(const std::string& scheme, 148 bool HostZoomMapImpl::HasZoomLevel(const std::string& scheme,
144 const std::string& host) const { 149 const std::string& host) const {
145 base::AutoLock auto_lock(lock_); 150 base::AutoLock auto_lock(lock_);
146 151
147 SchemeHostZoomLevels::const_iterator scheme_iterator( 152 SchemeHostZoomLevels::const_iterator scheme_iterator(
148 scheme_host_zoom_levels_.find(scheme)); 153 scheme_host_zoom_levels_.find(scheme));
149 154
150 const HostZoomLevels& zoom_levels = 155 const HostZoomLevels& zoom_levels =
151 (scheme_iterator != scheme_host_zoom_levels_.end()) 156 (scheme_iterator != scheme_host_zoom_levels_.end())
152 ? scheme_iterator->second 157 ? scheme_iterator->second
153 : host_zoom_levels_; 158 : host_zoom_levels_;
154 159
155 HostZoomLevels::const_iterator i(zoom_levels.find(host)); 160 HostZoomLevels::const_iterator i(zoom_levels.find(host));
156 return i != zoom_levels.end(); 161 return i != zoom_levels.end();
157 } 162 }
158 163
164 double HostZoomMapImpl::GetZoomLevelForHostAndSchemeInternal(
165 const std::string& scheme,
166 const std::string& host) const {
167 SchemeHostZoomLevels::const_iterator scheme_iterator(
168 scheme_host_zoom_levels_.find(scheme));
169 if (scheme_iterator != scheme_host_zoom_levels_.end()) {
170 HostZoomLevels::const_iterator i(scheme_iterator->second.find(host));
171 if (i != scheme_iterator->second.end())
172 return i->second;
173 }
174
175 return GetZoomLevelForHostInternal(host);
176 }
177
159 double HostZoomMapImpl::GetZoomLevelForHostAndScheme( 178 double HostZoomMapImpl::GetZoomLevelForHostAndScheme(
160 const std::string& scheme, 179 const std::string& scheme,
161 const std::string& host) const { 180 const std::string& host) const {
162 { 181 base::AutoLock auto_lock(lock_);
163 base::AutoLock auto_lock(lock_); 182 return GetZoomLevelForHostAndSchemeInternal(scheme, host);
164 SchemeHostZoomLevels::const_iterator scheme_iterator(
165 scheme_host_zoom_levels_.find(scheme));
166 if (scheme_iterator != scheme_host_zoom_levels_.end()) {
167 HostZoomLevels::const_iterator i(scheme_iterator->second.find(host));
168 if (i != scheme_iterator->second.end())
169 return i->second;
170 }
171 }
172 return GetZoomLevelForHost(host);
173 } 183 }
174 184
175 HostZoomMap::ZoomLevelVector HostZoomMapImpl::GetAllZoomLevels() const { 185 HostZoomMap::ZoomLevelVector HostZoomMapImpl::GetAllZoomLevels() const {
176 HostZoomMap::ZoomLevelVector result; 186 HostZoomMap::ZoomLevelVector result;
177 { 187 {
178 base::AutoLock auto_lock(lock_); 188 base::AutoLock auto_lock(lock_);
179 result.reserve(host_zoom_levels_.size() + scheme_host_zoom_levels_.size()); 189 result.reserve(host_zoom_levels_.size() + scheme_host_zoom_levels_.size());
180 for (HostZoomLevels::const_iterator i = host_zoom_levels_.begin(); 190 for (HostZoomLevels::const_iterator i = host_zoom_levels_.begin();
181 i != host_zoom_levels_.end(); 191 i != host_zoom_levels_.end();
182 ++i) { 192 ++i) {
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 host->Send(new ViewMsg_SetZoomLevelForView(render_view_id, true, level)); 368 host->Send(new ViewMsg_SetZoomLevelForView(render_view_id, true, level));
359 369
360 HostZoomMap::ZoomLevelChange change; 370 HostZoomMap::ZoomLevelChange change;
361 change.mode = HostZoomMap::ZOOM_CHANGED_TEMPORARY_ZOOM; 371 change.mode = HostZoomMap::ZOOM_CHANGED_TEMPORARY_ZOOM;
362 change.host = GetHostFromProcessView(render_process_id, render_view_id); 372 change.host = GetHostFromProcessView(render_process_id, render_view_id);
363 change.zoom_level = level; 373 change.zoom_level = level;
364 374
365 zoom_level_changed_callbacks_.Notify(change); 375 zoom_level_changed_callbacks_.Notify(change);
366 } 376 }
367 377
378 double HostZoomMapImpl::GetZoomLevelForView(const GURL& url,
379 int render_process_id,
380 int render_view_id) const {
381 RenderViewKey key(render_process_id, render_view_id);
382 base::AutoLock auto_lock(lock_);
383
384 if (ContainsKey(temporary_zoom_levels_, key))
385 return temporary_zoom_levels_.find(key)->second;
386
387 return GetZoomLevelForHostAndSchemeInternal(url.scheme(),
388 net::GetHostOrSpecFromURL(url));
389 }
390
368 void HostZoomMapImpl::Observe(int type, 391 void HostZoomMapImpl::Observe(int type,
369 const NotificationSource& source, 392 const NotificationSource& source,
370 const NotificationDetails& details) { 393 const NotificationDetails& details) {
371 switch (type) { 394 switch (type) {
372 case NOTIFICATION_RENDER_VIEW_HOST_WILL_CLOSE_RENDER_VIEW: { 395 case NOTIFICATION_RENDER_VIEW_HOST_WILL_CLOSE_RENDER_VIEW: {
373 int render_view_id = Source<RenderViewHost>(source)->GetRoutingID(); 396 int render_view_id = Source<RenderViewHost>(source)->GetRoutingID();
374 int render_process_id = 397 int render_process_id =
375 Source<RenderViewHost>(source)->GetProcess()->GetID(); 398 Source<RenderViewHost>(source)->GetProcess()->GetID();
376 ClearTemporaryZoomLevel(render_process_id, render_view_id); 399 ClearTemporaryZoomLevel(render_process_id, render_view_id);
377 break; 400 break;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
424 double error_page_zoom_level = GetZoomLevelForHost(host); 447 double error_page_zoom_level = GetZoomLevelForHost(host);
425 448
426 SendZoomLevelChange(std::string(), host, error_page_zoom_level); 449 SendZoomLevelChange(std::string(), host, error_page_zoom_level);
427 } 450 }
428 451
429 HostZoomMapImpl::~HostZoomMapImpl() { 452 HostZoomMapImpl::~HostZoomMapImpl() {
430 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 453 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
431 } 454 }
432 455
433 } // namespace content 456 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/host_zoom_map_impl.h ('k') | content/browser/host_zoom_map_impl_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698