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

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_android.cc

Issue 23983036: [Android] Provide synchronized input flush with BeginFrame (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Compile fix Created 7 years, 3 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/renderer_host/render_widget_host_view_android.h" 5 #include "content/browser/renderer_host/render_widget_host_view_android.h"
6 6
7 #include <android/bitmap.h> 7 #include <android/bitmap.h>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 ContentViewCoreImpl* content_view_core) 106 ContentViewCoreImpl* content_view_core)
107 : host_(widget_host), 107 : host_(widget_host),
108 needs_begin_frame_(false), 108 needs_begin_frame_(false),
109 are_layers_attached_(true), 109 are_layers_attached_(true),
110 content_view_core_(NULL), 110 content_view_core_(NULL),
111 ime_adapter_android_(this), 111 ime_adapter_android_(this),
112 cached_background_color_(SK_ColorWHITE), 112 cached_background_color_(SK_ColorWHITE),
113 texture_id_in_layer_(0), 113 texture_id_in_layer_(0),
114 current_mailbox_output_surface_id_(kUndefinedOutputSurfaceId), 114 current_mailbox_output_surface_id_(kUndefinedOutputSurfaceId),
115 weak_ptr_factory_(this), 115 weak_ptr_factory_(this),
116 overscroll_effect_enabled_(true) { 116 overscroll_effect_enabled_(true),
117 flush_input_requested_(false) {
117 if (CompositorImpl::UsesDirectGL()) { 118 if (CompositorImpl::UsesDirectGL()) {
118 surface_texture_transport_.reset(new SurfaceTextureTransportClient()); 119 surface_texture_transport_.reset(new SurfaceTextureTransportClient());
119 layer_ = surface_texture_transport_->Initialize(); 120 layer_ = surface_texture_transport_->Initialize();
120 layer_->SetIsDrawable(true); 121 layer_->SetIsDrawable(true);
121 } else { 122 } else {
122 if (CommandLine::ForCurrentProcess()->HasSwitch( 123 if (CommandLine::ForCurrentProcess()->HasSwitch(
123 switches::kEnableDelegatedRenderer)) { 124 switches::kEnableDelegatedRenderer)) {
124 delegated_renderer_layer_ = cc::DelegatedRendererLayer::Create(this); 125 delegated_renderer_layer_ = cc::DelegatedRendererLayer::Create(this);
125 layer_ = delegated_renderer_layer_; 126 layer_ = delegated_renderer_layer_;
126 } else { 127 } else {
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 return; 449 return;
449 450
450 cached_background_color_ = color; 451 cached_background_color_ = color;
451 if (content_view_core_) 452 if (content_view_core_)
452 content_view_core_->OnBackgroundColorChanged(color); 453 content_view_core_->OnBackgroundColorChanged(color);
453 } 454 }
454 455
455 void RenderWidgetHostViewAndroid::SendBeginFrame( 456 void RenderWidgetHostViewAndroid::SendBeginFrame(
456 const cc::BeginFrameArgs& args) { 457 const cc::BeginFrameArgs& args) {
457 TRACE_EVENT0("cc", "RenderWidgetHostViewAndroid::SendBeginFrame"); 458 TRACE_EVENT0("cc", "RenderWidgetHostViewAndroid::SendBeginFrame");
458 if (host_) 459 if (!host_)
459 host_->Send(new ViewMsg_BeginFrame(host_->GetRoutingID(), args)); 460 return;
461
462 if (flush_input_requested_) {
463 flush_input_requested_ = false;
464 host_->FlushInput();
465 RemoveBeginFrameSubscriber();
466 }
467
468 host_->Send(new ViewMsg_BeginFrame(host_->GetRoutingID(), args));
460 } 469 }
461 470
462 void RenderWidgetHostViewAndroid::OnSetNeedsBeginFrame( 471 void RenderWidgetHostViewAndroid::OnSetNeedsBeginFrame(
463 bool enabled) { 472 bool enabled) {
464 TRACE_EVENT1("cc", "RenderWidgetHostViewAndroid::OnSetNeedsBeginFrame", 473 TRACE_EVENT1("cc", "RenderWidgetHostViewAndroid::OnSetNeedsBeginFrame",
465 "enabled", enabled); 474 "enabled", enabled);
466 // ContentViewCoreImpl handles multiple subscribers to the BeginFrame, so 475 // ContentViewCoreImpl handles multiple subscribers to the BeginFrame, so
467 // we have to make sure calls to ContentViewCoreImpl's SetNeedsBeginFrame 476 // we have to make sure calls to ContentViewCoreImpl's SetNeedsBeginFrame
468 // are balanced, even if RenderWidgetHostViewAndroid's may not be. 477 // are balanced, even if RenderWidgetHostViewAndroid's may not be.
469 if (content_view_core_ && needs_begin_frame_ != enabled) { 478 if (content_view_core_ && needs_begin_frame_ != enabled) {
470 content_view_core_->SetNeedsBeginFrame(enabled); 479 if (enabled)
480 AddBeginFrameSubscriber();
481 else
482 RemoveBeginFrameSubscriber();
471 needs_begin_frame_ = enabled; 483 needs_begin_frame_ = enabled;
472 } 484 }
473 } 485 }
474 486
475 void RenderWidgetHostViewAndroid::OnStartContentIntent( 487 void RenderWidgetHostViewAndroid::OnStartContentIntent(
476 const GURL& content_url) { 488 const GURL& content_url) {
477 if (content_view_core_) 489 if (content_view_core_)
478 content_view_core_->StartContentIntent(content_url); 490 content_view_core_->StartContentIntent(content_url);
479 } 491 }
480 492
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after
827 void RenderWidgetHostViewAndroid::RemoveLayers() { 839 void RenderWidgetHostViewAndroid::RemoveLayers() {
828 if (!content_view_core_) 840 if (!content_view_core_)
829 return; 841 return;
830 842
831 if (overscroll_effect_) 843 if (overscroll_effect_)
832 content_view_core_->RemoveLayer(overscroll_effect_->root_layer()); 844 content_view_core_->RemoveLayer(overscroll_effect_->root_layer());
833 845
834 content_view_core_->RemoveLayer(layer_); 846 content_view_core_->RemoveLayer(layer_);
835 } 847 }
836 848
849 void RenderWidgetHostViewAndroid::AddBeginFrameSubscriber() {
850 content_view_core_->SetNeedsBeginFrame(true);
brianderson 2013/09/13 21:49:27 Can you rename ContentViewCore's SetNeedsBeginFram
jdduke (slow) 2013/09/16 15:16:04 Done.
851 }
852
853 void RenderWidgetHostViewAndroid::RemoveBeginFrameSubscriber() {
854 content_view_core_->SetNeedsBeginFrame(false);
855 }
856
837 bool RenderWidgetHostViewAndroid::Animate(base::TimeTicks frame_time) { 857 bool RenderWidgetHostViewAndroid::Animate(base::TimeTicks frame_time) {
838 if (!overscroll_effect_) 858 if (!overscroll_effect_)
839 return false; 859 return false;
840 return overscroll_effect_->Animate(frame_time); 860 return overscroll_effect_->Animate(frame_time);
841 } 861 }
842 862
843 void RenderWidgetHostViewAndroid::CreateOverscrollEffectIfNecessary() { 863 void RenderWidgetHostViewAndroid::CreateOverscrollEffectIfNecessary() {
844 if (!overscroll_effect_enabled_ || overscroll_effect_) 864 if (!overscroll_effect_enabled_ || overscroll_effect_)
845 return; 865 return;
846 866
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
959 if (host_) { 979 if (host_) {
960 SynchronousCompositorImpl* compositor = 980 SynchronousCompositorImpl* compositor =
961 SynchronousCompositorImpl::FromID(host_->GetProcess()->GetID(), 981 SynchronousCompositorImpl::FromID(host_->GetProcess()->GetID(),
962 host_->GetRoutingID()); 982 host_->GetRoutingID());
963 if (compositor) 983 if (compositor)
964 return compositor->HandleInputEvent(input_event); 984 return compositor->HandleInputEvent(input_event);
965 } 985 }
966 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED; 986 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED;
967 } 987 }
968 988
989 void RenderWidgetHostViewAndroid::OnSetNeedsFlushInput() {
990 if (flush_input_requested_)
991 return;
992 flush_input_requested_ = true;
993 AddBeginFrameSubscriber();
994 }
995
969 void RenderWidgetHostViewAndroid::OnAccessibilityEvents( 996 void RenderWidgetHostViewAndroid::OnAccessibilityEvents(
970 const std::vector<AccessibilityHostMsg_EventParams>& params) { 997 const std::vector<AccessibilityHostMsg_EventParams>& params) {
971 if (!host_ || 998 if (!host_ ||
972 host_->accessibility_mode() != AccessibilityModeComplete || 999 host_->accessibility_mode() != AccessibilityModeComplete ||
973 !content_view_core_) { 1000 !content_view_core_) {
974 return; 1001 return;
975 } 1002 }
976 1003
977 if (!GetBrowserAccessibilityManager()) { 1004 if (!GetBrowserAccessibilityManager()) {
978 SetBrowserAccessibilityManager( 1005 SetBrowserAccessibilityManager(
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after
1303 // RenderWidgetHostView, public: 1330 // RenderWidgetHostView, public:
1304 1331
1305 // static 1332 // static
1306 RenderWidgetHostView* 1333 RenderWidgetHostView*
1307 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) { 1334 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) {
1308 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget); 1335 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget);
1309 return new RenderWidgetHostViewAndroid(rwhi, NULL); 1336 return new RenderWidgetHostViewAndroid(rwhi, NULL);
1310 } 1337 }
1311 1338
1312 } // namespace content 1339 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698