| 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/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 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 ContentViewCoreImpl* content_view_core) | 107 ContentViewCoreImpl* content_view_core) |
| 108 : host_(widget_host), | 108 : host_(widget_host), |
| 109 needs_begin_frame_(false), | 109 needs_begin_frame_(false), |
| 110 are_layers_attached_(true), | 110 are_layers_attached_(true), |
| 111 content_view_core_(NULL), | 111 content_view_core_(NULL), |
| 112 ime_adapter_android_(this), | 112 ime_adapter_android_(this), |
| 113 cached_background_color_(SK_ColorWHITE), | 113 cached_background_color_(SK_ColorWHITE), |
| 114 texture_id_in_layer_(0), | 114 texture_id_in_layer_(0), |
| 115 current_mailbox_output_surface_id_(kUndefinedOutputSurfaceId), | 115 current_mailbox_output_surface_id_(kUndefinedOutputSurfaceId), |
| 116 weak_ptr_factory_(this), | 116 weak_ptr_factory_(this), |
| 117 overscroll_effect_enabled_(true) { | 117 overscroll_effect_enabled_(true), |
| 118 flush_input_requested_(false) { |
| 118 if (CompositorImpl::UsesDirectGL()) { | 119 if (CompositorImpl::UsesDirectGL()) { |
| 119 surface_texture_transport_.reset(new SurfaceTextureTransportClient()); | 120 surface_texture_transport_.reset(new SurfaceTextureTransportClient()); |
| 120 layer_ = surface_texture_transport_->Initialize(); | 121 layer_ = surface_texture_transport_->Initialize(); |
| 121 layer_->SetIsDrawable(true); | 122 layer_->SetIsDrawable(true); |
| 122 } else { | 123 } else { |
| 123 if (CommandLine::ForCurrentProcess()->HasSwitch( | 124 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 124 switches::kEnableDelegatedRenderer)) { | 125 switches::kEnableDelegatedRenderer)) { |
| 125 delegated_renderer_layer_ = cc::DelegatedRendererLayer::Create(this); | 126 delegated_renderer_layer_ = cc::DelegatedRendererLayer::Create(this); |
| 126 layer_ = delegated_renderer_layer_; | 127 layer_ = delegated_renderer_layer_; |
| 127 } else { | 128 } else { |
| (...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 453 return; | 454 return; |
| 454 | 455 |
| 455 cached_background_color_ = color; | 456 cached_background_color_ = color; |
| 456 if (content_view_core_) | 457 if (content_view_core_) |
| 457 content_view_core_->OnBackgroundColorChanged(color); | 458 content_view_core_->OnBackgroundColorChanged(color); |
| 458 } | 459 } |
| 459 | 460 |
| 460 void RenderWidgetHostViewAndroid::SendBeginFrame( | 461 void RenderWidgetHostViewAndroid::SendBeginFrame( |
| 461 const cc::BeginFrameArgs& args) { | 462 const cc::BeginFrameArgs& args) { |
| 462 TRACE_EVENT0("cc", "RenderWidgetHostViewAndroid::SendBeginFrame"); | 463 TRACE_EVENT0("cc", "RenderWidgetHostViewAndroid::SendBeginFrame"); |
| 463 if (host_) | 464 if (!host_) |
| 464 host_->Send(new ViewMsg_BeginFrame(host_->GetRoutingID(), args)); | 465 return; |
| 466 |
| 467 if (flush_input_requested_) { |
| 468 flush_input_requested_ = false; |
| 469 host_->FlushInput(); |
| 470 content_view_core_->RemoveBeginFrameSubscriber(); |
| 471 } |
| 472 |
| 473 host_->Send(new ViewMsg_BeginFrame(host_->GetRoutingID(), args)); |
| 465 } | 474 } |
| 466 | 475 |
| 467 void RenderWidgetHostViewAndroid::OnSetNeedsBeginFrame( | 476 void RenderWidgetHostViewAndroid::OnSetNeedsBeginFrame( |
| 468 bool enabled) { | 477 bool enabled) { |
| 469 TRACE_EVENT1("cc", "RenderWidgetHostViewAndroid::OnSetNeedsBeginFrame", | 478 TRACE_EVENT1("cc", "RenderWidgetHostViewAndroid::OnSetNeedsBeginFrame", |
| 470 "enabled", enabled); | 479 "enabled", enabled); |
| 471 // ContentViewCoreImpl handles multiple subscribers to the BeginFrame, so | 480 // ContentViewCoreImpl handles multiple subscribers to the BeginFrame, so |
| 472 // we have to make sure calls to ContentViewCoreImpl's SetNeedsBeginFrame | 481 // we have to make sure calls to ContentViewCoreImpl's |
| 473 // are balanced, even if RenderWidgetHostViewAndroid's may not be. | 482 // {Add,Remove}BeginFrameSubscriber are balanced, even if |
| 483 // RenderWidgetHostViewAndroid's may not be. |
| 474 if (content_view_core_ && needs_begin_frame_ != enabled) { | 484 if (content_view_core_ && needs_begin_frame_ != enabled) { |
| 475 content_view_core_->SetNeedsBeginFrame(enabled); | 485 if (enabled) |
| 486 content_view_core_->AddBeginFrameSubscriber(); |
| 487 else |
| 488 content_view_core_->RemoveBeginFrameSubscriber(); |
| 476 needs_begin_frame_ = enabled; | 489 needs_begin_frame_ = enabled; |
| 477 } | 490 } |
| 478 } | 491 } |
| 479 | 492 |
| 480 void RenderWidgetHostViewAndroid::OnStartContentIntent( | 493 void RenderWidgetHostViewAndroid::OnStartContentIntent( |
| 481 const GURL& content_url) { | 494 const GURL& content_url) { |
| 482 if (content_view_core_) | 495 if (content_view_core_) |
| 483 content_view_core_->StartContentIntent(content_url); | 496 content_view_core_->StartContentIntent(content_url); |
| 484 } | 497 } |
| 485 | 498 |
| (...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 964 if (host_) { | 977 if (host_) { |
| 965 SynchronousCompositorImpl* compositor = | 978 SynchronousCompositorImpl* compositor = |
| 966 SynchronousCompositorImpl::FromID(host_->GetProcess()->GetID(), | 979 SynchronousCompositorImpl::FromID(host_->GetProcess()->GetID(), |
| 967 host_->GetRoutingID()); | 980 host_->GetRoutingID()); |
| 968 if (compositor) | 981 if (compositor) |
| 969 return compositor->HandleInputEvent(input_event); | 982 return compositor->HandleInputEvent(input_event); |
| 970 } | 983 } |
| 971 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED; | 984 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED; |
| 972 } | 985 } |
| 973 | 986 |
| 987 void RenderWidgetHostViewAndroid::OnSetNeedsFlushInput() { |
| 988 if (flush_input_requested_ || !content_view_core_) |
| 989 return; |
| 990 flush_input_requested_ = true; |
| 991 content_view_core_->AddBeginFrameSubscriber(); |
| 992 } |
| 993 |
| 974 void RenderWidgetHostViewAndroid::OnAccessibilityEvents( | 994 void RenderWidgetHostViewAndroid::OnAccessibilityEvents( |
| 975 const std::vector<AccessibilityHostMsg_EventParams>& params) { | 995 const std::vector<AccessibilityHostMsg_EventParams>& params) { |
| 976 if (!host_ || | 996 if (!host_ || |
| 977 host_->accessibility_mode() != AccessibilityModeComplete || | 997 host_->accessibility_mode() != AccessibilityModeComplete || |
| 978 !content_view_core_) { | 998 !content_view_core_) { |
| 979 return; | 999 return; |
| 980 } | 1000 } |
| 981 | 1001 |
| 982 if (!GetBrowserAccessibilityManager()) { | 1002 if (!GetBrowserAccessibilityManager()) { |
| 983 SetBrowserAccessibilityManager( | 1003 SetBrowserAccessibilityManager( |
| (...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1311 // RenderWidgetHostView, public: | 1331 // RenderWidgetHostView, public: |
| 1312 | 1332 |
| 1313 // static | 1333 // static |
| 1314 RenderWidgetHostView* | 1334 RenderWidgetHostView* |
| 1315 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) { | 1335 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) { |
| 1316 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget); | 1336 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget); |
| 1317 return new RenderWidgetHostViewAndroid(rwhi, NULL); | 1337 return new RenderWidgetHostViewAndroid(rwhi, NULL); |
| 1318 } | 1338 } |
| 1319 | 1339 |
| 1320 } // namespace content | 1340 } // namespace content |
| OLD | NEW |