1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file.
4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#ifndef CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_GESTURE_TARGET_BASE_H_
6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_GESTURE_TARGET_BASE_H_
7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/time/time.h"
9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "content/browser/renderer_host/input/synthetic_gesture_target.h"
10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace ui {
12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)struct LatencyInfo;
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace blink {
16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class WebTouchEvent;
17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class WebMouseEvent;
18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class WebMouseWheelEvent;
19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace content {
22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class RenderWidgetHostImpl;
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class SyntheticGestureTargetBase : public SyntheticGestureTarget {
26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public:
27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  explicit SyntheticGestureTargetBase(RenderWidgetHostImpl* host);
28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual ~SyntheticGestureTargetBase();
29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void DispatchWebTouchEventToPlatform(
31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebTouchEvent& web_touch,
32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const ui::LatencyInfo& latency_info);
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void DispatchWebMouseWheelEventToPlatform(
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebMouseWheelEvent& web_wheel,
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const ui::LatencyInfo& latency_info);
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void DispatchWebMouseEventToPlatform(
39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebMouseEvent& web_mouse,
40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const ui::LatencyInfo& latency_info);
41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // SyntheticGestureTarget:
435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual void DispatchInputEventToPlatform(
445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    const blink::WebInputEvent& event) OVERRIDE;
45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void SetNeedsFlush() OVERRIDE;
47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual SyntheticGestureParams::GestureSourceType
49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      GetDefaultSyntheticGestureSourceType() const OVERRIDE;
50f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
51f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual base::TimeDelta PointerAssumedStoppedTime() const OVERRIDE;
52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual float GetTouchSlopInDips() const OVERRIDE;
54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual float GetMinScalingSpanInDips() const OVERRIDE;
56a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) protected:
58a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  RenderWidgetHostImpl* render_widget_host() const { return host_; }
59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) private:
615c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  bool PointIsWithinContents(int x, int y) const;
625c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  RenderWidgetHostImpl* host_;
64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(SyntheticGestureTargetBase);
66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)};
67f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
68f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}  // namespace content
69f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
70f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif  // CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_GESTURE_TARGET_BASE_H_
71