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

Side by Side Diff: content/renderer/gpu/input_handler_proxy_unittest.cc

Issue 15927023: Explicit interface for synchronous InputHandlerProxy input handling (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Shorter names ftw Created 7 years, 6 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 (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/renderer/gpu/input_handler_proxy.h" 5 #include "content/renderer/gpu/input_handler_proxy.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "content/renderer/gpu/input_handler_proxy_client.h" 9 #include "content/renderer/gpu/input_handler_proxy_client.h"
10 #include "testing/gmock/include/gmock/gmock.h" 10 #include "testing/gmock/include/gmock/gmock.h"
11 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "third_party/WebKit/public/platform/WebFloatPoint.h" 12 #include "third_party/WebKit/public/platform/WebFloatPoint.h"
13 #include "third_party/WebKit/public/platform/WebFloatSize.h" 13 #include "third_party/WebKit/public/platform/WebFloatSize.h"
14 #include "third_party/WebKit/public/platform/WebGestureCurve.h" 14 #include "third_party/WebKit/public/platform/WebGestureCurve.h"
15 #include "third_party/WebKit/public/platform/WebPoint.h" 15 #include "third_party/WebKit/public/platform/WebPoint.h"
16 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h" 16 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h"
17 17
18 using WebKit::WebActiveWheelFlingParameters; 18 using WebKit::WebActiveWheelFlingParameters;
19 using WebKit::WebFloatPoint; 19 using WebKit::WebFloatPoint;
20 using WebKit::WebFloatSize; 20 using WebKit::WebFloatSize;
21 using WebKit::WebGestureEvent; 21 using WebKit::WebGestureEvent;
22 using WebKit::WebInputEvent; 22 using WebKit::WebInputEvent;
23 using WebKit::WebMouseWheelEvent; 23 using WebKit::WebMouseWheelEvent;
24 using WebKit::WebPoint; 24 using WebKit::WebPoint;
25 using WebKit::WebSize; 25 using WebKit::WebSize;
26 26
27 namespace content {
27 namespace { 28 namespace {
28 29
29 class MockInputHandler : public cc::InputHandler { 30 class MockInputHandler : public cc::InputHandler {
30 public: 31 public:
31 MockInputHandler() {} 32 MockInputHandler() {}
32 virtual ~MockInputHandler() {} 33 virtual ~MockInputHandler() {}
33 34
34 MOCK_METHOD0(PinchGestureBegin, void()); 35 MOCK_METHOD0(PinchGestureBegin, void());
35 MOCK_METHOD2(PinchGestureUpdate, 36 MOCK_METHOD2(PinchGestureUpdate,
36 void(float magnify_delta, gfx::Point anchor)); 37 void(float magnify_delta, gfx::Point anchor));
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 }; 107 };
107 108
108 class MockInputHandlerProxyClient 109 class MockInputHandlerProxyClient
109 : public content::InputHandlerProxyClient { 110 : public content::InputHandlerProxyClient {
110 public: 111 public:
111 MockInputHandlerProxyClient() {} 112 MockInputHandlerProxyClient() {}
112 virtual ~MockInputHandlerProxyClient() {} 113 virtual ~MockInputHandlerProxyClient() {}
113 114
114 virtual void WillShutdown() OVERRIDE {} 115 virtual void WillShutdown() OVERRIDE {}
115 116
116 MOCK_METHOD0(DidHandleInputEvent, void());
117 MOCK_METHOD1(DidNotHandleInputEvent, void(bool send_to_widget));
118
119 MOCK_METHOD1(TransferActiveWheelFlingAnimation, 117 MOCK_METHOD1(TransferActiveWheelFlingAnimation,
120 void(const WebActiveWheelFlingParameters&)); 118 void(const WebActiveWheelFlingParameters&));
121 119
122 virtual WebKit::WebGestureCurve* CreateFlingAnimationCurve( 120 virtual WebKit::WebGestureCurve* CreateFlingAnimationCurve(
123 int deviceSource, 121 int deviceSource,
124 const WebFloatPoint& velocity, 122 const WebFloatPoint& velocity,
125 const WebSize& cumulative_scroll) OVERRIDE { 123 const WebSize& cumulative_scroll) OVERRIDE {
126 return new FakeWebGestureCurve(velocity, cumulative_scroll); 124 return new FakeWebGestureCurve(velocity, cumulative_scroll);
127 } 125 }
128 126
129 virtual void DidOverscroll(gfx::Vector2dF overscroll, 127 virtual void DidOverscroll(gfx::Vector2dF overscroll,
130 gfx::Vector2dF fling_velocity) {} 128 gfx::Vector2dF fling_velocity) {}
131 129
132 private: 130 private:
133 DISALLOW_COPY_AND_ASSIGN(MockInputHandlerProxyClient); 131 DISALLOW_COPY_AND_ASSIGN(MockInputHandlerProxyClient);
134 }; 132 };
135 133
136 class InputHandlerProxyTest : public testing::Test { 134 class InputHandlerProxyTest : public testing::Test {
137 public: 135 public:
138 InputHandlerProxyTest() : expected_disposition_(DidHandle) { 136 InputHandlerProxyTest()
137 : expected_disposition_(InputHandlerProxy::DID_HANDLE) {
139 input_handler_.reset( 138 input_handler_.reset(
140 new content::InputHandlerProxy(&mock_input_handler_)); 139 new content::InputHandlerProxy(&mock_input_handler_));
141 input_handler_->SetClient(&mock_client_); 140 input_handler_->SetClient(&mock_client_);
142 } 141 }
143 142
144 ~InputHandlerProxyTest() { 143 ~InputHandlerProxyTest() {
145 input_handler_.reset(); 144 input_handler_.reset();
146 } 145 }
147 146
148 // This is defined as a macro because when an expectation is not satisfied the 147 // This is defined as a macro because when an expectation is not satisfied the
149 // only output you get 148 // only output you get
150 // out of gmock is the line number that set the expectation. 149 // out of gmock is the line number that set the expectation.
151 #define VERIFY_AND_RESET_MOCKS() \ 150 #define VERIFY_AND_RESET_MOCKS() \
152 do { \ 151 do { \
153 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); \ 152 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); \
154 testing::Mock::VerifyAndClearExpectations(&mock_client_); \ 153 testing::Mock::VerifyAndClearExpectations(&mock_client_); \
155 switch (expected_disposition_) { \
156 case DidHandle: \
157 /* If we expect to handle events, we shouldn't get any */ \
158 /* DidNotHandleInputEvent() calls with any parameter. */ \
159 EXPECT_CALL(mock_client_, DidNotHandleInputEvent(::testing::_)) \
160 .Times(0); \
161 EXPECT_CALL(mock_client_, DidHandleInputEvent()); \
162 break; \
163 case DidNotHandle: \
164 /* If we aren't expecting to handle events, we shouldn't call */ \
165 /* DidHandleInputEvent(). */ \
166 EXPECT_CALL(mock_client_, DidHandleInputEvent()).Times(0); \
167 EXPECT_CALL(mock_client_, DidNotHandleInputEvent(false)).Times(0); \
168 EXPECT_CALL(mock_client_, DidNotHandleInputEvent(true)); \
169 break; \
170 case DropEvent: \
171 /* If we're expecting to drop, we shouldn't get any didHandle..() */ \
172 /* or DidNotHandleInputEvent(true) calls. */ \
173 EXPECT_CALL(mock_client_, DidHandleInputEvent()).Times(0); \
174 EXPECT_CALL(mock_client_, DidNotHandleInputEvent(true)).Times(0); \
175 EXPECT_CALL(mock_client_, DidNotHandleInputEvent(false)); \
176 break; \
177 } \
178 } while (false) 154 } while (false)
179 155
180 protected: 156 protected:
181 testing::StrictMock<MockInputHandler> mock_input_handler_; 157 testing::StrictMock<MockInputHandler> mock_input_handler_;
182 scoped_ptr<content::InputHandlerProxy> input_handler_; 158 scoped_ptr<content::InputHandlerProxy> input_handler_;
183 testing::StrictMock<MockInputHandlerProxyClient> mock_client_; 159 testing::StrictMock<MockInputHandlerProxyClient> mock_client_;
184 WebGestureEvent gesture_; 160 WebGestureEvent gesture_;
185 161
186 enum ExpectedDisposition { 162 InputHandlerProxy::EventDisposition expected_disposition_;
187 DidHandle,
188 DidNotHandle,
189 DropEvent
190 };
191 ExpectedDisposition expected_disposition_;
192 }; 163 };
193 164
194 TEST_F(InputHandlerProxyTest, MouseWheelByPageMainThread) { 165 TEST_F(InputHandlerProxyTest, MouseWheelByPageMainThread) {
166 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
195 WebMouseWheelEvent wheel; 167 WebMouseWheelEvent wheel;
196 wheel.type = WebInputEvent::MouseWheel; 168 wheel.type = WebInputEvent::MouseWheel;
197 wheel.scrollByPage = true; 169 wheel.scrollByPage = true;
198 170
199 EXPECT_CALL(mock_client_, DidNotHandleInputEvent(true)).Times(1); 171 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(wheel));
200 input_handler_->HandleInputEvent(wheel);
201 testing::Mock::VerifyAndClearExpectations(&mock_client_); 172 testing::Mock::VerifyAndClearExpectations(&mock_client_);
202 } 173 }
203 174
204 TEST_F(InputHandlerProxyTest, GestureScrollStarted) { 175 TEST_F(InputHandlerProxyTest, GestureScrollStarted) {
205 // We shouldn't send any events to the widget for this gesture. 176 // We shouldn't send any events to the widget for this gesture.
206 expected_disposition_ = DidHandle; 177 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
207 VERIFY_AND_RESET_MOCKS(); 178 VERIFY_AND_RESET_MOCKS();
208 179
209 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 180 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
210 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 181 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
211 182
212 gesture_.type = WebInputEvent::GestureScrollBegin; 183 gesture_.type = WebInputEvent::GestureScrollBegin;
213 input_handler_->HandleInputEvent(gesture_); 184 EXPECT_EQ(expected_disposition_,input_handler_->HandleInputEvent(gesture_));
214 185
215 // The event should not be marked as handled if scrolling is not possible. 186 // The event should not be marked as handled if scrolling is not possible.
216 expected_disposition_ = DropEvent; 187 expected_disposition_ = InputHandlerProxy::DROP_EVENT;
217 VERIFY_AND_RESET_MOCKS(); 188 VERIFY_AND_RESET_MOCKS();
218 189
219 gesture_.type = WebInputEvent::GestureScrollUpdate; 190 gesture_.type = WebInputEvent::GestureScrollUpdate;
220 gesture_.data.scrollUpdate.deltaY = 191 gesture_.data.scrollUpdate.deltaY =
221 -40; // -Y means scroll down - i.e. in the +Y direction. 192 -40; // -Y means scroll down - i.e. in the +Y direction.
222 EXPECT_CALL(mock_input_handler_, 193 EXPECT_CALL(mock_input_handler_,
223 ScrollBy(testing::_, 194 ScrollBy(testing::_,
224 testing::Property(&gfx::Vector2dF::y, testing::Gt(0)))) 195 testing::Property(&gfx::Vector2dF::y, testing::Gt(0))))
225 .WillOnce(testing::Return(false)); 196 .WillOnce(testing::Return(false));
226 input_handler_->HandleInputEvent(gesture_); 197 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
227 198
228 // Mark the event as handled if scroll happens. 199 // Mark the event as handled if scroll happens.
229 expected_disposition_ = DidHandle; 200 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
230 VERIFY_AND_RESET_MOCKS(); 201 VERIFY_AND_RESET_MOCKS();
231 202
232 gesture_.type = WebInputEvent::GestureScrollUpdate; 203 gesture_.type = WebInputEvent::GestureScrollUpdate;
233 gesture_.data.scrollUpdate.deltaY = 204 gesture_.data.scrollUpdate.deltaY =
234 -40; // -Y means scroll down - i.e. in the +Y direction. 205 -40; // -Y means scroll down - i.e. in the +Y direction.
235 EXPECT_CALL(mock_input_handler_, 206 EXPECT_CALL(mock_input_handler_,
236 ScrollBy(testing::_, 207 ScrollBy(testing::_,
237 testing::Property(&gfx::Vector2dF::y, testing::Gt(0)))) 208 testing::Property(&gfx::Vector2dF::y, testing::Gt(0))))
238 .WillOnce(testing::Return(true)); 209 .WillOnce(testing::Return(true));
239 input_handler_->HandleInputEvent(gesture_); 210 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
240 211
241 VERIFY_AND_RESET_MOCKS(); 212 VERIFY_AND_RESET_MOCKS();
242 213
243 gesture_.type = WebInputEvent::GestureScrollEnd; 214 gesture_.type = WebInputEvent::GestureScrollEnd;
244 gesture_.data.scrollUpdate.deltaY = 0; 215 gesture_.data.scrollUpdate.deltaY = 0;
245 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 216 EXPECT_CALL(mock_input_handler_, ScrollEnd());
246 input_handler_->HandleInputEvent(gesture_); 217 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
247 } 218 }
248 219
249 TEST_F(InputHandlerProxyTest, GestureScrollOnMainThread) { 220 TEST_F(InputHandlerProxyTest, GestureScrollOnMainThread) {
250 // We should send all events to the widget for this gesture. 221 // We should send all events to the widget for this gesture.
251 expected_disposition_ = DidNotHandle; 222 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
252 VERIFY_AND_RESET_MOCKS(); 223 VERIFY_AND_RESET_MOCKS();
253 224
254 EXPECT_CALL(mock_input_handler_, ScrollBegin(::testing::_, ::testing::_)) 225 EXPECT_CALL(mock_input_handler_, ScrollBegin(::testing::_, ::testing::_))
255 .WillOnce(testing::Return(cc::InputHandler::ScrollOnMainThread)); 226 .WillOnce(testing::Return(cc::InputHandler::ScrollOnMainThread));
256 227
257 gesture_.type = WebInputEvent::GestureScrollBegin; 228 gesture_.type = WebInputEvent::GestureScrollBegin;
258 input_handler_->HandleInputEvent(gesture_); 229 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
259 230
260 VERIFY_AND_RESET_MOCKS(); 231 VERIFY_AND_RESET_MOCKS();
261 232
262 gesture_.type = WebInputEvent::GestureScrollUpdate; 233 gesture_.type = WebInputEvent::GestureScrollUpdate;
263 gesture_.data.scrollUpdate.deltaY = 40; 234 gesture_.data.scrollUpdate.deltaY = 40;
264 input_handler_->HandleInputEvent(gesture_); 235 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
265 236
266 VERIFY_AND_RESET_MOCKS(); 237 VERIFY_AND_RESET_MOCKS();
267 238
268 gesture_.type = WebInputEvent::GestureScrollEnd; 239 gesture_.type = WebInputEvent::GestureScrollEnd;
269 gesture_.data.scrollUpdate.deltaY = 0; 240 gesture_.data.scrollUpdate.deltaY = 0;
270 input_handler_->HandleInputEvent(gesture_); 241 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
271 } 242 }
272 243
273 TEST_F(InputHandlerProxyTest, GestureScrollIgnored) { 244 TEST_F(InputHandlerProxyTest, GestureScrollIgnored) {
274 // We shouldn't handle the GestureScrollBegin. 245 // We shouldn't handle the GestureScrollBegin.
275 // Instead, we should get one DidNotHandleInputEvent(false) call per 246 // Instead, we should get a DROP_EVENT result, indicating
276 // HandleInputEvent(), indicating that we could determine that there's nothing 247 // that we could determine that there's nothing that could scroll or otherwise
277 // that could scroll or otherwise react to this gesture sequence and thus we 248 // react to this gesture sequence and thus we should drop the whole gesture
278 // should drop the whole gesture sequence on the floor. 249 // sequence on the floor.
279 expected_disposition_ = DropEvent; 250 expected_disposition_ = InputHandlerProxy::DROP_EVENT;
280 VERIFY_AND_RESET_MOCKS(); 251 VERIFY_AND_RESET_MOCKS();
281 252
282 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 253 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
283 .WillOnce(testing::Return(cc::InputHandler::ScrollIgnored)); 254 .WillOnce(testing::Return(cc::InputHandler::ScrollIgnored));
284 255
285 gesture_.type = WebInputEvent::GestureScrollBegin; 256 gesture_.type = WebInputEvent::GestureScrollBegin;
286 input_handler_->HandleInputEvent(gesture_); 257 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
287 } 258 }
288 259
289 TEST_F(InputHandlerProxyTest, GesturePinch) { 260 TEST_F(InputHandlerProxyTest, GesturePinch) {
290 // We shouldn't send any events to the widget for this gesture. 261 // We shouldn't send any events to the widget for this gesture.
291 expected_disposition_ = DidHandle; 262 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
292 VERIFY_AND_RESET_MOCKS(); 263 VERIFY_AND_RESET_MOCKS();
293 264
294 gesture_.type = WebInputEvent::GesturePinchBegin; 265 gesture_.type = WebInputEvent::GesturePinchBegin;
295 EXPECT_CALL(mock_input_handler_, PinchGestureBegin()); 266 EXPECT_CALL(mock_input_handler_, PinchGestureBegin());
296 input_handler_->HandleInputEvent(gesture_); 267 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
297 268
298 VERIFY_AND_RESET_MOCKS(); 269 VERIFY_AND_RESET_MOCKS();
299 270
300 gesture_.type = WebInputEvent::GesturePinchUpdate; 271 gesture_.type = WebInputEvent::GesturePinchUpdate;
301 gesture_.data.pinchUpdate.scale = 1.5; 272 gesture_.data.pinchUpdate.scale = 1.5;
302 gesture_.x = 7; 273 gesture_.x = 7;
303 gesture_.y = 13; 274 gesture_.y = 13;
304 EXPECT_CALL(mock_input_handler_, PinchGestureUpdate(1.5, gfx::Point(7, 13))); 275 EXPECT_CALL(mock_input_handler_, PinchGestureUpdate(1.5, gfx::Point(7, 13)));
305 input_handler_->HandleInputEvent(gesture_); 276 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
306 277
307 VERIFY_AND_RESET_MOCKS(); 278 VERIFY_AND_RESET_MOCKS();
308 279
309 gesture_.type = WebInputEvent::GesturePinchUpdate; 280 gesture_.type = WebInputEvent::GesturePinchUpdate;
310 gesture_.data.pinchUpdate.scale = 0.5; 281 gesture_.data.pinchUpdate.scale = 0.5;
311 gesture_.x = 9; 282 gesture_.x = 9;
312 gesture_.y = 6; 283 gesture_.y = 6;
313 EXPECT_CALL(mock_input_handler_, PinchGestureUpdate(.5, gfx::Point(9, 6))); 284 EXPECT_CALL(mock_input_handler_, PinchGestureUpdate(.5, gfx::Point(9, 6)));
314 input_handler_->HandleInputEvent(gesture_); 285 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
315 286
316 VERIFY_AND_RESET_MOCKS(); 287 VERIFY_AND_RESET_MOCKS();
317 288
318 gesture_.type = WebInputEvent::GesturePinchEnd; 289 gesture_.type = WebInputEvent::GesturePinchEnd;
319 EXPECT_CALL(mock_input_handler_, PinchGestureEnd()); 290 EXPECT_CALL(mock_input_handler_, PinchGestureEnd());
320 input_handler_->HandleInputEvent(gesture_); 291 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
321 } 292 }
322 293
323 TEST_F(InputHandlerProxyTest, GesturePinchAfterScrollOnMainThread) { 294 TEST_F(InputHandlerProxyTest, GesturePinchAfterScrollOnMainThread) {
324 // Scrolls will start by being sent to the main thread. 295 // Scrolls will start by being sent to the main thread.
325 expected_disposition_ = DidNotHandle; 296 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
326 VERIFY_AND_RESET_MOCKS(); 297 VERIFY_AND_RESET_MOCKS();
327 298
328 EXPECT_CALL(mock_input_handler_, ScrollBegin(::testing::_, ::testing::_)) 299 EXPECT_CALL(mock_input_handler_, ScrollBegin(::testing::_, ::testing::_))
329 .WillOnce(testing::Return(cc::InputHandler::ScrollOnMainThread)); 300 .WillOnce(testing::Return(cc::InputHandler::ScrollOnMainThread));
330 301
331 gesture_.type = WebInputEvent::GestureScrollBegin; 302 gesture_.type = WebInputEvent::GestureScrollBegin;
332 input_handler_->HandleInputEvent(gesture_); 303 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
333 304
334 VERIFY_AND_RESET_MOCKS(); 305 VERIFY_AND_RESET_MOCKS();
335 306
336 gesture_.type = WebInputEvent::GestureScrollUpdate; 307 gesture_.type = WebInputEvent::GestureScrollUpdate;
337 gesture_.data.scrollUpdate.deltaY = 40; 308 gesture_.data.scrollUpdate.deltaY = 40;
338 input_handler_->HandleInputEvent(gesture_); 309 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
339 310
340 // However, after the pinch gesture starts, they should go to the impl 311 // However, after the pinch gesture starts, they should go to the impl
341 // thread. 312 // thread.
342 expected_disposition_ = DidHandle; 313 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
343 VERIFY_AND_RESET_MOCKS(); 314 VERIFY_AND_RESET_MOCKS();
344 315
345 gesture_.type = WebInputEvent::GesturePinchBegin; 316 gesture_.type = WebInputEvent::GesturePinchBegin;
346 EXPECT_CALL(mock_input_handler_, PinchGestureBegin()); 317 EXPECT_CALL(mock_input_handler_, PinchGestureBegin());
347 input_handler_->HandleInputEvent(gesture_); 318 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
348 319
349 VERIFY_AND_RESET_MOCKS(); 320 VERIFY_AND_RESET_MOCKS();
350 321
351 gesture_.type = WebInputEvent::GesturePinchUpdate; 322 gesture_.type = WebInputEvent::GesturePinchUpdate;
352 gesture_.data.pinchUpdate.scale = 1.5; 323 gesture_.data.pinchUpdate.scale = 1.5;
353 gesture_.x = 7; 324 gesture_.x = 7;
354 gesture_.y = 13; 325 gesture_.y = 13;
355 EXPECT_CALL(mock_input_handler_, PinchGestureUpdate(1.5, gfx::Point(7, 13))); 326 EXPECT_CALL(mock_input_handler_, PinchGestureUpdate(1.5, gfx::Point(7, 13)));
356 input_handler_->HandleInputEvent(gesture_); 327 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
357 328
358 VERIFY_AND_RESET_MOCKS(); 329 VERIFY_AND_RESET_MOCKS();
359 330
360 gesture_.type = WebInputEvent::GestureScrollUpdate; 331 gesture_.type = WebInputEvent::GestureScrollUpdate;
361 gesture_.data.scrollUpdate.deltaY = 332 gesture_.data.scrollUpdate.deltaY =
362 -40; // -Y means scroll down - i.e. in the +Y direction. 333 -40; // -Y means scroll down - i.e. in the +Y direction.
363 EXPECT_CALL(mock_input_handler_, 334 EXPECT_CALL(mock_input_handler_,
364 ScrollBy(testing::_, 335 ScrollBy(testing::_,
365 testing::Property(&gfx::Vector2dF::y, testing::Gt(0)))) 336 testing::Property(&gfx::Vector2dF::y, testing::Gt(0))))
366 .WillOnce(testing::Return(true)); 337 .WillOnce(testing::Return(true));
367 input_handler_->HandleInputEvent(gesture_); 338 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
368 339
369 VERIFY_AND_RESET_MOCKS(); 340 VERIFY_AND_RESET_MOCKS();
370 341
371 gesture_.type = WebInputEvent::GesturePinchUpdate; 342 gesture_.type = WebInputEvent::GesturePinchUpdate;
372 gesture_.data.pinchUpdate.scale = 0.5; 343 gesture_.data.pinchUpdate.scale = 0.5;
373 gesture_.x = 9; 344 gesture_.x = 9;
374 gesture_.y = 6; 345 gesture_.y = 6;
375 EXPECT_CALL(mock_input_handler_, PinchGestureUpdate(.5, gfx::Point(9, 6))); 346 EXPECT_CALL(mock_input_handler_, PinchGestureUpdate(.5, gfx::Point(9, 6)));
376 input_handler_->HandleInputEvent(gesture_); 347 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
377 348
378 VERIFY_AND_RESET_MOCKS(); 349 VERIFY_AND_RESET_MOCKS();
379 350
380 gesture_.type = WebInputEvent::GesturePinchEnd; 351 gesture_.type = WebInputEvent::GesturePinchEnd;
381 EXPECT_CALL(mock_input_handler_, PinchGestureEnd()); 352 EXPECT_CALL(mock_input_handler_, PinchGestureEnd());
382 input_handler_->HandleInputEvent(gesture_); 353 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
383 354
384 // After the pinch gesture ends, they should go to back to the main 355 // After the pinch gesture ends, they should go to back to the main
385 // thread. 356 // thread.
386 expected_disposition_ = DidNotHandle; 357 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
387 VERIFY_AND_RESET_MOCKS(); 358 VERIFY_AND_RESET_MOCKS();
388 359
389 gesture_.type = WebInputEvent::GestureScrollEnd; 360 gesture_.type = WebInputEvent::GestureScrollEnd;
390 gesture_.data.scrollUpdate.deltaY = 0; 361 gesture_.data.scrollUpdate.deltaY = 0;
391 input_handler_->HandleInputEvent(gesture_); 362 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
392 } 363 }
393 364
394 TEST_F(InputHandlerProxyTest, GestureFlingStartedTouchpad) { 365 TEST_F(InputHandlerProxyTest, GestureFlingStartedTouchpad) {
395 // We shouldn't send any events to the widget for this gesture. 366 // We shouldn't send any events to the widget for this gesture.
396 expected_disposition_ = DidHandle; 367 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
397 VERIFY_AND_RESET_MOCKS(); 368 VERIFY_AND_RESET_MOCKS();
398 369
399 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 370 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
400 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 371 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
401 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 372 EXPECT_CALL(mock_input_handler_, ScrollEnd());
402 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 373 EXPECT_CALL(mock_input_handler_, ScheduleAnimation());
403 374
404 gesture_.type = WebInputEvent::GestureFlingStart; 375 gesture_.type = WebInputEvent::GestureFlingStart;
405 gesture_.data.flingStart.velocityX = 10; 376 gesture_.data.flingStart.velocityX = 10;
406 gesture_.sourceDevice = WebGestureEvent::Touchpad; 377 gesture_.sourceDevice = WebGestureEvent::Touchpad;
407 input_handler_->HandleInputEvent(gesture_); 378 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
408 379
409 VERIFY_AND_RESET_MOCKS(); 380 VERIFY_AND_RESET_MOCKS();
410 381
411 // Verify that a GestureFlingCancel during an animation cancels it. 382 // Verify that a GestureFlingCancel during an animation cancels it.
412 gesture_.type = WebInputEvent::GestureFlingCancel; 383 gesture_.type = WebInputEvent::GestureFlingCancel;
413 gesture_.sourceDevice = WebGestureEvent::Touchpad; 384 gesture_.sourceDevice = WebGestureEvent::Touchpad;
414 input_handler_->HandleInputEvent(gesture_); 385 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
415 } 386 }
416 387
417 TEST_F(InputHandlerProxyTest, GestureFlingOnMainThreadTouchpad) { 388 TEST_F(InputHandlerProxyTest, GestureFlingOnMainThreadTouchpad) {
418 // We should send all events to the widget for this gesture. 389 // We should send all events to the widget for this gesture.
419 expected_disposition_ = DidNotHandle; 390 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
420 VERIFY_AND_RESET_MOCKS(); 391 VERIFY_AND_RESET_MOCKS();
421 392
422 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 393 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
423 .WillOnce(testing::Return(cc::InputHandler::ScrollOnMainThread)); 394 .WillOnce(testing::Return(cc::InputHandler::ScrollOnMainThread));
424 395
425 gesture_.type = WebInputEvent::GestureFlingStart; 396 gesture_.type = WebInputEvent::GestureFlingStart;
426 gesture_.sourceDevice = WebGestureEvent::Touchpad; 397 gesture_.sourceDevice = WebGestureEvent::Touchpad;
427 input_handler_->HandleInputEvent(gesture_); 398 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
428 399
429 // Since we returned ScrollStatusOnMainThread from scrollBegin, ensure the 400 // Since we returned ScrollStatusOnMainThread from scrollBegin, ensure the
430 // input handler knows it's scrolling off the impl thread 401 // input handler knows it's scrolling off the impl thread
431 ASSERT_FALSE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 402 ASSERT_FALSE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
432 403
433 VERIFY_AND_RESET_MOCKS(); 404 VERIFY_AND_RESET_MOCKS();
434 405
435 // Even if we didn't start a fling ourselves, we still need to send the cancel 406 // Even if we didn't start a fling ourselves, we still need to send the cancel
436 // event to the widget. 407 // event to the widget.
437 gesture_.type = WebInputEvent::GestureFlingCancel; 408 gesture_.type = WebInputEvent::GestureFlingCancel;
438 gesture_.sourceDevice = WebGestureEvent::Touchpad; 409 gesture_.sourceDevice = WebGestureEvent::Touchpad;
439 input_handler_->HandleInputEvent(gesture_); 410 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
440 } 411 }
441 412
442 TEST_F(InputHandlerProxyTest, GestureFlingIgnoredTouchpad) { 413 TEST_F(InputHandlerProxyTest, GestureFlingIgnoredTouchpad) {
443 expected_disposition_ = DidNotHandle; 414 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
444 VERIFY_AND_RESET_MOCKS(); 415 VERIFY_AND_RESET_MOCKS();
445 416
446 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 417 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
447 .WillOnce(testing::Return(cc::InputHandler::ScrollIgnored)); 418 .WillOnce(testing::Return(cc::InputHandler::ScrollIgnored));
448 419
449 gesture_.type = WebInputEvent::GestureFlingStart; 420 gesture_.type = WebInputEvent::GestureFlingStart;
450 gesture_.sourceDevice = WebGestureEvent::Touchpad; 421 gesture_.sourceDevice = WebGestureEvent::Touchpad;
451 input_handler_->HandleInputEvent(gesture_); 422 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
452 423
453 expected_disposition_ = DropEvent; 424 expected_disposition_ = InputHandlerProxy::DROP_EVENT;
454 VERIFY_AND_RESET_MOCKS(); 425 VERIFY_AND_RESET_MOCKS();
455 426
456 // Since the previous fling was ignored, we should also be dropping the next 427 // Since the previous fling was ignored, we should also be dropping the next
457 // fling_cancel. 428 // fling_cancel.
458 gesture_.type = WebInputEvent::GestureFlingCancel; 429 gesture_.type = WebInputEvent::GestureFlingCancel;
459 gesture_.sourceDevice = WebGestureEvent::Touchpad; 430 gesture_.sourceDevice = WebGestureEvent::Touchpad;
460 input_handler_->HandleInputEvent(gesture_); 431 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
461 } 432 }
462 433
463 TEST_F(InputHandlerProxyTest, GestureFlingAnimatesTouchpad) { 434 TEST_F(InputHandlerProxyTest, GestureFlingAnimatesTouchpad) {
464 // We shouldn't send any events to the widget for this gesture. 435 // We shouldn't send any events to the widget for this gesture.
465 expected_disposition_ = DidHandle; 436 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
466 VERIFY_AND_RESET_MOCKS(); 437 VERIFY_AND_RESET_MOCKS();
467 438
468 // On the fling start, we should schedule an animation but not actually start 439 // On the fling start, we should schedule an animation but not actually start
469 // scrolling. 440 // scrolling.
470 gesture_.type = WebInputEvent::GestureFlingStart; 441 gesture_.type = WebInputEvent::GestureFlingStart;
471 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); 442 WebFloatPoint fling_delta = WebFloatPoint(1000, 0);
472 WebPoint fling_point = WebPoint(7, 13); 443 WebPoint fling_point = WebPoint(7, 13);
473 WebPoint fling_global_point = WebPoint(17, 23); 444 WebPoint fling_global_point = WebPoint(17, 23);
474 int modifiers = 7; 445 int modifiers = 7;
475 gesture_.data.flingStart.velocityX = fling_delta.x; 446 gesture_.data.flingStart.velocityX = fling_delta.x;
476 gesture_.data.flingStart.velocityY = fling_delta.y; 447 gesture_.data.flingStart.velocityY = fling_delta.y;
477 gesture_.sourceDevice = WebGestureEvent::Touchpad; 448 gesture_.sourceDevice = WebGestureEvent::Touchpad;
478 gesture_.x = fling_point.x; 449 gesture_.x = fling_point.x;
479 gesture_.y = fling_point.y; 450 gesture_.y = fling_point.y;
480 gesture_.globalX = fling_global_point.x; 451 gesture_.globalX = fling_global_point.x;
481 gesture_.globalY = fling_global_point.y; 452 gesture_.globalY = fling_global_point.y;
482 gesture_.modifiers = modifiers; 453 gesture_.modifiers = modifiers;
483 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 454 EXPECT_CALL(mock_input_handler_, ScheduleAnimation());
484 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 455 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
485 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 456 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
486 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 457 EXPECT_CALL(mock_input_handler_, ScrollEnd());
487 input_handler_->HandleInputEvent(gesture_); 458 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
488 459
489 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 460 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
490 // The first animate call should let us pick up an animation start time, but 461 // The first animate call should let us pick up an animation start time, but
491 // we shouldn't actually move anywhere just yet. The first frame after the 462 // we shouldn't actually move anywhere just yet. The first frame after the
492 // fling start will typically include the last scroll from the gesture that 463 // fling start will typically include the last scroll from the gesture that
493 // lead to the scroll (either wheel or gesture scroll), so there should be no 464 // lead to the scroll (either wheel or gesture scroll), so there should be no
494 // visible hitch. 465 // visible hitch.
495 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 466 EXPECT_CALL(mock_input_handler_, ScheduleAnimation());
496 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 467 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
497 .Times(0); 468 .Times(0);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 // frame being requested. 528 // frame being requested.
558 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()).Times(0); 529 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()).Times(0);
559 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 530 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
560 .Times(0); 531 .Times(0);
561 time += base::TimeDelta::FromMilliseconds(100); 532 time += base::TimeDelta::FromMilliseconds(100);
562 input_handler_->Animate(time); 533 input_handler_->Animate(time);
563 534
564 // Since we've transferred the fling to the main thread, we need to pass the 535 // Since we've transferred the fling to the main thread, we need to pass the
565 // next GestureFlingCancel to the main 536 // next GestureFlingCancel to the main
566 // thread as well. 537 // thread as well.
567 EXPECT_CALL(mock_client_, DidNotHandleInputEvent(true)); 538 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
568 gesture_.type = WebInputEvent::GestureFlingCancel; 539 gesture_.type = WebInputEvent::GestureFlingCancel;
569 input_handler_->HandleInputEvent(gesture_); 540 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
570 } 541 }
571 542
572 TEST_F(InputHandlerProxyTest, GestureFlingTransferResetsTouchpad) { 543 TEST_F(InputHandlerProxyTest, GestureFlingTransferResetsTouchpad) {
573 // We shouldn't send any events to the widget for this gesture. 544 // We shouldn't send any events to the widget for this gesture.
574 expected_disposition_ = DidHandle; 545 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
575 VERIFY_AND_RESET_MOCKS(); 546 VERIFY_AND_RESET_MOCKS();
576 547
577 // Start a gesture fling in the -X direction with zero Y movement. 548 // Start a gesture fling in the -X direction with zero Y movement.
578 gesture_.type = WebInputEvent::GestureFlingStart; 549 gesture_.type = WebInputEvent::GestureFlingStart;
579 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); 550 WebFloatPoint fling_delta = WebFloatPoint(1000, 0);
580 WebPoint fling_point = WebPoint(7, 13); 551 WebPoint fling_point = WebPoint(7, 13);
581 WebPoint fling_global_point = WebPoint(17, 23); 552 WebPoint fling_global_point = WebPoint(17, 23);
582 int modifiers = 1; 553 int modifiers = 1;
583 gesture_.data.flingStart.velocityX = fling_delta.x; 554 gesture_.data.flingStart.velocityX = fling_delta.x;
584 gesture_.data.flingStart.velocityY = fling_delta.y; 555 gesture_.data.flingStart.velocityY = fling_delta.y;
585 gesture_.sourceDevice = WebGestureEvent::Touchpad; 556 gesture_.sourceDevice = WebGestureEvent::Touchpad;
586 gesture_.x = fling_point.x; 557 gesture_.x = fling_point.x;
587 gesture_.y = fling_point.y; 558 gesture_.y = fling_point.y;
588 gesture_.globalX = fling_global_point.x; 559 gesture_.globalX = fling_global_point.x;
589 gesture_.globalY = fling_global_point.y; 560 gesture_.globalY = fling_global_point.y;
590 gesture_.modifiers = modifiers; 561 gesture_.modifiers = modifiers;
591 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 562 EXPECT_CALL(mock_input_handler_, ScheduleAnimation());
592 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 563 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
593 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 564 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
594 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 565 EXPECT_CALL(mock_input_handler_, ScrollEnd());
595 input_handler_->HandleInputEvent(gesture_); 566 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
596 567
597 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 568 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
598 569
599 // Start the fling animation at time 10. This shouldn't actually scroll, just 570 // Start the fling animation at time 10. This shouldn't actually scroll, just
600 // establish a start time. 571 // establish a start time.
601 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 572 EXPECT_CALL(mock_input_handler_, ScheduleAnimation());
602 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 573 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
603 .Times(0); 574 .Times(0);
604 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10); 575 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10);
605 input_handler_->Animate(time); 576 input_handler_->Animate(time);
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
666 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 637 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
667 .Times(0); 638 .Times(0);
668 time += base::TimeDelta::FromMilliseconds(100); 639 time += base::TimeDelta::FromMilliseconds(100);
669 input_handler_->Animate(time); 640 input_handler_->Animate(time);
670 641
671 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 642 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
672 643
673 // Since we've transferred the fling to the main thread, we need to pass the 644 // Since we've transferred the fling to the main thread, we need to pass the
674 // next GestureFlingCancel to the main 645 // next GestureFlingCancel to the main
675 // thread as well. 646 // thread as well.
676 EXPECT_CALL(mock_client_, DidNotHandleInputEvent(true)); 647 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
677 gesture_.type = WebInputEvent::GestureFlingCancel; 648 gesture_.type = WebInputEvent::GestureFlingCancel;
678 input_handler_->HandleInputEvent(gesture_); 649 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
679 650
680 VERIFY_AND_RESET_MOCKS(); 651 VERIFY_AND_RESET_MOCKS();
681 input_handler_->MainThreadHasStoppedFlinging(); 652 input_handler_->MainThreadHasStoppedFlinging();
682 653
683 // Start a second gesture fling, this time in the +Y direction with no X. 654 // Start a second gesture fling, this time in the +Y direction with no X.
684 gesture_.type = WebInputEvent::GestureFlingStart; 655 gesture_.type = WebInputEvent::GestureFlingStart;
685 fling_delta = WebFloatPoint(0, -1000); 656 fling_delta = WebFloatPoint(0, -1000);
686 fling_point = WebPoint(95, 87); 657 fling_point = WebPoint(95, 87);
687 fling_global_point = WebPoint(32, 71); 658 fling_global_point = WebPoint(32, 71);
688 modifiers = 2; 659 modifiers = 2;
689 gesture_.data.flingStart.velocityX = fling_delta.x; 660 gesture_.data.flingStart.velocityX = fling_delta.x;
690 gesture_.data.flingStart.velocityY = fling_delta.y; 661 gesture_.data.flingStart.velocityY = fling_delta.y;
691 gesture_.sourceDevice = WebGestureEvent::Touchpad; 662 gesture_.sourceDevice = WebGestureEvent::Touchpad;
692 gesture_.x = fling_point.x; 663 gesture_.x = fling_point.x;
693 gesture_.y = fling_point.y; 664 gesture_.y = fling_point.y;
694 gesture_.globalX = fling_global_point.x; 665 gesture_.globalX = fling_global_point.x;
695 gesture_.globalY = fling_global_point.y; 666 gesture_.globalY = fling_global_point.y;
696 gesture_.modifiers = modifiers; 667 gesture_.modifiers = modifiers;
697 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 668 EXPECT_CALL(mock_input_handler_, ScheduleAnimation());
698 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 669 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
699 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 670 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
700 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 671 EXPECT_CALL(mock_input_handler_, ScrollEnd());
701 input_handler_->HandleInputEvent(gesture_); 672 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
673 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
702 674
703 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 675 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
704 676
705 // Start the second fling animation at time 30. 677 // Start the second fling animation at time 30.
706 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 678 EXPECT_CALL(mock_input_handler_, ScheduleAnimation());
707 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 679 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
708 .Times(0); 680 .Times(0);
709 time = base::TimeTicks() + base::TimeDelta::FromSeconds(30); 681 time = base::TimeTicks() + base::TimeDelta::FromSeconds(30);
710 input_handler_->Animate(time); 682 input_handler_->Animate(time);
711 683
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
748 testing::Field(&WebActiveWheelFlingParameters::startTime, 720 testing::Field(&WebActiveWheelFlingParameters::startTime,
749 testing::Eq(30)), 721 testing::Eq(30)),
750 testing::Field(&WebActiveWheelFlingParameters::cumulativeScroll, 722 testing::Field(&WebActiveWheelFlingParameters::cumulativeScroll,
751 testing::Field(&WebSize::height, testing::Lt(0)))))); 723 testing::Field(&WebSize::height, testing::Lt(0))))));
752 time += base::TimeDelta::FromMilliseconds(100); 724 time += base::TimeDelta::FromMilliseconds(100);
753 input_handler_->Animate(time); 725 input_handler_->Animate(time);
754 } 726 }
755 727
756 TEST_F(InputHandlerProxyTest, GestureFlingStartedTouchscreen) { 728 TEST_F(InputHandlerProxyTest, GestureFlingStartedTouchscreen) {
757 // We shouldn't send any events to the widget for this gesture. 729 // We shouldn't send any events to the widget for this gesture.
758 expected_disposition_ = DidHandle; 730 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
759 VERIFY_AND_RESET_MOCKS(); 731 VERIFY_AND_RESET_MOCKS();
760 732
761 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 733 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
762 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 734 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
763 gesture_.type = WebInputEvent::GestureScrollBegin; 735 gesture_.type = WebInputEvent::GestureScrollBegin;
764 gesture_.sourceDevice = WebGestureEvent::Touchscreen; 736 gesture_.sourceDevice = WebGestureEvent::Touchscreen;
765 input_handler_->HandleInputEvent(gesture_); 737 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
766 738
767 VERIFY_AND_RESET_MOCKS(); 739 VERIFY_AND_RESET_MOCKS();
768 740
769 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) 741 EXPECT_CALL(mock_input_handler_, FlingScrollBegin())
770 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 742 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
771 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 743 EXPECT_CALL(mock_input_handler_, ScheduleAnimation());
772 744
773 gesture_.type = WebInputEvent::GestureFlingStart; 745 gesture_.type = WebInputEvent::GestureFlingStart;
774 gesture_.data.flingStart.velocityX = 10; 746 gesture_.data.flingStart.velocityX = 10;
775 gesture_.sourceDevice = WebGestureEvent::Touchscreen; 747 gesture_.sourceDevice = WebGestureEvent::Touchscreen;
776 input_handler_->HandleInputEvent(gesture_); 748 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
777 749
778 VERIFY_AND_RESET_MOCKS(); 750 VERIFY_AND_RESET_MOCKS();
779 751
780 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 752 EXPECT_CALL(mock_input_handler_, ScrollEnd());
781 753
782 // Verify that a GestureFlingCancel during an animation cancels it. 754 // Verify that a GestureFlingCancel during an animation cancels it.
783 gesture_.type = WebInputEvent::GestureFlingCancel; 755 gesture_.type = WebInputEvent::GestureFlingCancel;
784 gesture_.sourceDevice = WebGestureEvent::Touchscreen; 756 gesture_.sourceDevice = WebGestureEvent::Touchscreen;
785 input_handler_->HandleInputEvent(gesture_); 757 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
786 } 758 }
787 759
788 TEST_F(InputHandlerProxyTest, GestureFlingOnMainThreadTouchscreen) { 760 TEST_F(InputHandlerProxyTest, GestureFlingOnMainThreadTouchscreen) {
789 // We should send all events to the widget for this gesture. 761 // We should send all events to the widget for this gesture.
790 expected_disposition_ = DidNotHandle; 762 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
791 VERIFY_AND_RESET_MOCKS(); 763 VERIFY_AND_RESET_MOCKS();
792 764
793 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 765 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
794 .WillOnce(testing::Return(cc::InputHandler::ScrollOnMainThread)); 766 .WillOnce(testing::Return(cc::InputHandler::ScrollOnMainThread));
795 767
796 gesture_.type = WebInputEvent::GestureScrollBegin; 768 gesture_.type = WebInputEvent::GestureScrollBegin;
797 input_handler_->HandleInputEvent(gesture_); 769 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
798 770
799 VERIFY_AND_RESET_MOCKS(); 771 VERIFY_AND_RESET_MOCKS();
800 772
801 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()).Times(0); 773 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()).Times(0);
802 774
803 gesture_.type = WebInputEvent::GestureFlingStart; 775 gesture_.type = WebInputEvent::GestureFlingStart;
804 gesture_.sourceDevice = WebGestureEvent::Touchscreen; 776 gesture_.sourceDevice = WebGestureEvent::Touchscreen;
805 input_handler_->HandleInputEvent(gesture_); 777 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
806 778
807 VERIFY_AND_RESET_MOCKS(); 779 VERIFY_AND_RESET_MOCKS();
808 780
809 // Even if we didn't start a fling ourselves, we still need to send the cancel 781 // Even if we didn't start a fling ourselves, we still need to send the cancel
810 // event to the widget. 782 // event to the widget.
811 gesture_.type = WebInputEvent::GestureFlingCancel; 783 gesture_.type = WebInputEvent::GestureFlingCancel;
812 gesture_.sourceDevice = WebGestureEvent::Touchscreen; 784 gesture_.sourceDevice = WebGestureEvent::Touchscreen;
813 input_handler_->HandleInputEvent(gesture_); 785 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
814 } 786 }
815 787
816 TEST_F(InputHandlerProxyTest, GestureFlingIgnoredTouchscreen) { 788 TEST_F(InputHandlerProxyTest, GestureFlingIgnoredTouchscreen) {
817 expected_disposition_ = DidHandle; 789 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
818 VERIFY_AND_RESET_MOCKS(); 790 VERIFY_AND_RESET_MOCKS();
819 791
820 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 792 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
821 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 793 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
822 794
823 gesture_.type = WebInputEvent::GestureScrollBegin; 795 gesture_.type = WebInputEvent::GestureScrollBegin;
824 gesture_.sourceDevice = WebGestureEvent::Touchscreen; 796 gesture_.sourceDevice = WebGestureEvent::Touchscreen;
825 input_handler_->HandleInputEvent(gesture_); 797 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
826 798
827 expected_disposition_ = DropEvent; 799 expected_disposition_ = InputHandlerProxy::DROP_EVENT;
828 VERIFY_AND_RESET_MOCKS(); 800 VERIFY_AND_RESET_MOCKS();
829 801
830 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) 802 EXPECT_CALL(mock_input_handler_, FlingScrollBegin())
831 .WillOnce(testing::Return(cc::InputHandler::ScrollIgnored)); 803 .WillOnce(testing::Return(cc::InputHandler::ScrollIgnored));
832 804
833 gesture_.type = WebInputEvent::GestureFlingStart; 805 gesture_.type = WebInputEvent::GestureFlingStart;
834 gesture_.sourceDevice = WebGestureEvent::Touchscreen; 806 gesture_.sourceDevice = WebGestureEvent::Touchscreen;
835 input_handler_->HandleInputEvent(gesture_); 807 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
836 808
837 VERIFY_AND_RESET_MOCKS(); 809 VERIFY_AND_RESET_MOCKS();
838 810
839 // Even if we didn't start a fling ourselves, we still need to send the cancel 811 // Even if we didn't start a fling ourselves, we still need to send the cancel
840 // event to the widget. 812 // event to the widget.
841 gesture_.type = WebInputEvent::GestureFlingCancel; 813 gesture_.type = WebInputEvent::GestureFlingCancel;
842 gesture_.sourceDevice = WebGestureEvent::Touchscreen; 814 gesture_.sourceDevice = WebGestureEvent::Touchscreen;
843 input_handler_->HandleInputEvent(gesture_); 815 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
844 } 816 }
845 817
846 TEST_F(InputHandlerProxyTest, GestureFlingAnimatesTouchscreen) { 818 TEST_F(InputHandlerProxyTest, GestureFlingAnimatesTouchscreen) {
847 // We shouldn't send any events to the widget for this gesture. 819 // We shouldn't send any events to the widget for this gesture.
848 expected_disposition_ = DidHandle; 820 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
849 VERIFY_AND_RESET_MOCKS(); 821 VERIFY_AND_RESET_MOCKS();
850 822
851 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 823 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
852 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 824 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
853 825
854 gesture_.type = WebInputEvent::GestureScrollBegin; 826 gesture_.type = WebInputEvent::GestureScrollBegin;
855 gesture_.sourceDevice = WebGestureEvent::Touchscreen; 827 gesture_.sourceDevice = WebGestureEvent::Touchscreen;
856 input_handler_->HandleInputEvent(gesture_); 828 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
857 829
858 VERIFY_AND_RESET_MOCKS(); 830 VERIFY_AND_RESET_MOCKS();
859 831
860 // On the fling start, we should schedule an animation but not actually start 832 // On the fling start, we should schedule an animation but not actually start
861 // scrolling. 833 // scrolling.
862 gesture_.type = WebInputEvent::GestureFlingStart; 834 gesture_.type = WebInputEvent::GestureFlingStart;
863 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); 835 WebFloatPoint fling_delta = WebFloatPoint(1000, 0);
864 WebPoint fling_point = WebPoint(7, 13); 836 WebPoint fling_point = WebPoint(7, 13);
865 WebPoint fling_global_point = WebPoint(17, 23); 837 WebPoint fling_global_point = WebPoint(17, 23);
866 int modifiers = 7; 838 int modifiers = 7;
867 gesture_.data.flingStart.velocityX = fling_delta.x; 839 gesture_.data.flingStart.velocityX = fling_delta.x;
868 gesture_.data.flingStart.velocityY = fling_delta.y; 840 gesture_.data.flingStart.velocityY = fling_delta.y;
869 gesture_.sourceDevice = WebGestureEvent::Touchscreen; 841 gesture_.sourceDevice = WebGestureEvent::Touchscreen;
870 gesture_.x = fling_point.x; 842 gesture_.x = fling_point.x;
871 gesture_.y = fling_point.y; 843 gesture_.y = fling_point.y;
872 gesture_.globalX = fling_global_point.x; 844 gesture_.globalX = fling_global_point.x;
873 gesture_.globalY = fling_global_point.y; 845 gesture_.globalY = fling_global_point.y;
874 gesture_.modifiers = modifiers; 846 gesture_.modifiers = modifiers;
875 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 847 EXPECT_CALL(mock_input_handler_, ScheduleAnimation());
876 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) 848 EXPECT_CALL(mock_input_handler_, FlingScrollBegin())
877 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 849 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
878 input_handler_->HandleInputEvent(gesture_); 850 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
879 851
880 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 852 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
881 // The first animate call should let us pick up an animation start time, but 853 // The first animate call should let us pick up an animation start time, but
882 // we shouldn't actually move anywhere just yet. The first frame after the 854 // we shouldn't actually move anywhere just yet. The first frame after the
883 // fling start will typically include the last scroll from the gesture that 855 // fling start will typically include the last scroll from the gesture that
884 // lead to the scroll (either wheel or gesture scroll), so there should be no 856 // lead to the scroll (either wheel or gesture scroll), so there should be no
885 // visible hitch. 857 // visible hitch.
886 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 858 EXPECT_CALL(mock_input_handler_, ScheduleAnimation());
887 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10); 859 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10);
888 input_handler_->Animate(time); 860 input_handler_->Animate(time);
889 861
890 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 862 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
891 863
892 // The second call should start scrolling in the -X direction. 864 // The second call should start scrolling in the -X direction.
893 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 865 EXPECT_CALL(mock_input_handler_, ScheduleAnimation());
894 EXPECT_CALL(mock_input_handler_, 866 EXPECT_CALL(mock_input_handler_,
895 ScrollBy(testing::_, 867 ScrollBy(testing::_,
896 testing::Property(&gfx::Vector2dF::x, testing::Lt(0)))) 868 testing::Property(&gfx::Vector2dF::x, testing::Lt(0))))
897 .WillOnce(testing::Return(true)); 869 .WillOnce(testing::Return(true));
898 time += base::TimeDelta::FromMilliseconds(100); 870 time += base::TimeDelta::FromMilliseconds(100);
899 input_handler_->Animate(time); 871 input_handler_->Animate(time);
900 872
901 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 873 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
902 874
903 EXPECT_CALL(mock_client_, DidHandleInputEvent());
904 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 875 EXPECT_CALL(mock_input_handler_, ScrollEnd());
905 gesture_.type = WebInputEvent::GestureFlingCancel; 876 gesture_.type = WebInputEvent::GestureFlingCancel;
906 input_handler_->HandleInputEvent(gesture_); 877 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
907 } 878 }
908 879
909 TEST_F(InputHandlerProxyTest, 880 TEST_F(InputHandlerProxyTest,
910 GestureScrollOnImplThreadFlagClearedAfterFling) { 881 GestureScrollOnImplThreadFlagClearedAfterFling) {
911 // We shouldn't send any events to the widget for this gesture. 882 // We shouldn't send any events to the widget for this gesture.
912 expected_disposition_ = DidHandle; 883 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
913 VERIFY_AND_RESET_MOCKS(); 884 VERIFY_AND_RESET_MOCKS();
914 885
915 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 886 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
916 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 887 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
917 888
918 gesture_.type = WebInputEvent::GestureScrollBegin; 889 gesture_.type = WebInputEvent::GestureScrollBegin;
919 input_handler_->HandleInputEvent(gesture_); 890 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
920 891
921 // After sending a GestureScrollBegin, the member variable 892 // After sending a GestureScrollBegin, the member variable
922 // |gesture_scroll_on_impl_thread_| should be true. 893 // |gesture_scroll_on_impl_thread_| should be true.
923 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 894 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
924 895
925 expected_disposition_ = DidHandle; 896 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
926 VERIFY_AND_RESET_MOCKS(); 897 VERIFY_AND_RESET_MOCKS();
927 898
928 // On the fling start, we should schedule an animation but not actually start 899 // On the fling start, we should schedule an animation but not actually start
929 // scrolling. 900 // scrolling.
930 gesture_.type = WebInputEvent::GestureFlingStart; 901 gesture_.type = WebInputEvent::GestureFlingStart;
931 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); 902 WebFloatPoint fling_delta = WebFloatPoint(1000, 0);
932 WebPoint fling_point = WebPoint(7, 13); 903 WebPoint fling_point = WebPoint(7, 13);
933 WebPoint fling_global_point = WebPoint(17, 23); 904 WebPoint fling_global_point = WebPoint(17, 23);
934 int modifiers = 7; 905 int modifiers = 7;
935 gesture_.data.flingStart.velocityX = fling_delta.x; 906 gesture_.data.flingStart.velocityX = fling_delta.x;
936 gesture_.data.flingStart.velocityY = fling_delta.y; 907 gesture_.data.flingStart.velocityY = fling_delta.y;
937 gesture_.sourceDevice = WebGestureEvent::Touchscreen; 908 gesture_.sourceDevice = WebGestureEvent::Touchscreen;
938 gesture_.x = fling_point.x; 909 gesture_.x = fling_point.x;
939 gesture_.y = fling_point.y; 910 gesture_.y = fling_point.y;
940 gesture_.globalX = fling_global_point.x; 911 gesture_.globalX = fling_global_point.x;
941 gesture_.globalY = fling_global_point.y; 912 gesture_.globalY = fling_global_point.y;
942 gesture_.modifiers = modifiers; 913 gesture_.modifiers = modifiers;
943 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 914 EXPECT_CALL(mock_input_handler_, ScheduleAnimation());
944 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) 915 EXPECT_CALL(mock_input_handler_, FlingScrollBegin())
945 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 916 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
946 input_handler_->HandleInputEvent(gesture_); 917 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
947 918
948 // |gesture_scroll_on_impl_thread_| should still be true after 919 // |gesture_scroll_on_impl_thread_| should still be true after
949 // a GestureFlingStart is sent. 920 // a GestureFlingStart is sent.
950 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 921 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
951 922
952 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 923 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
953 // The first animate call should let us pick up an animation start time, but 924 // The first animate call should let us pick up an animation start time, but
954 // we shouldn't actually move anywhere just yet. The first frame after the 925 // we shouldn't actually move anywhere just yet. The first frame after the
955 // fling start will typically include the last scroll from the gesture that 926 // fling start will typically include the last scroll from the gesture that
956 // lead to the scroll (either wheel or gesture scroll), so there should be no 927 // lead to the scroll (either wheel or gesture scroll), so there should be no
957 // visible hitch. 928 // visible hitch.
958 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 929 EXPECT_CALL(mock_input_handler_, ScheduleAnimation());
959 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10); 930 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10);
960 input_handler_->Animate(time); 931 input_handler_->Animate(time);
961 932
962 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 933 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
963 934
964 // The second call should start scrolling in the -X direction. 935 // The second call should start scrolling in the -X direction.
965 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 936 EXPECT_CALL(mock_input_handler_, ScheduleAnimation());
966 EXPECT_CALL(mock_input_handler_, 937 EXPECT_CALL(mock_input_handler_,
967 ScrollBy(testing::_, 938 ScrollBy(testing::_,
968 testing::Property(&gfx::Vector2dF::x, testing::Lt(0)))) 939 testing::Property(&gfx::Vector2dF::x, testing::Lt(0))))
969 .WillOnce(testing::Return(true)); 940 .WillOnce(testing::Return(true));
970 time += base::TimeDelta::FromMilliseconds(100); 941 time += base::TimeDelta::FromMilliseconds(100);
971 input_handler_->Animate(time); 942 input_handler_->Animate(time);
972 943
973 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 944 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
974 945
975 EXPECT_CALL(mock_client_, DidHandleInputEvent());
976 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 946 EXPECT_CALL(mock_input_handler_, ScrollEnd());
977 gesture_.type = WebInputEvent::GestureFlingCancel; 947 gesture_.type = WebInputEvent::GestureFlingCancel;
978 input_handler_->HandleInputEvent(gesture_); 948 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
979 949
980 // |gesture_scroll_on_impl_thread_| should be false once 950 // |gesture_scroll_on_impl_thread_| should be false once
981 // the fling has finished (note no GestureScrollEnd has been sent). 951 // the fling has finished (note no GestureScrollEnd has been sent).
982 EXPECT_TRUE(!input_handler_->gesture_scroll_on_impl_thread_for_testing()); 952 EXPECT_TRUE(!input_handler_->gesture_scroll_on_impl_thread_for_testing());
983 } 953 }
984 954
985 TEST_F(InputHandlerProxyTest, LastInputEventForVSync) { 955 TEST_F(InputHandlerProxyTest, LastInputEventForVSync) {
986 expected_disposition_ = DropEvent; 956 expected_disposition_ = InputHandlerProxy::DROP_EVENT;
987 VERIFY_AND_RESET_MOCKS(); 957 VERIFY_AND_RESET_MOCKS();
988 958
989 gesture_.type = WebInputEvent::GestureFlingCancel; 959 gesture_.type = WebInputEvent::GestureFlingCancel;
990 gesture_.timeStampSeconds = 1234; 960 gesture_.timeStampSeconds = 1234;
991 base::TimeTicks time = 961 base::TimeTicks time =
992 base::TimeTicks() + 962 base::TimeTicks() +
993 base::TimeDelta::FromSeconds(gesture_.timeStampSeconds); 963 base::TimeDelta::FromSeconds(gesture_.timeStampSeconds);
994 gesture_.modifiers |= WebInputEvent::IsLastInputEventForCurrentVSync; 964 gesture_.modifiers |= WebInputEvent::IsLastInputEventForCurrentVSync;
995 EXPECT_CALL(mock_input_handler_, DidReceiveLastInputEventForBeginFrame(time)); 965 EXPECT_CALL(mock_input_handler_, DidReceiveLastInputEventForBeginFrame(time));
996 input_handler_->HandleInputEvent(gesture_); 966 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
997 } 967 }
998 968
999 } // namespace 969 } // namespace
970 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/gpu/input_handler_proxy_client.h ('k') | content/renderer/gpu/input_handler_wrapper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698