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

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

Issue 954923005: Make command-zero reset page scale in addition to zoom level (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase again again Created 5 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 unified diff | Download patch
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 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 84
85 // Helper function for setting/getting zoom levels for WebContents without 85 // Helper function for setting/getting zoom levels for WebContents without
86 // having to import HostZoomMapImpl everywhere. 86 // having to import HostZoomMapImpl everywhere.
87 double HostZoomMap::GetZoomLevel(const WebContents* web_contents) { 87 double HostZoomMap::GetZoomLevel(const WebContents* web_contents) {
88 HostZoomMapImpl* host_zoom_map = static_cast<HostZoomMapImpl*>( 88 HostZoomMapImpl* host_zoom_map = static_cast<HostZoomMapImpl*>(
89 HostZoomMap::GetForWebContents(web_contents)); 89 HostZoomMap::GetForWebContents(web_contents));
90 return host_zoom_map->GetZoomLevelForWebContents( 90 return host_zoom_map->GetZoomLevelForWebContents(
91 *static_cast<const WebContentsImpl*>(web_contents)); 91 *static_cast<const WebContentsImpl*>(web_contents));
92 } 92 }
93 93
94 bool HostZoomMap::PageScaleFactorIsOne(const WebContents* web_contents) {
95 HostZoomMapImpl* host_zoom_map = static_cast<HostZoomMapImpl*>(
96 HostZoomMap::GetForWebContents(web_contents));
97 return host_zoom_map->PageScaleFactorIsOneForWebContents(
98 *static_cast<const WebContentsImpl*>(web_contents));
99 }
100
94 void HostZoomMap::SetZoomLevel(const WebContents* web_contents, double level) { 101 void HostZoomMap::SetZoomLevel(const WebContents* web_contents, double level) {
95 HostZoomMapImpl* host_zoom_map = static_cast<HostZoomMapImpl*>( 102 HostZoomMapImpl* host_zoom_map = static_cast<HostZoomMapImpl*>(
96 HostZoomMap::GetForWebContents(web_contents)); 103 HostZoomMap::GetForWebContents(web_contents));
97 host_zoom_map->SetZoomLevelForWebContents( 104 host_zoom_map->SetZoomLevelForWebContents(
98 *static_cast<const WebContentsImpl*>(web_contents), level); 105 *static_cast<const WebContentsImpl*>(web_contents), level);
99 } 106 }
100 107
101 void HostZoomMap::SendErrorPageZoomLevelRefresh( 108 void HostZoomMap::SendErrorPageZoomLevelRefresh(
102 const WebContents* web_contents) { 109 const WebContents* web_contents) {
103 HostZoomMapImpl* host_zoom_map = 110 HostZoomMapImpl* host_zoom_map =
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 void HostZoomMapImpl::SetZoomLevelForView(int render_process_id, 334 void HostZoomMapImpl::SetZoomLevelForView(int render_process_id,
328 int render_view_id, 335 int render_view_id,
329 double level, 336 double level,
330 const std::string& host) { 337 const std::string& host) {
331 if (UsesTemporaryZoomLevel(render_process_id, render_view_id)) 338 if (UsesTemporaryZoomLevel(render_process_id, render_view_id))
332 SetTemporaryZoomLevel(render_process_id, render_view_id, level); 339 SetTemporaryZoomLevel(render_process_id, render_view_id, level);
333 else 340 else
334 SetZoomLevelForHost(host, level); 341 SetZoomLevelForHost(host, level);
335 } 342 }
336 343
344 void HostZoomMapImpl::SetPageScaleFactorIsOneForView(int render_process_id,
345 int render_view_id,
346 bool is_one) {
347 {
348 base::AutoLock auto_lock(lock_);
349 view_page_scale_factors_are_one_[RenderViewKey(render_process_id,
350 render_view_id)] = is_one;
351 }
352 HostZoomMap::ZoomLevelChange change;
353 change.mode = HostZoomMap::PAGE_SCALE_IS_ONE_CHANGED;
354 zoom_level_changed_callbacks_.Notify(change);
355 }
356
357 bool HostZoomMapImpl::PageScaleFactorIsOneForWebContents(
358 const WebContentsImpl& web_contents_impl) const {
359 if (!web_contents_impl.GetRenderProcessHost())
360 return true;
361 base::AutoLock auto_lock(lock_);
362 auto found = view_page_scale_factors_are_one_.find(
363 RenderViewKey(web_contents_impl.GetRenderProcessHost()->GetID(),
364 web_contents_impl.GetRoutingID()));
365 if (found == view_page_scale_factors_are_one_.end())
366 return true;
367 return found->second;
368 }
369
370 void HostZoomMapImpl::ClearPageScaleFactorIsOneForView(int render_process_id,
371 int render_view_id) {
372 base::AutoLock auto_lock(lock_);
373 view_page_scale_factors_are_one_.erase(
374 RenderViewKey(render_process_id, render_view_id));
375 }
376
337 bool HostZoomMapImpl::UsesTemporaryZoomLevel(int render_process_id, 377 bool HostZoomMapImpl::UsesTemporaryZoomLevel(int render_process_id,
338 int render_view_id) const { 378 int render_view_id) const {
339 RenderViewKey key(render_process_id, render_view_id); 379 RenderViewKey key(render_process_id, render_view_id);
340 380
341 base::AutoLock auto_lock(lock_); 381 base::AutoLock auto_lock(lock_);
342 return ContainsKey(temporary_zoom_levels_, key); 382 return ContainsKey(temporary_zoom_levels_, key);
343 } 383 }
344 384
345 double HostZoomMapImpl::GetTemporaryZoomLevel(int render_process_id, 385 double HostZoomMapImpl::GetTemporaryZoomLevel(int render_process_id,
346 int render_view_id) const { 386 int render_view_id) const {
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 430
391 void HostZoomMapImpl::Observe(int type, 431 void HostZoomMapImpl::Observe(int type,
392 const NotificationSource& source, 432 const NotificationSource& source,
393 const NotificationDetails& details) { 433 const NotificationDetails& details) {
394 switch (type) { 434 switch (type) {
395 case NOTIFICATION_RENDER_VIEW_HOST_WILL_CLOSE_RENDER_VIEW: { 435 case NOTIFICATION_RENDER_VIEW_HOST_WILL_CLOSE_RENDER_VIEW: {
396 int render_view_id = Source<RenderViewHost>(source)->GetRoutingID(); 436 int render_view_id = Source<RenderViewHost>(source)->GetRoutingID();
397 int render_process_id = 437 int render_process_id =
398 Source<RenderViewHost>(source)->GetProcess()->GetID(); 438 Source<RenderViewHost>(source)->GetProcess()->GetID();
399 ClearTemporaryZoomLevel(render_process_id, render_view_id); 439 ClearTemporaryZoomLevel(render_process_id, render_view_id);
440 ClearPageScaleFactorIsOneForView(render_process_id, render_view_id);
400 break; 441 break;
401 } 442 }
402 default: 443 default:
403 NOTREACHED() << "Unexpected preference observed."; 444 NOTREACHED() << "Unexpected preference observed.";
404 } 445 }
405 } 446 }
406 447
407 void HostZoomMapImpl::ClearTemporaryZoomLevel(int render_process_id, 448 void HostZoomMapImpl::ClearTemporaryZoomLevel(int render_process_id,
408 int render_view_id) { 449 int render_view_id) {
409 { 450 {
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 double error_page_zoom_level = GetZoomLevelForHost(host); 488 double error_page_zoom_level = GetZoomLevelForHost(host);
448 489
449 SendZoomLevelChange(std::string(), host, error_page_zoom_level); 490 SendZoomLevelChange(std::string(), host, error_page_zoom_level);
450 } 491 }
451 492
452 HostZoomMapImpl::~HostZoomMapImpl() { 493 HostZoomMapImpl::~HostZoomMapImpl() {
453 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 494 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
454 } 495 }
455 496
456 } // namespace content 497 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/host_zoom_map_impl.h ('k') | content/browser/renderer_host/render_view_host_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698