Index: content/renderer/render_view_impl.cc |
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc |
index cc597bd1005feb03373f86ae3d7fa3b5266b330f..597f38f48b7177100429197dde7ff25061793c0f 100644 |
--- a/content/renderer/render_view_impl.cc |
+++ b/content/renderer/render_view_impl.cc |
@@ -570,7 +570,7 @@ |
#endif |
enumeration_completion_id_(0), |
session_storage_namespace_id_(params.session_storage_namespace_id), |
- weak_ptr_factory_(this) { |
+ has_added_input_handler_(false) { |
GetWidget()->set_owner_delegate(this); |
} |
@@ -1836,18 +1836,22 @@ |
} |
blink::WebLayerTreeView* RenderViewImpl::initializeLayerTreeView() { |
- // TODO(!wjmaclean): We should be able to just remove this function, and |
- // expect the RenderWidget version of the function to be called instead. |
- // However, we have a diamond inheritance pattern going on: |
- // WebWidgetClient |
- // | | |
- // RenderWidget WebViewClient |
- // | | |
- // RenderViewImpl |
- // |
- // and this seems to prefer calling the empty version in WebWidgetClient |
- // or WebViewClient over the non-empty one in RenderWidget. |
- return RenderWidget::initializeLayerTreeView(); |
+ blink::WebLayerTreeView* ltv = RenderWidget::initializeLayerTreeView(); |
+ RenderWidgetCompositor* rwc = compositor(); |
+ if (!rwc) |
+ return ltv; |
+ |
+ RenderThreadImpl* render_thread = RenderThreadImpl::current(); |
+ // render_thread may be NULL in tests. |
+ InputHandlerManager* input_handler_manager = |
+ render_thread ? render_thread->input_handler_manager() : NULL; |
+ if (input_handler_manager) { |
+ input_handler_manager->AddInputHandler( |
+ GetRoutingID(), rwc->GetInputHandler(), AsWeakPtr(), |
+ webkit_preferences_.enable_scroll_animator); |
+ has_added_input_handler_ = true; |
+ } |
+ return ltv; |
} |
void RenderViewImpl::closeWidgetSoon() { |
@@ -2469,9 +2473,9 @@ |
bool is_main_frame) { |
// Introduce a short delay so that the user can notice the content. |
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
- FROM_HERE, base::Bind(&RenderViewImpl::LaunchAndroidContentIntent, |
- weak_ptr_factory_.GetWeakPtr(), intent, |
- expected_content_intent_id_, is_main_frame), |
+ FROM_HERE, |
+ base::Bind(&RenderViewImpl::LaunchAndroidContentIntent, AsWeakPtr(), |
+ intent, expected_content_intent_id_, is_main_frame), |
base::TimeDelta::FromMilliseconds(kContentIntentDelayMilliseconds)); |
} |