| Index: ui/aura/gestures/gesture_recognizer_unittest.cc
|
| diff --git a/ui/aura/gestures/gesture_recognizer_unittest.cc b/ui/aura/gestures/gesture_recognizer_unittest.cc
|
| index 22cab46ce46efbd23543191f46be62f2ee15b123..2405df9e7cc1f0cab353c0639c97ebabeeae41ce 100644
|
| --- a/ui/aura/gestures/gesture_recognizer_unittest.cc
|
| +++ b/ui/aura/gestures/gesture_recognizer_unittest.cc
|
| @@ -20,6 +20,8 @@
|
| #include "ui/gfx/point.h"
|
| #include "ui/gfx/rect.h"
|
|
|
| +#include <queue>
|
| +
|
| namespace aura {
|
| namespace test {
|
|
|
| @@ -288,21 +290,33 @@ class QueueTouchEventDelegate : public GestureEventConsumeDelegate {
|
| virtual ~QueueTouchEventDelegate() {}
|
|
|
| virtual ui::EventResult OnTouchEvent(ui::TouchEvent* event) OVERRIDE {
|
| - return queue_events_ ? ui::ER_ASYNC : ui::ER_UNHANDLED;
|
| + if (queue_events_) {
|
| + queue_.push(new ui::TouchEvent(*event, window_, window_));
|
| + return ui::ER_CONSUMED;
|
| + }
|
| + return ui::ER_UNHANDLED;
|
| }
|
|
|
| void ReceivedAck() {
|
| - root_window_->AdvanceQueuedTouchEvent(window_, false);
|
| + ReceivedAckImpl(false);
|
| }
|
|
|
| void ReceivedAckPreventDefaulted() {
|
| - root_window_->AdvanceQueuedTouchEvent(window_, true);
|
| + ReceivedAckImpl(true);
|
| }
|
|
|
| void set_window(Window* w) { window_ = w; }
|
| void set_queue_events(bool queue) { queue_events_ = queue; }
|
|
|
| private:
|
| + void ReceivedAckImpl(bool prevent_defaulted) {
|
| + scoped_ptr<ui::TouchEvent> event(queue_.front());
|
| + root_window_->ProcessedTouchEvent(event.get(), window_,
|
| + prevent_defaulted ? ui::ER_HANDLED : ui::ER_UNHANDLED);
|
| + queue_.pop();
|
| + }
|
| +
|
| + std::queue<ui::TouchEvent*> queue_;
|
| Window* window_;
|
| RootWindow* root_window_;
|
| bool queue_events_;
|
| @@ -2073,54 +2087,6 @@ TEST_F(GestureRecognizerTest, PressDoesNotCrash) {
|
| EXPECT_FALSE(delegate->scroll_begin());
|
| }
|
|
|
| -// Tests that if a consumer has touch-events queued, then no touch-event gets
|
| -// processed synchronously until all the queued evets are processed.
|
| -TEST_F(GestureRecognizerTest, SyncTouchEventWithQueuedTouchEvents) {
|
| - scoped_ptr<QueueTouchEventDelegate> queued_delegate(
|
| - new QueueTouchEventDelegate(root_window()));
|
| - const int kWindowWidth = 123;
|
| - const int kWindowHeight = 45;
|
| - const int kTouchId1 = 6;
|
| - gfx::Rect bounds(10, 20, kWindowWidth, kWindowHeight);
|
| - scoped_ptr<aura::Window> queue(CreateTestWindowWithDelegate(
|
| - queued_delegate.get(), -1234, bounds, NULL));
|
| -
|
| - queued_delegate->set_window(queue.get());
|
| -
|
| - // Send a touch-event to the window so that the event gets queued. No gesture
|
| - // event should be created.
|
| - ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(20, 30), kTouchId1,
|
| - GetTime());
|
| - ui::TouchEvent move1(ui::ET_TOUCH_MOVED, gfx::Point(80, 25), kTouchId1,
|
| - press1.time_stamp() + base::TimeDelta::FromMilliseconds(100));
|
| - ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(80, 25), kTouchId1,
|
| - move1.time_stamp() + base::TimeDelta::FromMilliseconds(100));
|
| - root_window()->AsRootWindowHostDelegate()->OnHostTouchEvent(&press1);
|
| - root_window()->AsRootWindowHostDelegate()->OnHostTouchEvent(&move1);
|
| - EXPECT_FALSE(queued_delegate->begin());
|
| - EXPECT_FALSE(queued_delegate->tap_down());
|
| - EXPECT_FALSE(queued_delegate->scroll_begin());
|
| -
|
| - // Stop queueing events.
|
| - queued_delegate->set_queue_events(false);
|
| - root_window()->AsRootWindowHostDelegate()->OnHostTouchEvent(&release1);
|
| -
|
| - // Process the two queued events.
|
| - queued_delegate->ReceivedAck();
|
| - RunAllPendingInMessageLoop();
|
| - EXPECT_TRUE(queued_delegate->begin());
|
| - EXPECT_TRUE(queued_delegate->tap_down());
|
| - queued_delegate->Reset();
|
| -
|
| - queued_delegate->ReceivedAck();
|
| - RunAllPendingInMessageLoop();
|
| - EXPECT_TRUE(queued_delegate->tap_cancel());
|
| - EXPECT_TRUE(queued_delegate->scroll_begin());
|
| - EXPECT_TRUE(queued_delegate->scroll_update());
|
| - EXPECT_TRUE(queued_delegate->scroll_end());
|
| - EXPECT_TRUE(queued_delegate->end());
|
| -}
|
| -
|
| TEST_F(GestureRecognizerTest, TwoFingerTap) {
|
| scoped_ptr<GestureEventConsumeDelegate> delegate(
|
| new GestureEventConsumeDelegate());
|
|
|