Index: content/renderer/render_widget.cc |
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc |
index 7bd31d95c1be9c0ab7fa28da8c0be16ffc5b5c52..d8440c7eb5ad207faf46c8be9abc08bb2bbe1b7d 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(); |
@@ -433,7 +436,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(); |
@@ -1251,6 +1254,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(); |
} |
@@ -2187,7 +2202,6 @@ void RenderWidget::hasTouchEventHandlers(bool has_handlers) { |
void RenderWidget::setTouchAction( |
blink::WebTouchAction web_touch_action) { |
- |
// Ignore setTouchAction calls that result from synthetic touch events (eg. |
// when blink is emulating touch with mouse). |
if (input_handler_->handling_event_type() != WebInputEvent::TouchStart) |