| Index: chrome/renderer/gesture_manager.h
|
| diff --git a/chrome/renderer/gesture_manager.h b/chrome/renderer/gesture_manager.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..eb8256bd9c5b763454b4f4a6718789a284638242
|
| --- /dev/null
|
| +++ b/chrome/renderer/gesture_manager.h
|
| @@ -0,0 +1,84 @@
|
| +// Copyright (c) 2010 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.
|
| +
|
| +#ifndef CHROME_RENDERER_GESTURE_MANAGER_H_
|
| +#define CHROME_RENDERER_GESTURE_MANAGER_H_
|
| +#pragma once
|
| +
|
| +#include "base/singleton.h"
|
| +
|
| +#include "third_party/WebKit/WebKit/chromium/public/WebPoint.h"
|
| +
|
| +class RenderWidget;
|
| +
|
| +namespace WebKit {
|
| +class WebTouchEvent;
|
| +class WebTouchPoint;
|
| +}
|
| +
|
| +// A GestureManager singleton detects gestures occurring in the
|
| +// incoming feed of touch events in the Renderer. In response to
|
| +// a given touch event, the GestureManager, updates its internal state
|
| +// and optionally dispatches synthetic events to the invoking
|
| +// RenderWidget.
|
| +//
|
| +// This GestureManager is a singleton in the renderer process and differs
|
| +// from the GestureManager found in the browser process.
|
| +// A subsequent CL will unify these and provide more complete
|
| +// functionality.
|
| +class GestureManager /* : public AbstractGestureManager */ {
|
| + public:
|
| + // The states of the gesture manager state machine.
|
| + enum SyntheticCandidateGesture {
|
| + NO_GESTURE,
|
| + PENDING_SYNTHETIC_CLICK,
|
| + SCROLL,
|
| + };
|
| +
|
| + virtual ~GestureManager();
|
| + static GestureManager* Get();
|
| +
|
| + // Invoked for each touch event that could contribute to the current gesture.
|
| + // Takes the event and the RenderWidget that originated it and which will also
|
| + // be the target of any generated synthetic event. Finally, previously_handled
|
| + // specifies if the event was actually handled explicitly by a WebWidget.
|
| + // Returns true if the event resulted in firing a synthetic event.
|
| + virtual bool ProcessTouchEventForGesture(const WebKit::WebTouchEvent& event,
|
| + RenderWidget* source,
|
| + bool previously_handled);
|
| +
|
| + protected:
|
| + GestureManager();
|
| +
|
| + private:
|
| + // Dispatch a mouseDown/mouseUp/Click sequence.
|
| + void DispatchSyntheticClick(RenderWidget* w,
|
| + const WebKit::WebTouchEvent& event,
|
| + const WebKit::WebTouchPoint& p);
|
| +
|
| + // True for a time within the click interval.
|
| + bool IsInClickTimeWindow(double ts);
|
| +
|
| + // True for a point p still inside the thresholded square.
|
| + bool IsInsideManhattanSquare(const WebKit::WebTouchPoint& p);
|
| +
|
| + // Scroll the screen.
|
| + void ScrollViaTouchMotion(const WebKit::WebTouchPoint& p, RenderWidget* w);
|
| +
|
| + friend struct DefaultSingletonTraits<GestureManager>;
|
| +
|
| + // The synthetic candidate gesture to fire at the end of a touch event
|
| + // sequence.
|
| + SyntheticCandidateGesture candidate_gesture_;
|
| +
|
| + // Location of first touch.
|
| + WebKit::WebPoint first_touch_position_;
|
| +
|
| + // Time of first touch.
|
| + double first_touch_time_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(GestureManager);
|
| +};
|
| +
|
| +#endif // CHROME_RENDERER_GESTURE_MANAGER_H_
|
|
|