| Index: trunk/src/content/browser/renderer_host/render_widget_host_impl.cc
|
| ===================================================================
|
| --- trunk/src/content/browser/renderer_host/render_widget_host_impl.cc (revision 263805)
|
| +++ trunk/src/content/browser/renderer_host/render_widget_host_impl.cc (working copy)
|
| @@ -38,6 +38,7 @@
|
| #include "content/browser/renderer_host/input/synthetic_gesture_controller.h"
|
| #include "content/browser/renderer_host/input/synthetic_gesture_target.h"
|
| #include "content/browser/renderer_host/input/timeout_monitor.h"
|
| +#include "content/browser/renderer_host/input/touch_emulator.h"
|
| #include "content/browser/renderer_host/overscroll_controller.h"
|
| #include "content/browser/renderer_host/render_process_host_impl.h"
|
| #include "content/browser/renderer_host/render_view_host_impl.h"
|
| @@ -239,6 +240,8 @@
|
|
|
| input_router_.reset(new InputRouterImpl(process_, this, this, routing_id_));
|
|
|
| + touch_emulator_.reset();
|
| +
|
| #if defined(USE_AURA)
|
| bool overscroll_enabled = CommandLine::ForCurrentProcess()->
|
| GetSwitchValueASCII(switches::kOverscrollHistoryNavigation) != "0";
|
| @@ -479,6 +482,8 @@
|
| IPC_MESSAGE_HANDLER(ViewHostMsg_Focus, OnFocus)
|
| IPC_MESSAGE_HANDLER(ViewHostMsg_Blur, OnBlur)
|
| IPC_MESSAGE_HANDLER(ViewHostMsg_SetCursor, OnSetCursor)
|
| + IPC_MESSAGE_HANDLER(ViewHostMsg_SetTouchEventEmulationEnabled,
|
| + OnSetTouchEventEmulationEnabled)
|
| IPC_MESSAGE_HANDLER(ViewHostMsg_TextInputTypeChanged,
|
| OnTextInputTypeChanged)
|
| IPC_MESSAGE_HANDLER(ViewHostMsg_ImeCancelComposition,
|
| @@ -677,10 +682,16 @@
|
| if (overscroll_controller_)
|
| overscroll_controller_->Cancel();
|
|
|
| + if (touch_emulator_)
|
| + touch_emulator_->CancelTouch();
|
| +
|
| Send(new InputMsg_SetFocus(routing_id_, false));
|
| }
|
|
|
| void RenderWidgetHostImpl::LostCapture() {
|
| + if (touch_emulator_)
|
| + touch_emulator_->CancelTouch();
|
| +
|
| Send(new InputMsg_MouseCaptureLost(routing_id_));
|
| }
|
|
|
| @@ -984,6 +995,9 @@
|
| if (IgnoreInputEvents())
|
| return;
|
|
|
| + if (touch_emulator_ && touch_emulator_->HandleMouseEvent(mouse_event))
|
| + return;
|
| +
|
| input_router_->SendMouseEvent(MouseEventWithLatencyInfo(mouse_event,
|
| latency_info));
|
| }
|
| @@ -1007,6 +1021,9 @@
|
| if (IgnoreInputEvents())
|
| return;
|
|
|
| + if (touch_emulator_ && touch_emulator_->HandleMouseWheelEvent(wheel_event))
|
| + return;
|
| +
|
| input_router_->SendWheelEvent(MouseWheelEventWithLatencyInfo(wheel_event,
|
| latency_info));
|
| }
|
| @@ -1056,6 +1073,11 @@
|
| input_router_->SendGestureEvent(gesture_with_latency);
|
| }
|
|
|
| +void RenderWidgetHostImpl::ForwardTouchEvent(
|
| + const blink::WebTouchEvent& touch_event) {
|
| + ForwardTouchEventWithLatencyInfo(touch_event, ui::LatencyInfo());
|
| +}
|
| +
|
| void RenderWidgetHostImpl::ForwardTouchEventWithLatencyInfo(
|
| const blink::WebTouchEvent& touch_event,
|
| const ui::LatencyInfo& ui_latency) {
|
| @@ -1131,6 +1153,9 @@
|
| suppress_next_char_events_ = false;
|
| }
|
|
|
| + if (touch_emulator_ && touch_emulator_->HandleKeyboardEvent(key_event))
|
| + return;
|
| +
|
| input_router_->SendKeyboardEvent(
|
| key_event,
|
| CreateRWHLatencyInfoIfNotExist(NULL, key_event.type),
|
| @@ -1151,6 +1176,12 @@
|
| }
|
| }
|
|
|
| +void RenderWidgetHostImpl::SetCursor(const WebCursor& cursor) {
|
| + if (!view_)
|
| + return;
|
| + view_->UpdateCursor(cursor);
|
| +}
|
| +
|
| void RenderWidgetHostImpl::SendCursorVisibilityState(bool is_visible) {
|
| Send(new InputMsg_CursorVisibilityChange(GetRoutingID(), is_visible));
|
| }
|
| @@ -1815,10 +1846,19 @@
|
| }
|
|
|
| void RenderWidgetHostImpl::OnSetCursor(const WebCursor& cursor) {
|
| - if (!view_) {
|
| - return;
|
| + SetCursor(cursor);
|
| +}
|
| +
|
| +void RenderWidgetHostImpl::OnSetTouchEventEmulationEnabled(
|
| + bool enabled, bool allow_pinch) {
|
| + if (enabled) {
|
| + if (!touch_emulator_)
|
| + touch_emulator_.reset(new TouchEmulator(this));
|
| + touch_emulator_->Enable(allow_pinch);
|
| + } else {
|
| + if (touch_emulator_)
|
| + touch_emulator_->Disable();
|
| }
|
| - view_->UpdateCursor(cursor);
|
| }
|
|
|
| void RenderWidgetHostImpl::OnTextInputTypeChanged(
|
| @@ -2156,6 +2196,10 @@
|
| ui::INPUT_EVENT_LATENCY_TERMINATED_TOUCH_COMPONENT, 0, 0);
|
| }
|
| ComputeTouchLatency(touch_event.latency);
|
| +
|
| + if (touch_emulator_ && touch_emulator_->HandleTouchEventAck(ack_result))
|
| + return;
|
| +
|
| if (view_)
|
| view_->ProcessAckedTouchEvent(touch_event, ack_result);
|
| }
|
|
|