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

Side by Side Diff: android_webview/browser/browser_view_renderer.cc

Issue 1377593003: Refactor BrowserViewRenderer to support page visibility (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "android_webview/browser/browser_view_renderer.h" 5 #include "android_webview/browser/browser_view_renderer.h"
6 6
7 #include "android_webview/browser/browser_view_renderer_client.h" 7 #include "android_webview/browser/browser_view_renderer_client.h"
8 #include "android_webview/browser/child_frame.h" 8 #include "android_webview/browser/child_frame.h"
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 } 77 }
78 78
79 // static 79 // static
80 BrowserViewRenderer* BrowserViewRenderer::FromWebContents( 80 BrowserViewRenderer* BrowserViewRenderer::FromWebContents(
81 content::WebContents* web_contents) { 81 content::WebContents* web_contents) {
82 return BrowserViewRendererUserData::GetBrowserViewRenderer(web_contents); 82 return BrowserViewRendererUserData::GetBrowserViewRenderer(web_contents);
83 } 83 }
84 84
85 BrowserViewRenderer::BrowserViewRenderer( 85 BrowserViewRenderer::BrowserViewRenderer(
86 BrowserViewRendererClient* client, 86 BrowserViewRendererClient* client,
87 const scoped_refptr<base::SingleThreadTaskRunner>& ui_task_runner) 87 const scoped_refptr<base::SingleThreadTaskRunner>& ui_task_runner,
88 bool disable_page_visibility)
88 : client_(client), 89 : client_(client),
89 shared_renderer_state_(ui_task_runner, this), 90 shared_renderer_state_(ui_task_runner, this),
90 ui_task_runner_(ui_task_runner), 91 ui_task_runner_(ui_task_runner),
92 disable_page_visibility_(disable_page_visibility),
91 compositor_(NULL), 93 compositor_(NULL),
92 is_paused_(false), 94 is_paused_(false),
93 view_visible_(false), 95 view_visible_(false),
94 window_visible_(false), 96 window_visible_(false),
95 attached_to_window_(false), 97 attached_to_window_(false),
96 hardware_enabled_(false), 98 hardware_enabled_(false),
97 dip_scale_(0.f), 99 dip_scale_(0.f),
98 page_scale_factor_(1.f), 100 page_scale_factor_(1.f),
99 min_page_scale_factor_(0.f), 101 min_page_scale_factor_(0.f),
100 max_page_scale_factor_(0.f), 102 max_page_scale_factor_(0.f),
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 } 438 }
437 439
438 hardware_enabled_ = false; 440 hardware_enabled_ = false;
439 } 441 }
440 442
441 bool BrowserViewRenderer::IsVisible() const { 443 bool BrowserViewRenderer::IsVisible() const {
442 // Ignore |window_visible_| if |attached_to_window_| is false. 444 // Ignore |window_visible_| if |attached_to_window_| is false.
443 return view_visible_ && (!attached_to_window_ || window_visible_); 445 return view_visible_ && (!attached_to_window_ || window_visible_);
444 } 446 }
445 447
448 bool BrowserViewRenderer::IsClientVisible() const {
449 if (disable_page_visibility_)
450 return !is_paused_;
451
452 return !is_paused_ && IsVisible();
453 }
454
446 gfx::Rect BrowserViewRenderer::GetScreenRect() const { 455 gfx::Rect BrowserViewRenderer::GetScreenRect() const {
447 return gfx::Rect(client_->GetLocationOnScreen(), size_); 456 return gfx::Rect(client_->GetLocationOnScreen(), size_);
448 } 457 }
449 458
450 void BrowserViewRenderer::DidInitializeCompositor( 459 void BrowserViewRenderer::DidInitializeCompositor(
451 content::SynchronousCompositor* compositor) { 460 content::SynchronousCompositor* compositor) {
452 TRACE_EVENT0("android_webview", 461 TRACE_EVENT0("android_webview",
453 "BrowserViewRenderer::DidInitializeCompositor"); 462 "BrowserViewRenderer::DidInitializeCompositor");
454 DCHECK(compositor); 463 DCHECK(compositor);
455 DCHECK(!compositor_); 464 DCHECK(!compositor_);
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
708 } 717 }
709 718
710 bool BrowserViewRenderer::CompositeSW(SkCanvas* canvas) { 719 bool BrowserViewRenderer::CompositeSW(SkCanvas* canvas) {
711 DCHECK(compositor_); 720 DCHECK(compositor_);
712 CancelFallbackTick(); 721 CancelFallbackTick();
713 ReturnResourceFromParent(); 722 ReturnResourceFromParent();
714 return compositor_->DemandDrawSw(canvas); 723 return compositor_->DemandDrawSw(canvas);
715 } 724 }
716 725
717 void BrowserViewRenderer::UpdateCompositorIsActive() { 726 void BrowserViewRenderer::UpdateCompositorIsActive() {
718 if (compositor_) 727 if (compositor_) {
719 compositor_->SetIsActive(!is_paused_ && 728 if (disable_page_visibility_)
720 (!attached_to_window_ || window_visible_)); 729 compositor_->SetIsActive(!is_paused_ &&
730 (!attached_to_window_ || window_visible_));
731 else
732 compositor_->SetIsActive(!is_paused_ && IsVisible());
boliu 2015/09/29 01:47:27 IsClientVisible here
hush (inactive) 2015/09/29 01:56:52 Done.
733 }
721 } 734 }
722 735
723 std::string BrowserViewRenderer::ToString() const { 736 std::string BrowserViewRenderer::ToString() const {
724 std::string str; 737 std::string str;
725 base::StringAppendF(&str, "is_paused: %d ", is_paused_); 738 base::StringAppendF(&str, "is_paused: %d ", is_paused_);
726 base::StringAppendF(&str, "view_visible: %d ", view_visible_); 739 base::StringAppendF(&str, "view_visible: %d ", view_visible_);
727 base::StringAppendF(&str, "window_visible: %d ", window_visible_); 740 base::StringAppendF(&str, "window_visible: %d ", window_visible_);
728 base::StringAppendF(&str, "dip_scale: %f ", dip_scale_); 741 base::StringAppendF(&str, "dip_scale: %f ", dip_scale_);
729 base::StringAppendF(&str, "page_scale_factor: %f ", page_scale_factor_); 742 base::StringAppendF(&str, "page_scale_factor: %f ", page_scale_factor_);
730 base::StringAppendF(&str, "fallback_tick_pending: %d ", 743 base::StringAppendF(&str, "fallback_tick_pending: %d ",
731 fallback_tick_pending_); 744 fallback_tick_pending_);
732 base::StringAppendF(&str, "view size: %s ", size_.ToString().c_str()); 745 base::StringAppendF(&str, "view size: %s ", size_.ToString().c_str());
733 base::StringAppendF(&str, "attached_to_window: %d ", attached_to_window_); 746 base::StringAppendF(&str, "attached_to_window: %d ", attached_to_window_);
734 base::StringAppendF(&str, 747 base::StringAppendF(&str,
735 "global visible rect: %s ", 748 "global visible rect: %s ",
736 last_on_draw_global_visible_rect_.ToString().c_str()); 749 last_on_draw_global_visible_rect_.ToString().c_str());
737 base::StringAppendF( 750 base::StringAppendF(
738 &str, "scroll_offset_dip: %s ", scroll_offset_dip_.ToString().c_str()); 751 &str, "scroll_offset_dip: %s ", scroll_offset_dip_.ToString().c_str());
739 base::StringAppendF(&str, 752 base::StringAppendF(&str,
740 "overscroll_rounding_error_: %s ", 753 "overscroll_rounding_error_: %s ",
741 overscroll_rounding_error_.ToString().c_str()); 754 overscroll_rounding_error_.ToString().c_str());
742 base::StringAppendF( 755 base::StringAppendF(
743 &str, "on_new_picture_enable: %d ", on_new_picture_enable_); 756 &str, "on_new_picture_enable: %d ", on_new_picture_enable_);
744 base::StringAppendF(&str, "clear_view: %d ", clear_view_); 757 base::StringAppendF(&str, "clear_view: %d ", clear_view_);
745 return str; 758 return str;
746 } 759 }
747 760
748 } // namespace android_webview 761 } // namespace android_webview
OLDNEW
« no previous file with comments | « android_webview/browser/browser_view_renderer.h ('k') | android_webview/java/src/org/chromium/android_webview/AwContents.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698