Index: content/renderer/render_widget.cc |
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc |
index edc343b425f274115c55eac29621bf23c5d1655f..d0192f9e3e7a481a451e82e2bbe930e877f3c409 100644 |
--- a/content/renderer/render_widget.cc |
+++ b/content/renderer/render_widget.cc |
@@ -95,6 +95,7 @@ |
#if defined(OS_ANDROID) |
#include <android/keycodes.h> |
+#include "base/time/time.h" |
#endif |
#if defined(OS_POSIX) |
@@ -380,11 +381,13 @@ RenderWidget::RenderWidget(int32_t widget_routing_id, |
frame_swap_message_queue_(new FrameSwapMessageQueue()), |
resizing_mode_selector_(new ResizingModeSelector()), |
has_host_context_menu_location_(false), |
+ has_added_input_handler_(false), |
has_focus_(false), |
#if defined(OS_MACOSX) |
text_input_client_observer_(new TextInputClientObserver(this)), |
#endif |
- focused_pepper_plugin_(nullptr) { |
+ focused_pepper_plugin_(nullptr), |
+ weak_ptr_factory_(this) { |
DCHECK_NE(routing_id_, MSG_ROUTING_NONE); |
if (!swapped_out) |
RenderProcess::current()->AddRefProcess(); |
@@ -434,7 +437,7 @@ RenderWidget* RenderWidget::CreateForPopup( |
new RenderWidget(routing_id, compositor_deps, popup_type, screen_info, |
false, false, false)); |
ShowCallback opener_callback = |
- base::Bind(&RenderViewImpl::ShowCreatedPopupWidget, opener->AsWeakPtr()); |
+ base::Bind(&RenderViewImpl::ShowCreatedPopupWidget, opener->GetWeakPtr()); |
widget->Init(opener_callback, RenderWidget::CreateWebWidget(widget.get())); |
DCHECK(!widget->HasOneRef()); // RenderWidget::Init() adds a reference. |
return widget.get(); |
@@ -1240,6 +1243,18 @@ blink::WebLayerTreeView* RenderWidget::initializeLayerTreeView() { |
compositor_->SetFrameSinkId( |
cc::FrameSinkId(RenderThread::Get()->GetClientId(), routing_id_)); |
+ 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( |
+ routing_id_, compositor()->GetInputHandler(), |
+ weak_ptr_factory_.GetWeakPtr(), |
+ compositor_deps_->IsScrollAnimatorEnabled()); |
+ has_added_input_handler_ = true; |
+ } |
+ |
return compositor_.get(); |
} |