Index: content/browser/renderer_host/input/synthetic_gesture_controller.h |
diff --git a/content/browser/renderer_host/input/synthetic_gesture_controller.h b/content/browser/renderer_host/input/synthetic_gesture_controller.h |
index 7ee0f88f7a51b527f6b1ebcbd65e8488b0d68bc4..ed11a5ad214b88c65f80393cc1458c9b2347abf3 100644 |
--- a/content/browser/renderer_host/input/synthetic_gesture_controller.h |
+++ b/content/browser/renderer_host/input/synthetic_gesture_controller.h |
@@ -27,12 +27,22 @@ class SyntheticGestureTarget; |
// input events to the platform until the gesture has finished. |
class CONTENT_EXPORT SyntheticGestureController { |
public: |
- using BeginFrameCallback = base::OnceClosure; |
- using BeginFrameRequestCallback = |
- base::RepeatingCallback<void(BeginFrameCallback)>; |
+ class Delegate { |
+ public: |
+ virtual ~Delegate() {} |
+ |
+ // Requests a single begin frame. The passed callback is run on the next |
+ // begin frame message. |
+ virtual void RequestBeginFrameForSynthesizedInput( |
+ base::OnceClosure callback) = 0; |
+ |
+ // Returns whether any gesture created by dispatched input events has |
+ // completed or not. |
+ virtual bool HasGestureStopped() = 0; |
+ }; |
SyntheticGestureController( |
- std::unique_ptr<SyntheticGestureTarget> gesture_target, |
- BeginFrameRequestCallback begin_frame_callback); |
+ Delegate* delegate, |
+ std::unique_ptr<SyntheticGestureTarget> gesture_target); |
virtual ~SyntheticGestureController(); |
typedef base::Callback<void(SyntheticGesture::Result)> |
@@ -44,6 +54,7 @@ class CONTENT_EXPORT SyntheticGestureController { |
bool DispatchNextEvent(base::TimeTicks = base::TimeTicks::Now()); |
private: |
+ void RequestBeginFrame(); |
void OnBeginFrame(); |
void StartGesture(const SyntheticGesture& gesture); |
@@ -51,6 +62,7 @@ class CONTENT_EXPORT SyntheticGestureController { |
const OnGestureCompleteCallback& completion_callback, |
SyntheticGesture::Result result); |
+ Delegate* const delegate_; |
std::unique_ptr<SyntheticGestureTarget> gesture_target_; |
// A queue of gesture/callback pairs. Implemented as two queues to |
@@ -67,24 +79,38 @@ class CONTENT_EXPORT SyntheticGestureController { |
void Pop() { |
gestures_.erase(gestures_.begin()); |
callbacks_.pop(); |
+ result_of_current_gesture_ = SyntheticGesture::GESTURE_RUNNING; |
} |
SyntheticGesture* FrontGesture() { return gestures_.front().get(); } |
OnGestureCompleteCallback& FrontCallback() { |
return callbacks_.front(); |
} |
- bool IsEmpty() { |
+ bool IsEmpty() const { |
CHECK(gestures_.empty() == callbacks_.empty()); |
return gestures_.empty(); |
} |
+ |
+ bool is_current_gesture_complete() const { |
+ return result_of_current_gesture_ != SyntheticGesture::GESTURE_RUNNING; |
+ } |
+ |
+ SyntheticGesture::Result current_gesture_result() const { |
+ return result_of_current_gesture_; |
+ } |
+ |
+ void mark_current_gesture_complete(SyntheticGesture::Result result) { |
+ result_of_current_gesture_ = result; |
+ } |
+ |
private: |
+ SyntheticGesture::Result result_of_current_gesture_ = |
+ SyntheticGesture::GESTURE_RUNNING; |
std::vector<std::unique_ptr<SyntheticGesture>> gestures_; |
std::queue<OnGestureCompleteCallback> callbacks_; |
DISALLOW_COPY_AND_ASSIGN(GestureAndCallbackQueue); |
} pending_gesture_queue_; |
- BeginFrameRequestCallback begin_frame_callback_; |
- |
base::WeakPtrFactory<SyntheticGestureController> weak_ptr_factory_; |
DISALLOW_COPY_AND_ASSIGN(SyntheticGestureController); |