| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |