| Index: content/browser/renderer_host/input/synthetic_gesture_target_base.cc
|
| diff --git a/content/browser/renderer_host/input/synthetic_gesture_target_base.cc b/content/browser/renderer_host/input/synthetic_gesture_target_base.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3fc93c198009b00d7517729786714af9e9390a43
|
| --- /dev/null
|
| +++ b/content/browser/renderer_host/input/synthetic_gesture_target_base.cc
|
| @@ -0,0 +1,104 @@
|
| +// Copyright 2013 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "content/browser/renderer_host/input/synthetic_gesture_target_base.h"
|
| +
|
| +#include "content/browser/renderer_host/render_widget_host_impl.h"
|
| +#include "content/browser/renderer_host/ui_events_helper.h"
|
| +#include "content/common/input/input_event.h"
|
| +#include "ui/events/event.h"
|
| +#include "ui/events/latency_info.h"
|
| +
|
| +using blink::WebInputEvent;
|
| +using blink::WebTouchEvent;
|
| +using blink::WebMouseEvent;
|
| +using blink::WebMouseWheelEvent;
|
| +
|
| +namespace content {
|
| +
|
| +namespace {
|
| +
|
| +// How many milliseconds apart synthetic scroll messages should be sent.
|
| +const int kSyntheticGestureMessageIntervalMs = 16;
|
| +
|
| +} // namespace
|
| +
|
| +SyntheticGestureTargetBase::SyntheticGestureTargetBase(
|
| + RenderWidgetHostImpl* host)
|
| + : host_(host) {
|
| +}
|
| +
|
| +SyntheticGestureTargetBase::~SyntheticGestureTargetBase() {
|
| +}
|
| +
|
| +void SyntheticGestureTargetBase::QueueInputEventToPlatform(
|
| + const InputEvent& event) {
|
| + const WebInputEvent* web_event = event.web_event.get();
|
| + if (WebInputEvent::isTouchEventType(web_event->type)) {
|
| + DCHECK(SupportsSyntheticGestureSourceType(
|
| + SyntheticGestureParams::TOUCH_INPUT));
|
| +
|
| + const WebTouchEvent* web_touch =
|
| + static_cast<const WebTouchEvent*>(web_event);
|
| + QueueWebTouchEventToPlatform(*web_touch, event.latency_info);
|
| + } else if (web_event->type == WebInputEvent::MouseWheel) {
|
| + DCHECK(SupportsSyntheticGestureSourceType(
|
| + SyntheticGestureParams::MOUSE_INPUT));
|
| +
|
| + const WebMouseWheelEvent* web_wheel =
|
| + static_cast<const WebMouseWheelEvent*>(web_event);
|
| + QueueWebMouseWheelEventToPlatform(*web_wheel, event.latency_info);
|
| + } else if (WebInputEvent::isMouseEventType(web_event->type)) {
|
| + DCHECK(SupportsSyntheticGestureSourceType(
|
| + SyntheticGestureParams::MOUSE_INPUT));
|
| +
|
| + const WebMouseEvent* web_mouse =
|
| + static_cast<const WebMouseEvent*>(web_event);
|
| + QueueWebMouseEventToPlatform(*web_mouse, event.latency_info);
|
| + } else {
|
| + NOTREACHED();
|
| + }
|
| +}
|
| +
|
| +void SyntheticGestureTargetBase::QueueWebTouchEventToPlatform(
|
| + const blink::WebTouchEvent& web_touch,
|
| + const ui::LatencyInfo& latency_info) {
|
| + host_->ForwardTouchEventWithLatencyInfo(web_touch, latency_info);
|
| +}
|
| +
|
| +void SyntheticGestureTargetBase::QueueWebMouseWheelEventToPlatform(
|
| + const blink::WebMouseWheelEvent& web_wheel,
|
| + const ui::LatencyInfo& latency_info) {
|
| + host_->ForwardWheelEventWithLatencyInfo(
|
| + MouseWheelEventWithLatencyInfo(web_wheel, latency_info));
|
| +}
|
| +
|
| +void SyntheticGestureTargetBase::QueueWebMouseEventToPlatform(
|
| + const blink::WebMouseEvent& web_mouse,
|
| + const ui::LatencyInfo& latency_info) {
|
| + host_->ForwardMouseEventWithLatencyInfo(
|
| + MouseEventWithLatencyInfo(web_mouse, latency_info));
|
| +}
|
| +
|
| +void SyntheticGestureTargetBase::OnSyntheticGestureCompleted(
|
| + SyntheticGestureNew::Result result) {
|
| +}
|
| +
|
| +base::TimeDelta
|
| +SyntheticGestureTargetBase::GetSyntheticGestureUpdateRate() const {
|
| + return base::TimeDelta::FromMilliseconds(kSyntheticGestureMessageIntervalMs);
|
| +}
|
| +
|
| +SyntheticGestureParams::GestureSourceType
|
| +SyntheticGestureTargetBase::GetDefaultSyntheticGestureSourceType() const {
|
| + return SyntheticGestureParams::MOUSE_INPUT;
|
| +}
|
| +
|
| +bool SyntheticGestureTargetBase::SupportsSyntheticGestureSourceType(
|
| + SyntheticGestureParams::GestureSourceType gesture_source_type) const {
|
| + return gesture_source_type == SyntheticGestureParams::MOUSE_INPUT ||
|
| + gesture_source_type == SyntheticGestureParams::TOUCH_INPUT;
|
| +}
|
| +
|
| +} // namespace content
|
|
|