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/renderer_host/render_widget_host_view_android.cc

Issue 19220002: [WIP] BufferedInputRouter (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix client assignment 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 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 ContentViewCoreImpl* content_view_core) 105 ContentViewCoreImpl* content_view_core)
106 : host_(widget_host), 106 : host_(widget_host),
107 needs_begin_frame_(false), 107 needs_begin_frame_(false),
108 are_layers_attached_(true), 108 are_layers_attached_(true),
109 content_view_core_(NULL), 109 content_view_core_(NULL),
110 ime_adapter_android_(this), 110 ime_adapter_android_(this),
111 cached_background_color_(SK_ColorWHITE), 111 cached_background_color_(SK_ColorWHITE),
112 texture_id_in_layer_(0), 112 texture_id_in_layer_(0),
113 current_mailbox_output_surface_id_(kUndefinedOutputSurfaceId), 113 current_mailbox_output_surface_id_(kUndefinedOutputSurfaceId),
114 weak_ptr_factory_(this), 114 weak_ptr_factory_(this),
115 overscroll_effect_enabled_(true) { 115 overscroll_effect_enabled_(true),
116 flush_input_requested_(false) {
116 if (CompositorImpl::UsesDirectGL()) { 117 if (CompositorImpl::UsesDirectGL()) {
117 surface_texture_transport_.reset(new SurfaceTextureTransportClient()); 118 surface_texture_transport_.reset(new SurfaceTextureTransportClient());
118 layer_ = surface_texture_transport_->Initialize(); 119 layer_ = surface_texture_transport_->Initialize();
119 layer_->SetIsDrawable(true); 120 layer_->SetIsDrawable(true);
120 } else { 121 } else {
121 if (CommandLine::ForCurrentProcess()->HasSwitch( 122 if (CommandLine::ForCurrentProcess()->HasSwitch(
122 switches::kEnableDelegatedRenderer)) { 123 switches::kEnableDelegatedRenderer)) {
123 delegated_renderer_layer_ = cc::DelegatedRendererLayer::Create(this); 124 delegated_renderer_layer_ = cc::DelegatedRendererLayer::Create(this);
124 layer_ = delegated_renderer_layer_; 125 layer_ = delegated_renderer_layer_;
125 } else { 126 } else {
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 return; 448 return;
448 449
449 cached_background_color_ = color; 450 cached_background_color_ = color;
450 if (content_view_core_) 451 if (content_view_core_)
451 content_view_core_->OnBackgroundColorChanged(color); 452 content_view_core_->OnBackgroundColorChanged(color);
452 } 453 }
453 454
454 void RenderWidgetHostViewAndroid::SendBeginFrame( 455 void RenderWidgetHostViewAndroid::SendBeginFrame(
455 const cc::BeginFrameArgs& args) { 456 const cc::BeginFrameArgs& args) {
456 TRACE_EVENT0("cc", "RenderWidgetHostViewAndroid::SendBeginFrame"); 457 TRACE_EVENT0("cc", "RenderWidgetHostViewAndroid::SendBeginFrame");
457 if (host_) 458 if (!host_)
458 host_->Send(new ViewMsg_BeginFrame(host_->GetRoutingID(), args)); 459 return;
460
461 if (flush_input_requested_) {
462 flush_input_requested_ = false;
463 host_->FlushInput();
464 RemoveBeginFrameSubscriber();
465 }
466
467 host_->Send(new ViewMsg_BeginFrame(host_->GetRoutingID(), args));
459 } 468 }
460 469
461 void RenderWidgetHostViewAndroid::OnSetNeedsBeginFrame( 470 void RenderWidgetHostViewAndroid::OnSetNeedsBeginFrame(
462 bool enabled) { 471 bool enabled) {
463 TRACE_EVENT1("cc", "RenderWidgetHostViewAndroid::OnSetNeedsBeginFrame", 472 TRACE_EVENT1("cc", "RenderWidgetHostViewAndroid::OnSetNeedsBeginFrame",
464 "enabled", enabled); 473 "enabled", enabled);
465 // ContentViewCoreImpl handles multiple subscribers to the BeginFrame, so 474 // ContentViewCoreImpl handles multiple subscribers to the BeginFrame, so
466 // we have to make sure calls to ContentViewCoreImpl's SetNeedsBeginFrame 475 // we have to make sure calls to ContentViewCoreImpl's SetNeedsBeginFrame
467 // are balanced, even if RenderWidgetHostViewAndroid's may not be. 476 // are balanced, even if RenderWidgetHostViewAndroid's may not be.
468 if (content_view_core_ && needs_begin_frame_ != enabled) { 477 if (content_view_core_ && needs_begin_frame_ != enabled) {
469 content_view_core_->SetNeedsBeginFrame(enabled); 478 if (enabled)
479 AddBeginFrameSubscriber();
480 else
481 RemoveBeginFrameSubscriber();
470 needs_begin_frame_ = enabled; 482 needs_begin_frame_ = enabled;
471 } 483 }
472 } 484 }
473 485
474 void RenderWidgetHostViewAndroid::OnStartContentIntent( 486 void RenderWidgetHostViewAndroid::OnStartContentIntent(
475 const GURL& content_url) { 487 const GURL& content_url) {
476 if (content_view_core_) 488 if (content_view_core_)
477 content_view_core_->StartContentIntent(content_url); 489 content_view_core_->StartContentIntent(content_url);
478 } 490 }
479 491
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
812 void RenderWidgetHostViewAndroid::RemoveLayers() { 824 void RenderWidgetHostViewAndroid::RemoveLayers() {
813 if (!content_view_core_) 825 if (!content_view_core_)
814 return; 826 return;
815 827
816 if (overscroll_effect_) 828 if (overscroll_effect_)
817 content_view_core_->RemoveLayer(overscroll_effect_->root_layer()); 829 content_view_core_->RemoveLayer(overscroll_effect_->root_layer());
818 830
819 content_view_core_->RemoveLayer(layer_); 831 content_view_core_->RemoveLayer(layer_);
820 } 832 }
821 833
834 void RenderWidgetHostViewAndroid::AddBeginFrameSubscriber() {
835 content_view_core_->SetNeedsBeginFrame(true);
836 }
837
838 void RenderWidgetHostViewAndroid::RemoveBeginFrameSubscriber() {
839 content_view_core_->SetNeedsBeginFrame(false);
840 }
841
822 bool RenderWidgetHostViewAndroid::Animate(base::TimeTicks frame_time) { 842 bool RenderWidgetHostViewAndroid::Animate(base::TimeTicks frame_time) {
823 if (!overscroll_effect_) 843 if (!overscroll_effect_)
824 return false; 844 return false;
825 return overscroll_effect_->Animate(frame_time); 845 return overscroll_effect_->Animate(frame_time);
826 } 846 }
827 847
828 void RenderWidgetHostViewAndroid::CreateOverscrollEffectIfNecessary() { 848 void RenderWidgetHostViewAndroid::CreateOverscrollEffectIfNecessary() {
829 if (!overscroll_effect_enabled_ || overscroll_effect_) 849 if (!overscroll_effect_enabled_ || overscroll_effect_)
830 return; 850 return;
831 851
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
944 if (host_) { 964 if (host_) {
945 SynchronousCompositorImpl* compositor = 965 SynchronousCompositorImpl* compositor =
946 SynchronousCompositorImpl::FromID(host_->GetProcess()->GetID(), 966 SynchronousCompositorImpl::FromID(host_->GetProcess()->GetID(),
947 host_->GetRoutingID()); 967 host_->GetRoutingID());
948 if (compositor) 968 if (compositor)
949 return compositor->HandleInputEvent(input_event); 969 return compositor->HandleInputEvent(input_event);
950 } 970 }
951 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED; 971 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED;
952 } 972 }
953 973
974 void RenderWidgetHostViewAndroid::OnSetNeedsFlushInput() {
975 if (flush_input_requested_)
976 return;
977 flush_input_requested_ = true;
978 AddBeginFrameSubscriber();
979 }
980
981 void RenderWidgetHostViewAndroid::OnDidFlushInput() {
982 // TODO(jdduke): Send blocked BeginFrame?
983 }
984
954 void RenderWidgetHostViewAndroid::OnAccessibilityEvents( 985 void RenderWidgetHostViewAndroid::OnAccessibilityEvents(
955 const std::vector<AccessibilityHostMsg_EventParams>& params) { 986 const std::vector<AccessibilityHostMsg_EventParams>& params) {
956 if (!host_ || 987 if (!host_ ||
957 host_->accessibility_mode() != AccessibilityModeComplete || 988 host_->accessibility_mode() != AccessibilityModeComplete ||
958 !content_view_core_) { 989 !content_view_core_) {
959 return; 990 return;
960 } 991 }
961 992
962 if (!GetBrowserAccessibilityManager()) { 993 if (!GetBrowserAccessibilityManager()) {
963 SetBrowserAccessibilityManager( 994 SetBrowserAccessibilityManager(
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after
1288 // RenderWidgetHostView, public: 1319 // RenderWidgetHostView, public:
1289 1320
1290 // static 1321 // static
1291 RenderWidgetHostView* 1322 RenderWidgetHostView*
1292 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) { 1323 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) {
1293 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget); 1324 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget);
1294 return new RenderWidgetHostViewAndroid(rwhi, NULL); 1325 return new RenderWidgetHostViewAndroid(rwhi, NULL);
1295 } 1326 }
1296 1327
1297 } // namespace content 1328 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698