Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(144)

Side by Side Diff: content/browser/renderer_host/input/mouse_wheel_event_queue_unittest.cc

Issue 1710033002: Add scrollDelta units to GestureScrollEnd. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master_wheel_passive_listeners_3
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/renderer_host/input/mouse_wheel_event_queue.h" 5 #include "content/browser/renderer_host/input/mouse_wheel_event_queue.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 ~MouseWheelEventQueueTest() override {} 44 ~MouseWheelEventQueueTest() override {}
45 45
46 // MouseWheelEventQueueClient 46 // MouseWheelEventQueueClient
47 void SendMouseWheelEventImmediately( 47 void SendMouseWheelEventImmediately(
48 const MouseWheelEventWithLatencyInfo& event) override { 48 const MouseWheelEventWithLatencyInfo& event) override {
49 sent_events_.push_back(event.event); 49 sent_events_.push_back(event.event);
50 } 50 }
51 51
52 void SendGestureEvent(const GestureEventWithLatencyInfo& event) override { 52 void SendGestureEvent(const GestureEventWithLatencyInfo& event) override {
53 sent_events_.push_back(event.event); 53 sent_events_.push_back(event.event);
54 sent_gesture_events_.push_back(event.event);
54 } 55 }
55 56
56 void OnMouseWheelEventAck(const MouseWheelEventWithLatencyInfo& event, 57 void OnMouseWheelEventAck(const MouseWheelEventWithLatencyInfo& event,
57 InputEventAckState ack_result) override { 58 InputEventAckState ack_result) override {
58 ++acked_event_count_; 59 ++acked_event_count_;
59 last_acked_event_ = event.event; 60 last_acked_event_ = event.event;
60 last_acked_event_state_ = ack_result; 61 last_acked_event_state_ = ack_result;
61 } 62 }
62 63
63 protected: 64 protected:
64 void SetUpForGestureTesting(bool send_gestures) { 65 void SetUpForGestureTesting(bool send_gestures) {
65 queue_.reset( 66 queue_.reset(
66 new MouseWheelEventQueue(this, send_gestures, kScrollEndTimeoutMs)); 67 new MouseWheelEventQueue(this, send_gestures, kScrollEndTimeoutMs));
67 } 68 }
68 69
69 size_t queued_event_count() const { return queue_->queued_size(); } 70 size_t queued_event_count() const { return queue_->queued_size(); }
70 71
71 bool event_in_flight() const { return queue_->event_in_flight(); } 72 bool event_in_flight() const { return queue_->event_in_flight(); }
72 73
73 std::vector<WebInputEvent>& all_sent_events() { return sent_events_; } 74 std::vector<WebInputEvent>& all_sent_events() { return sent_events_; }
74 75
76 std::vector<WebGestureEvent>& sent_gesture_events() {
77 return sent_gesture_events_;
78 }
79
75 const WebMouseWheelEvent& acked_event() const { return last_acked_event_; } 80 const WebMouseWheelEvent& acked_event() const { return last_acked_event_; }
76 81
77 size_t GetAndResetSentEventCount() { 82 size_t GetAndResetSentEventCount() {
78 size_t count = sent_events_.size(); 83 size_t count = sent_events_.size();
79 sent_events_.clear(); 84 sent_events_.clear();
85 sent_gesture_events_.clear();
80 return count; 86 return count;
81 } 87 }
82 88
83 size_t GetAndResetAckedEventCount() { 89 size_t GetAndResetAckedEventCount() {
84 size_t count = acked_event_count_; 90 size_t count = acked_event_count_;
85 acked_event_count_ = 0; 91 acked_event_count_ = 0;
86 return count; 92 return count;
87 } 93 }
88 94
89 void SendMouseWheelEventAck(InputEventAckState ack_result) { 95 void SendMouseWheelEventAck(InputEventAckState ack_result) {
(...skipping 15 matching lines...) Expand all
105 } 111 }
106 112
107 static void RunTasksAndWait(base::TimeDelta delay) { 113 static void RunTasksAndWait(base::TimeDelta delay) {
108 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( 114 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
109 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(), delay); 115 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(), delay);
110 base::MessageLoop::current()->Run(); 116 base::MessageLoop::current()->Run();
111 } 117 }
112 118
113 scoped_ptr<MouseWheelEventQueue> queue_; 119 scoped_ptr<MouseWheelEventQueue> queue_;
114 std::vector<WebInputEvent> sent_events_; 120 std::vector<WebInputEvent> sent_events_;
121 std::vector<WebGestureEvent> sent_gesture_events_;
115 size_t acked_event_count_; 122 size_t acked_event_count_;
116 InputEventAckState last_acked_event_state_; 123 InputEventAckState last_acked_event_state_;
117 base::MessageLoopForUI message_loop_; 124 base::MessageLoopForUI message_loop_;
118 WebMouseWheelEvent last_acked_event_; 125 WebMouseWheelEvent last_acked_event_;
119 }; 126 };
120 127
121 // Tests that mouse wheel events are queued properly. 128 // Tests that mouse wheel events are queued properly.
122 TEST_F(MouseWheelEventQueueTest, Basic) { 129 TEST_F(MouseWheelEventQueueTest, Basic) {
123 SendMouseWheel(10, 10, 1, 1, 0); 130 SendMouseWheel(10, 10, 1, 1, 0);
124 EXPECT_EQ(0U, queued_event_count()); 131 EXPECT_EQ(0U, queued_event_count());
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 170
164 // Receive an ACK for the mouse wheel event and release the next 171 // Receive an ACK for the mouse wheel event and release the next
165 // mouse wheel event. 172 // mouse wheel event.
166 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 173 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
167 EXPECT_EQ(0U, queued_event_count()); 174 EXPECT_EQ(0U, queued_event_count());
168 EXPECT_TRUE(event_in_flight()); 175 EXPECT_TRUE(event_in_flight());
169 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); 176 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type);
170 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 177 EXPECT_EQ(1U, GetAndResetAckedEventCount());
171 EXPECT_EQ(3U, all_sent_events().size()); 178 EXPECT_EQ(3U, all_sent_events().size());
172 EXPECT_EQ(WebInputEvent::GestureScrollBegin, all_sent_events()[0].type); 179 EXPECT_EQ(WebInputEvent::GestureScrollBegin, all_sent_events()[0].type);
180 EXPECT_EQ(WebGestureEvent::Pixels,
tdresser 2016/02/18 16:00:46 Should we have a test which expects PrecisePixels?
dtapuska 2016/02/18 16:16:44 I knew you would ask.. :-)
181 sent_gesture_events()[0].data.scrollBegin.deltaHintUnits);
173 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, all_sent_events()[1].type); 182 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, all_sent_events()[1].type);
183 EXPECT_EQ(WebGestureEvent::Pixels,
184 sent_gesture_events()[1].data.scrollUpdate.deltaUnits);
174 EXPECT_EQ(WebInputEvent::MouseWheel, all_sent_events()[2].type); 185 EXPECT_EQ(WebInputEvent::MouseWheel, all_sent_events()[2].type);
175 EXPECT_EQ(3U, GetAndResetSentEventCount()); 186 EXPECT_EQ(3U, GetAndResetSentEventCount());
176 187
177 RunTasksAndWait(DefaultScrollEndTimeoutDelay() * 2); 188 RunTasksAndWait(DefaultScrollEndTimeoutDelay() * 2);
178 EXPECT_EQ(1U, all_sent_events().size()); 189 EXPECT_EQ(1U, all_sent_events().size());
179 EXPECT_EQ(WebInputEvent::GestureScrollEnd, all_sent_events()[0].type); 190 EXPECT_EQ(WebInputEvent::GestureScrollEnd, all_sent_events()[0].type);
191 EXPECT_EQ(WebGestureEvent::Pixels,
192 sent_gesture_events()[0].data.scrollEnd.deltaUnits);
180 } 193 }
181 194
182 TEST_F(MouseWheelEventQueueTest, GestureSendingInterrupted) { 195 TEST_F(MouseWheelEventQueueTest, GestureSendingInterrupted) {
183 SetUpForGestureTesting(true); 196 SetUpForGestureTesting(true);
184 SendMouseWheel(10, 10, 1, 1, 0); 197 SendMouseWheel(10, 10, 1, 1, 0);
185 EXPECT_EQ(0U, queued_event_count()); 198 EXPECT_EQ(0U, queued_event_count());
186 EXPECT_TRUE(event_in_flight()); 199 EXPECT_TRUE(event_in_flight());
187 EXPECT_EQ(1U, GetAndResetSentEventCount()); 200 EXPECT_EQ(1U, GetAndResetSentEventCount());
188 201
189 // Receive an ACK for the mouse wheel event. 202 // Receive an ACK for the mouse wheel event.
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 EXPECT_FALSE(event_in_flight()); 244 EXPECT_FALSE(event_in_flight());
232 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); 245 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type);
233 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 246 EXPECT_EQ(1U, GetAndResetAckedEventCount());
234 EXPECT_EQ(2U, all_sent_events().size()); 247 EXPECT_EQ(2U, all_sent_events().size());
235 EXPECT_EQ(WebInputEvent::GestureScrollBegin, all_sent_events()[0].type); 248 EXPECT_EQ(WebInputEvent::GestureScrollBegin, all_sent_events()[0].type);
236 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, all_sent_events()[1].type); 249 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, all_sent_events()[1].type);
237 EXPECT_EQ(2U, GetAndResetSentEventCount()); 250 EXPECT_EQ(2U, GetAndResetSentEventCount());
238 } 251 }
239 252
240 } // namespace content 253 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/input/mouse_wheel_event_queue.cc ('k') | third_party/WebKit/public/web/WebInputEvent.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698