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

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_aura_unittest.cc

Issue 2782733002: MouseWheelEventQueue sends scrollEnd right away when latching is disabled. (Closed)
Patch Set: review comments addressed. Created 3 years, 8 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
« no previous file with comments | « content/browser/renderer_host/input/mouse_wheel_event_queue_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/render_widget_host_view_aura.h" 5 #include "content/browser/renderer_host/render_widget_host_view_aura.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <tuple> 10 #include <tuple>
(...skipping 3202 matching lines...) Expand 10 before | Expand all | Expand 10 after
3213 // Simulate wheel events. 3213 // Simulate wheel events.
3214 SimulateWheelEvent(-5, 0, 0, false); // sent directly 3214 SimulateWheelEvent(-5, 0, 0, false); // sent directly
3215 SimulateWheelEvent(-60, 1, 0, false); // enqueued 3215 SimulateWheelEvent(-60, 1, 0, false); // enqueued
3216 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3216 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3217 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3217 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3218 3218
3219 // Receive ACK the first wheel event as not processed. 3219 // Receive ACK the first wheel event as not processed.
3220 SendInputEventACK(WebInputEvent::MouseWheel, 3220 SendInputEventACK(WebInputEvent::MouseWheel,
3221 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3221 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3222 3222
3223 // ScrollBegin, ScrollUpdate, MouseWheel will be queued events 3223 // ScrollBegin, ScrollUpdate, and MouseWheel will be queued events.
3224 EXPECT_EQ(3U, GetSentMessageCountAndResetSink()); 3224 EXPECT_EQ(3U, GetSentMessageCountAndResetSink());
3225 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 3225 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
3226 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3226 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3227 3227
3228 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3228 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3229 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 3229 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3230 // ScrollEnd will be the queued event.
3231 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3230 3232
3231 SendInputEventACK(WebInputEvent::MouseWheel, 3233 SendInputEventACK(WebInputEvent::MouseWheel,
3232 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3234 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3233 // ScrollUpdate, MouseWheel will be queued events 3235 // ScrollBegin and ScrollUpdate will be queued events.
3234 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3236 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
3235 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 3237 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
3236 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3238 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3237 3239
3238 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3240 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3239 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 3241 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3242 // ScrollEnd will be the queued event.
3243 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3240 } 3244 }
3241 3245
3242 TEST_F(RenderWidgetHostViewAuraOverscrollTest, WheelScrollEventOverscrolls) { 3246 TEST_F(RenderWidgetHostViewAuraOverscrollTest, WheelScrollEventOverscrolls) {
3243 SetUpOverscrollEnvironment(); 3247 SetUpOverscrollEnvironment();
3244 3248
3245 // Simulate wheel events. 3249 // Simulate wheel events.
3246 SimulateWheelEvent(-5, 0, 0, true); // sent directly 3250 SimulateWheelEvent(-5, 0, 0, true); // sent directly
3247 SimulateWheelEvent(-1, 1, 0, true); // enqueued 3251 SimulateWheelEvent(-1, 1, 0, true); // enqueued
3248 SimulateWheelEvent(-10, -3, 0, true); // coalesced into previous event 3252 SimulateWheelEvent(-10, -3, 0, true); // coalesced into previous event
3249 SimulateWheelEvent(-15, -1, 0, true); // coalesced into previous event 3253 SimulateWheelEvent(-15, -1, 0, true); // coalesced into previous event
3250 SimulateWheelEvent(-30, -3, 0, true); // coalesced into previous event 3254 SimulateWheelEvent(-30, -3, 0, true); // coalesced into previous event
3251 SimulateWheelEvent(-20, 6, 1, true); // enqueued, different modifiers 3255 SimulateWheelEvent(-20, 6, 1, true); // enqueued, different modifiers
3252 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3256 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3253 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3257 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3254 3258
3255 // Receive ACK the first wheel event as not processed. 3259 // Receive ACK the first wheel event as not processed.
3256 SendInputEventACK(WebInputEvent::MouseWheel, 3260 SendInputEventACK(WebInputEvent::MouseWheel,
3257 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3261 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3258 3262
3259 // ScrollBegin, ScrollUpdate, MouseWheel will be queued events 3263 // ScrollBegin, ScrollUpdate, and MouseWheel will be queued events.
3260 EXPECT_EQ(3U, GetSentMessageCountAndResetSink()); 3264 EXPECT_EQ(3U, GetSentMessageCountAndResetSink());
3261 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 3265 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
3262 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3266 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3263 3267
3264 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3268 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3265 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 3269 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3270 // ScrollEnd will be the queued event.
3271 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3266 3272
3267 // Receive ACK for the second (coalesced) event as not processed. This will 3273 // Receive ACK for the second (coalesced) event as not processed. This will
3268 // start a back navigation. However, this will also cause the queued next 3274 // start a back navigation. However, this will also cause the queued next
3269 // event to be sent to the renderer. But since overscroll navigation has 3275 // event to be sent to the renderer. But since overscroll navigation has
3270 // started, that event will also be included in the overscroll computation 3276 // started, that event will also be included in the overscroll computation
3271 // instead of being sent to the renderer. So the result will be an overscroll 3277 // instead of being sent to the renderer. So the result will be an overscroll
3272 // back navigation, and no event will be sent to the renderer. 3278 // back navigation, and no ScrollUpdate event will be sent to the renderer.
3273 SendInputEventACK(WebInputEvent::MouseWheel, 3279 SendInputEventACK(WebInputEvent::MouseWheel,
3274 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3280 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3275 // ScrollUpdate, MouseWheel will be queued events 3281 // ScrollBegin, ScrollUpdate, and MouseWheel will be queued events.
3276 EXPECT_EQ(2U, GetSentMessageCountAndResetSink()); 3282 EXPECT_EQ(3U, GetSentMessageCountAndResetSink());
3277 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 3283 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
3278 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3284 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3285 // ScrollEnd will be the queued event.
3286 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3287
3279 SendInputEventACK(WebInputEvent::MouseWheel, 3288 SendInputEventACK(WebInputEvent::MouseWheel,
3280 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3289 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3290 // ScrollBegin and ScrollEnd will be queued events.
3291 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
3281 3292
3282 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode()); 3293 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode());
3283 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode()); 3294 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode());
3284 EXPECT_EQ(-81.f, overscroll_delta_x()); 3295 EXPECT_EQ(-81.f, overscroll_delta_x());
3285 EXPECT_EQ(-31.f, overscroll_delegate()->delta_x()); 3296 EXPECT_EQ(-31.f, overscroll_delegate()->delta_x());
3286 EXPECT_EQ(0.f, overscroll_delegate()->delta_y()); 3297 EXPECT_EQ(0.f, overscroll_delegate()->delta_y());
3287 EXPECT_EQ(0U, sink_->message_count()); 3298 EXPECT_EQ(0U, sink_->message_count());
3288 3299
3289 // Send a mouse-move event. This should cancel the overscroll navigation. 3300 // Send a mouse-move event. This should cancel the overscroll navigation.
3290 SimulateMouseMove(5, 10, 0); 3301 SimulateMouseMove(5, 10, 0);
(...skipping 14 matching lines...) Expand all
3305 SimulateWheelEvent(-10, -3, 0, true); // coalesced into previous event 3316 SimulateWheelEvent(-10, -3, 0, true); // coalesced into previous event
3306 SimulateWheelEvent(-15, -1, 0, true); // coalesced into previous event 3317 SimulateWheelEvent(-15, -1, 0, true); // coalesced into previous event
3307 SimulateWheelEvent(-30, -3, 0, true); // coalesced into previous event 3318 SimulateWheelEvent(-30, -3, 0, true); // coalesced into previous event
3308 SimulateWheelEvent(-20, 6, 1, true); // enqueued, different modifiers 3319 SimulateWheelEvent(-20, 6, 1, true); // enqueued, different modifiers
3309 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3320 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3310 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3321 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3311 3322
3312 // Receive ACK the first wheel event as processed. 3323 // Receive ACK the first wheel event as processed.
3313 SendInputEventACK(WebInputEvent::MouseWheel, 3324 SendInputEventACK(WebInputEvent::MouseWheel,
3314 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3325 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3315 // ScrollBegin, ScrollUpdate, MouseWheel will be queued events 3326 // ScrollBegin, ScrollUpdate, and MouseWheel will be queued events.
3316 EXPECT_EQ(3U, GetSentMessageCountAndResetSink()); 3327 EXPECT_EQ(3U, GetSentMessageCountAndResetSink());
3317 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 3328 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
3318 INPUT_EVENT_ACK_STATE_CONSUMED); 3329 INPUT_EVENT_ACK_STATE_CONSUMED);
3330 // ScrollEnd will be the queued event.
3331 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3319 3332
3320 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3333 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3321 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 3334 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3322 3335
3323 // Receive ACK for the second (coalesced) event as not processed. This should 3336 // Receive ACK for the second (coalesced) event as not processed. This should
3324 // not initiate overscroll, since the beginning of the scroll has been 3337 // not initiate overscroll, since the beginning of the scroll has been
3325 // consumed. The queued event with different modifiers should be sent to the 3338 // consumed. The queued event with different modifiers should be sent to the
3326 // renderer. 3339 // renderer.
3327 SendInputEventACK(WebInputEvent::MouseWheel, 3340 SendInputEventACK(WebInputEvent::MouseWheel,
3328 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3341 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3329 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3342 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3330 // ScrollUpdate, MouseWheel will be queued events 3343 // ScrollBegin, ScrollUpdate, and MouseWheel will be queued events.
3344 EXPECT_EQ(3U, GetSentMessageCountAndResetSink());
3345 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
3346 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3347 // ScrollEnd will be the queued event.
3348 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3349
3350 SendInputEventACK(WebInputEvent::MouseWheel,
3351 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3352 // ScrollBegin, ScrollUpdate, and MouseWheel will be queued events.
3331 EXPECT_EQ(2U, GetSentMessageCountAndResetSink()); 3353 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
3332 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 3354 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
3333 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3355 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3334 3356 // ScrollEnd will be the queued event.
3335 SendInputEventACK(WebInputEvent::MouseWheel,
3336 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3337 // ScrollUpdate will be queued events
3338 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3357 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3339 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
3340 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3341
3342 EXPECT_EQ(0U, sink_->message_count());
3343 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3358 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3344 } 3359 }
3345 3360
3346 // Tests that wheel-scrolling correctly turns overscroll on and off. 3361 // Tests that wheel-scrolling correctly turns overscroll on and off.
3347 TEST_F(RenderWidgetHostViewAuraOverscrollTest, WheelScrollOverscrollToggle) { 3362 TEST_F(RenderWidgetHostViewAuraOverscrollTest, WheelScrollOverscrollToggle) {
3348 SetUpOverscrollEnvironment(); 3363 SetUpOverscrollEnvironment();
3349 3364
3350 // Send a wheel event. ACK the event as not processed. This should not 3365 // Send a wheel event. ACK the event as not processed. This should not
3351 // initiate an overscroll gesture since it doesn't cross the threshold yet. 3366 // initiate an overscroll gesture since it doesn't cross the threshold yet.
3352 SimulateWheelEvent(10, 0, 0, true); 3367 SimulateWheelEvent(10, 0, 0, true);
3353 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3368 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3354 SendInputEventACK(WebInputEvent::MouseWheel, 3369 SendInputEventACK(WebInputEvent::MouseWheel,
3355 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3370 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3371 // ScrollBegin and ScrollUpdate will be queued events.
3356 EXPECT_EQ(2U, GetSentMessageCountAndResetSink()); 3372 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
3357 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 3373 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
3358 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3374 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3375 // ScrollEnd will be the queued event.
3376 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3359 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3377 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3360 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 3378 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3361 3379
3362 // Scroll some more so as to not overscroll. 3380 // Scroll some more so as to not overscroll.
3363 SimulateWheelEvent(10, 0, 0, true); 3381 SimulateWheelEvent(10, 0, 0, true);
3364 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3382 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3365 SendInputEventACK(WebInputEvent::MouseWheel, 3383 SendInputEventACK(WebInputEvent::MouseWheel,
3366 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3384 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3367 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3385 // ScrollBegin and ScrollUpdate will be queued events.
3386 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
3368 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 3387 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
3369 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3388 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3389 // ScrollEnd will be the queued event.
3390 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3370 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3391 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3371 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 3392 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3372 3393
3373 // Scroll some more to initiate an overscroll. 3394 // Scroll some more to initiate an overscroll.
3374 SimulateWheelEvent(40, 0, 0, true); 3395 SimulateWheelEvent(40, 0, 0, true);
3375 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3396 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3376 SendInputEventACK(WebInputEvent::MouseWheel, 3397 SendInputEventACK(WebInputEvent::MouseWheel,
3377 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3398 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3378 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3399 // ScrollBegin and ScrollUpdate will be queued events.
3400 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
3379 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 3401 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
3380 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3402 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3403 // ScrollEnd will be the queued event.
3404 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3381 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); 3405 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode());
3382 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); 3406 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode());
3383 EXPECT_EQ(60.f, overscroll_delta_x()); 3407 EXPECT_EQ(60.f, overscroll_delta_x());
3384 EXPECT_EQ(10.f, overscroll_delegate()->delta_x()); 3408 EXPECT_EQ(10.f, overscroll_delegate()->delta_x());
3385 EXPECT_EQ(0.f, overscroll_delegate()->delta_y()); 3409 EXPECT_EQ(0.f, overscroll_delegate()->delta_y());
3386 3410
3387 // Scroll in the reverse direction enough to abort the overscroll. 3411 // Scroll in the reverse direction enough to abort the overscroll.
3388 SimulateWheelEvent(-20, 0, 0, true); 3412 SimulateWheelEvent(-20, 0, 0, true);
3389 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3413 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3390 SendInputEventACK(WebInputEvent::MouseWheel, 3414 SendInputEventACK(WebInputEvent::MouseWheel,
3391 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3415 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3392 EXPECT_EQ(0U, sink_->message_count()); 3416 // ScrollBegin and ScrollEnd will be queued events.
3417 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
3393 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3418 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3394 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 3419 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3395 3420
3396 // Continue to scroll in the reverse direction. 3421 // Continue to scroll in the reverse direction.
3397 SimulateWheelEvent(-20, 0, 0, true); 3422 SimulateWheelEvent(-20, 0, 0, true);
3398 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3423 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3399 SendInputEventACK(WebInputEvent::MouseWheel, 3424 SendInputEventACK(WebInputEvent::MouseWheel,
3400 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3425 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3401 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3426 // ScrollBegin and ScrollUpdate will be queued events.
3427 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
3402 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 3428 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
3403 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3429 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3404 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 3430 // ScrollEnd will be the queued event.
3431 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3405 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3432 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3406 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 3433 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3407 3434
3408 // Continue to scroll in the reverse direction enough to initiate overscroll 3435 // Continue to scroll in the reverse direction enough to initiate overscroll
3409 // in that direction. 3436 // in that direction.
3410 SimulateWheelEvent(-55, 0, 0, true); 3437 SimulateWheelEvent(-55, 0, 0, true);
3411 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3438 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3412 SendInputEventACK(WebInputEvent::MouseWheel, 3439 SendInputEventACK(WebInputEvent::MouseWheel,
3413 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3440 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3414 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3441 // ScrollBegin and ScrollUpdate will be the queued events.
3442 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
3415 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 3443 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
3416 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3444 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3417 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 3445 // ScrollEnd will be the queued event.
3446 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3418 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode()); 3447 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode());
3419 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode()); 3448 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode());
3420 EXPECT_EQ(-75.f, overscroll_delta_x()); 3449 EXPECT_EQ(-75.f, overscroll_delta_x());
3421 EXPECT_EQ(-25.f, overscroll_delegate()->delta_x()); 3450 EXPECT_EQ(-25.f, overscroll_delegate()->delta_x());
3422 EXPECT_EQ(0.f, overscroll_delegate()->delta_y()); 3451 EXPECT_EQ(0.f, overscroll_delegate()->delta_y());
3423 } 3452 }
3424 3453
3425 TEST_F(RenderWidgetHostViewAuraOverscrollTest, 3454 TEST_F(RenderWidgetHostViewAuraOverscrollTest,
3426 ScrollEventsOverscrollWithFling) { 3455 ScrollEventsOverscrollWithFling) {
3427 SetUpOverscrollEnvironment(); 3456 SetUpOverscrollEnvironment();
3428 3457
3429 // Send a wheel event. ACK the event as not processed. This should not 3458 // Send a wheel event. ACK the event as not processed. This should not
3430 // initiate an overscroll gesture since it doesn't cross the threshold yet. 3459 // initiate an overscroll gesture since it doesn't cross the threshold yet.
3431 SimulateWheelEvent(10, 0, 0, true); 3460 SimulateWheelEvent(10, 0, 0, true);
3432 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3461 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3433 SendInputEventACK(WebInputEvent::MouseWheel, 3462 SendInputEventACK(WebInputEvent::MouseWheel,
3434 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3463 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3464 // ScrollBegin and ScrollUpdate will be queued events.
3435 EXPECT_EQ(2U, GetSentMessageCountAndResetSink()); 3465 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
3436 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 3466 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
3437 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3467 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3438 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3468 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3439 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 3469 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3440 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 3470 // ScrollEnd will be the queued event.
3471 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3441 3472
3442 // Scroll some more so as to not overscroll. 3473 // Scroll some more so as to not overscroll.
3443 SimulateWheelEvent(20, 0, 0, true); 3474 SimulateWheelEvent(20, 0, 0, true);
3444 EXPECT_EQ(1U, sink_->message_count()); 3475 EXPECT_EQ(1U, sink_->message_count());
3445 SendInputEventACK(WebInputEvent::MouseWheel, 3476 SendInputEventACK(WebInputEvent::MouseWheel,
3446 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3477 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3447 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 3478 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
3448 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3479 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3449 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3480 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3450 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 3481 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3451 sink_->ClearMessages(); 3482 sink_->ClearMessages();
3452 3483
3453 // Scroll some more to initiate an overscroll. 3484 // Scroll some more to initiate an overscroll.
3454 SimulateWheelEvent(30, 0, 0, true); 3485 SimulateWheelEvent(30, 0, 0, true);
3455 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3486 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3456 SendInputEventACK(WebInputEvent::MouseWheel, 3487 SendInputEventACK(WebInputEvent::MouseWheel,
3457 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3488 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3458 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 3489 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
3459 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3490 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3460 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3491 // ScrollBegin, ScrollUpdate, and ScrollEnd will be queued events.
3492 EXPECT_EQ(3U, GetSentMessageCountAndResetSink());
3461 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); 3493 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode());
3462 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); 3494 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode());
3463 EXPECT_EQ(60.f, overscroll_delta_x()); 3495 EXPECT_EQ(60.f, overscroll_delta_x());
3464 EXPECT_EQ(10.f, overscroll_delegate()->delta_x()); 3496 EXPECT_EQ(10.f, overscroll_delegate()->delta_x());
3465 EXPECT_EQ(0.f, overscroll_delegate()->delta_y()); 3497 EXPECT_EQ(0.f, overscroll_delegate()->delta_y());
3466 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 3498 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
3467 3499
3468 // Send a fling start, but with a small velocity, so that the overscroll is 3500 // Send a fling start, but with a small velocity, so that the overscroll is
3469 // aborted. The fling should proceed to the renderer, through the gesture 3501 // aborted. The fling should proceed to the renderer, through the gesture
3470 // event filter. 3502 // event filter.
3471 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 3503 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
3472 blink::WebGestureDeviceTouchscreen); 3504 blink::WebGestureDeviceTouchscreen);
3473 SimulateGestureFlingStartEvent(0.f, 0.1f, blink::WebGestureDeviceTouchpad); 3505 SimulateGestureFlingStartEvent(0.f, 0.1f, blink::WebGestureDeviceTouchpad);
3474 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3506 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3475 EXPECT_EQ(3U, sink_->message_count()); 3507 // ScrollBegin and FlingStart will be queued events.
3508 EXPECT_EQ(2U, sink_->message_count());
3476 } 3509 }
3477 3510
3478 // Same as ScrollEventsOverscrollWithFling, but with zero velocity. Checks that 3511 // Same as ScrollEventsOverscrollWithFling, but with zero velocity. Checks that
3479 // the zero-velocity fling does not reach the renderer. 3512 // the zero-velocity fling does not reach the renderer.
3480 TEST_F(RenderWidgetHostViewAuraOverscrollTest, 3513 TEST_F(RenderWidgetHostViewAuraOverscrollTest,
3481 ScrollEventsOverscrollWithZeroFling) { 3514 ScrollEventsOverscrollWithZeroFling) {
3482 SetUpOverscrollEnvironment(); 3515 SetUpOverscrollEnvironment();
3483 3516
3484 // Send a wheel event. ACK the event as not processed. This should not 3517 // Send a wheel event. ACK the event as not processed. This should not
3485 // initiate an overscroll gesture since it doesn't cross the threshold yet. 3518 // initiate an overscroll gesture since it doesn't cross the threshold yet.
3486 SimulateWheelEvent(10, 0, 0, true); 3519 SimulateWheelEvent(10, 0, 0, true);
3487 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3520 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3488 SendInputEventACK(WebInputEvent::MouseWheel, 3521 SendInputEventACK(WebInputEvent::MouseWheel,
3489 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3522 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3523 // ScrollBegin and ScrollUpdate will be queued events.
3490 EXPECT_EQ(2U, GetSentMessageCountAndResetSink()); 3524 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
3491 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 3525 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
3492 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3526 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3493 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3527 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3494 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 3528 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3495 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 3529 // ScrollEnd will be the queued event.
3530 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3496 3531
3497 // Scroll some more so as to not overscroll. 3532 // Scroll some more so as to not overscroll.
3498 SimulateWheelEvent(20, 0, 0, true); 3533 SimulateWheelEvent(20, 0, 0, true);
3499 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3534 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3500 SendInputEventACK(WebInputEvent::MouseWheel, 3535 SendInputEventACK(WebInputEvent::MouseWheel,
3501 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3536 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3502 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3537 // ScrollBegin and ScrollUpdate will be queued events.
3538 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
3503 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 3539 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
3504 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3540 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3505 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3541 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3506 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 3542 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3543 // ScrollEnd will be the queued event.
3544 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3507 3545
3508 // Scroll some more to initiate an overscroll. 3546 // Scroll some more to initiate an overscroll.
3509 SimulateWheelEvent(30, 0, 0, true); 3547 SimulateWheelEvent(30, 0, 0, true);
3510 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3548 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3511 SendInputEventACK(WebInputEvent::MouseWheel, 3549 SendInputEventACK(WebInputEvent::MouseWheel,
3512 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3550 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3513 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3551 // ScrollBegin and ScrollUpdate will be queued events.
3552 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
3514 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 3553 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
3515 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3554 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3516 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); 3555 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode());
3517 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); 3556 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode());
3557 // ScrollEnd will be the queued event.
3558 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3559
3518 EXPECT_EQ(60.f, overscroll_delta_x()); 3560 EXPECT_EQ(60.f, overscroll_delta_x());
3519 EXPECT_EQ(10.f, overscroll_delegate()->delta_x()); 3561 EXPECT_EQ(10.f, overscroll_delegate()->delta_x());
3520 EXPECT_EQ(0.f, overscroll_delegate()->delta_y()); 3562 EXPECT_EQ(0.f, overscroll_delegate()->delta_y());
3521 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 3563 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
3522 3564
3523 // Send a fling start, but with a small velocity, so that the overscroll is 3565 // Send a fling start, but with a small velocity, so that the overscroll is
3524 // aborted. The fling should proceed to the renderer, through the gesture 3566 // aborted. The fling should proceed to the renderer, through the gesture
3525 // event filter. 3567 // event filter.
3526 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 3568 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
3527 blink::WebGestureDeviceTouchscreen); 3569 blink::WebGestureDeviceTouchscreen);
3528 SimulateGestureFlingStartEvent(10.f, 0.f, blink::WebGestureDeviceTouchpad); 3570 SimulateGestureFlingStartEvent(10.f, 0.f, blink::WebGestureDeviceTouchpad);
3529 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3571 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3530 EXPECT_EQ(3U, sink_->message_count()); 3572 // scrollBeign and FlingStart will be queued events.
3573 EXPECT_EQ(2U, sink_->message_count());
3531 } 3574 }
3532 3575
3533 // Tests that a fling in the opposite direction of the overscroll cancels the 3576 // Tests that a fling in the opposite direction of the overscroll cancels the
3534 // overscroll nav instead of completing it. 3577 // overscroll nav instead of completing it.
3535 TEST_F(RenderWidgetHostViewAuraOverscrollTest, ReverseFlingCancelsOverscroll) { 3578 TEST_F(RenderWidgetHostViewAuraOverscrollTest, ReverseFlingCancelsOverscroll) {
3536 SetUpOverscrollEnvironment(); 3579 SetUpOverscrollEnvironment();
3537 3580
3538 { 3581 {
3539 // Start and end a gesture in the same direction without processing the 3582 // Start and end a gesture in the same direction without processing the
3540 // gesture events in the renderer. This should initiate and complete an 3583 // gesture events in the renderer. This should initiate and complete an
(...skipping 436 matching lines...) Expand 10 before | Expand all | Expand 10 after
3977 4020
3978 TEST_F(RenderWidgetHostViewAuraOverscrollTest, 4021 TEST_F(RenderWidgetHostViewAuraOverscrollTest,
3979 OverscrollDirectionChangeMouseWheel) { 4022 OverscrollDirectionChangeMouseWheel) {
3980 SetUpOverscrollEnvironment(); 4023 SetUpOverscrollEnvironment();
3981 4024
3982 // Send wheel event and receive ack as not consumed. 4025 // Send wheel event and receive ack as not consumed.
3983 SimulateWheelEvent(125, -5, 0, true); 4026 SimulateWheelEvent(125, -5, 0, true);
3984 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4027 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3985 SendInputEventACK(WebInputEvent::MouseWheel, 4028 SendInputEventACK(WebInputEvent::MouseWheel,
3986 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4029 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3987 4030 // ScrollBegin and ScrollUpdate will be queued events.
3988 // ScrollBegin, ScrollUpdate messages.
3989 EXPECT_EQ(2U, GetSentMessageCountAndResetSink()); 4031 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
3990 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 4032 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
3991 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4033 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3992 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); 4034 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode());
3993 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); 4035 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode());
4036 // ScrollEnd will be the queued event.
4037 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3994 4038
3995 // Send another wheel event, but in the reverse direction. The overscroll 4039 // Send another wheel event, but in the reverse direction. The overscroll
3996 // controller will not consume the event, because it is not triggering 4040 // controller will not consume the event, because it is not triggering
3997 // gesture-nav. 4041 // gesture-nav.
3998 4042
3999 SimulateWheelEvent(-260, 0, 0, true); 4043 SimulateWheelEvent(-260, 0, 0, true);
4000 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4044 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4001 SendInputEventACK(WebInputEvent::MouseWheel, 4045 SendInputEventACK(WebInputEvent::MouseWheel,
4002 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4046 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4003 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4047 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
4004 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4048 // ScrollBegin and ScrollUpdate will be queued events.
4049 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
4005 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 4050 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
4006 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4051 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4007 4052
4008 // Since it was unhandled; the overscroll should now be west 4053 // Since it was unhandled; the overscroll should now be west
4009 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode()); 4054 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode());
4010 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode()); 4055 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode());
4056 // ScrollEnd will be the queued event.
4057 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4011 4058
4012 SimulateWheelEvent(-20, 0, 0, true); 4059 SimulateWheelEvent(-20, 0, 0, true);
4013 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4060 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4014 SendInputEventACK(WebInputEvent::MouseWheel, 4061 SendInputEventACK(WebInputEvent::MouseWheel,
4015 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4062 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4016 4063
4017 // wheel event ack generates gesture scroll update; which gets consumed 4064 // wheel event ack generates gesture scroll update; which gets consumed
4018 // solely by the overflow controller. 4065 // solely by the overflow controller.
4019 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 4066 // No ScrollUpdates, only ScrollBegin and ScrollEnd will be queued events.
4067 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
4020 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode()); 4068 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode());
4021 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode()); 4069 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode());
4022 } 4070 }
4023 4071
4024 TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollMouseMoveCompletion) { 4072 TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollMouseMoveCompletion) {
4025 SetUpOverscrollEnvironment(); 4073 SetUpOverscrollEnvironment();
4026 4074
4027 SimulateWheelEvent(5, 0, 0, true); // sent directly 4075 SimulateWheelEvent(5, 0, 0, true); // sent directly
4028 SimulateWheelEvent(-1, 0, 0, true); // enqueued 4076 SimulateWheelEvent(-1, 0, 0, true); // enqueued
4029 SimulateWheelEvent(-10, -3, 0, true); // coalesced into previous event 4077 SimulateWheelEvent(-10, -3, 0, true); // coalesced into previous event
4030 SimulateWheelEvent(-15, -1, 0, true); // coalesced into previous event 4078 SimulateWheelEvent(-15, -1, 0, true); // coalesced into previous event
4031 SimulateWheelEvent(-30, -3, 0, true); // coalesced into previous event 4079 SimulateWheelEvent(-30, -3, 0, true); // coalesced into previous event
4032 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4080 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
4033 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4081 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4034 4082
4035 // Receive ACK the first wheel event as not processed. 4083 // Receive ACK the first wheel event as not processed.
4036 SendInputEventACK(WebInputEvent::MouseWheel, 4084 SendInputEventACK(WebInputEvent::MouseWheel,
4037 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4085 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4086 // ScrollBegin, ScrollUpdate, and the second MouseWheel will be queued
4087 // events.
4038 EXPECT_EQ(3U, GetSentMessageCountAndResetSink()); 4088 EXPECT_EQ(3U, GetSentMessageCountAndResetSink());
4039 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 4089 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
4040 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4090 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4041 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4091 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
4042 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 4092 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
4093 // ScrollEnd will be the queued event.
4094 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4043 4095
4044 // Receive ACK for the second (coalesced) event as not processed. This will 4096 // Receive ACK for the second (coalesced) event as not processed. This will
4045 // start an overcroll gesture. 4097 // start an overcroll gesture.
4046 SendInputEventACK(WebInputEvent::MouseWheel, 4098 SendInputEventACK(WebInputEvent::MouseWheel,
4047 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4099 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4048 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4100 // ScrollBegin and ScrollUpdate will be queued events.
4101 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
4049 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 4102 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
4050 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4103 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4051 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode()); 4104 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode());
4052 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode()); 4105 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode());
4053 EXPECT_EQ(0U, sink_->message_count()); 4106 // ScrollEnd will be the queued event.
4107 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4054 4108
4055 // Send a mouse-move event. This should cancel the overscroll navigation 4109 // Send a mouse-move event. This should cancel the overscroll navigation
4056 // (since the amount overscrolled is not above the threshold), and so the 4110 // (since the amount overscrolled is not above the threshold), and so the
4057 // mouse-move should reach the renderer. 4111 // mouse-move should reach the renderer.
4058 SimulateMouseMove(5, 10, 0); 4112 SimulateMouseMove(5, 10, 0);
4059 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4113 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
4060 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->completed_mode()); 4114 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->completed_mode());
4061 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 4115 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
4062 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4116 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4063 4117
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
4116 SimulateWheelEvent(0, 10, 0, true); // coalesced into previous event 4170 SimulateWheelEvent(0, 10, 0, true); // coalesced into previous event
4117 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4171 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
4118 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4172 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4119 4173
4120 // The first wheel event is consumed. Dispatches the queued wheel event. 4174 // The first wheel event is consumed. Dispatches the queued wheel event.
4121 SendInputEventACK(WebInputEvent::MouseWheel, 4175 SendInputEventACK(WebInputEvent::MouseWheel,
4122 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4176 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4123 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 4177 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
4124 INPUT_EVENT_ACK_STATE_CONSUMED); 4178 INPUT_EVENT_ACK_STATE_CONSUMED);
4125 EXPECT_TRUE(ScrollStateIsContentScrolling()); 4179 EXPECT_TRUE(ScrollStateIsContentScrolling());
4126 EXPECT_EQ(3U, GetSentMessageCountAndResetSink()); 4180 // ScrollBegin, ScrollUpdate, the second MouseWheel, and ScrollEnd will be
4181 // queued events.
4182 EXPECT_EQ(4U, GetSentMessageCountAndResetSink());
4127 4183
4128 // The second wheel event is consumed. 4184 // The second wheel event is consumed.
4129 SendInputEventACK(WebInputEvent::MouseWheel, 4185 SendInputEventACK(WebInputEvent::MouseWheel,
4130 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4186 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4131 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 4187 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
4132 INPUT_EVENT_ACK_STATE_CONSUMED); 4188 INPUT_EVENT_ACK_STATE_CONSUMED);
4133 EXPECT_TRUE(ScrollStateIsContentScrolling()); 4189 EXPECT_TRUE(ScrollStateIsContentScrolling());
4190 // ScrollBegin, ScrollUpdate, and ScrollEnd will be queued events.
4191 EXPECT_EQ(3U, sink_->message_count());
4134 4192
4135 // Touchpad scroll can end with a zero-velocity fling. But it is not 4193 // Touchpad scroll can end with a zero-velocity fling. But it is not
4136 // dispatched, but it should still reset the overscroll controller state. 4194 // dispatched, but it should still reset the overscroll controller state.
4137 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 4195 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
4138 blink::WebGestureDeviceTouchscreen); 4196 blink::WebGestureDeviceTouchscreen);
4139 SimulateGestureFlingStartEvent(0.f, 0.f, blink::WebGestureDeviceTouchpad); 4197 SimulateGestureFlingStartEvent(0.f, 0.f, blink::WebGestureDeviceTouchpad);
4140 EXPECT_TRUE(ScrollStateIsUnknown()); 4198 EXPECT_TRUE(ScrollStateIsUnknown());
4141 EXPECT_EQ(3U, sink_->message_count()); 4199 // ScrollBegin, ScrollUpdate, ScrollEnd, and ScrollBegin will be queued
4200 // events.
4201 EXPECT_EQ(4U, sink_->message_count());
4142 4202
4143 // Dropped flings should neither propagate *nor* indicate that they were 4203 // Dropped flings should neither propagate *nor* indicate that they were
4144 // consumed and have triggered a fling animation (as tracked by the router). 4204 // consumed and have triggered a fling animation (as tracked by the router).
4145 EXPECT_FALSE(parent_host_->input_router()->HasPendingEvents()); 4205 EXPECT_FALSE(parent_host_->input_router()->HasPendingEvents());
4146 4206
4147 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, 4207 SimulateGestureEvent(WebInputEvent::GestureScrollEnd,
4148 blink::WebGestureDeviceTouchscreen); 4208 blink::WebGestureDeviceTouchscreen);
4209 // ScrollBegin, ScrollUpdate, ScrollEnd, ScrollBegin, and ScrollEnd will be
4210 // queued events.
4211 EXPECT_EQ(5U, GetSentMessageCountAndResetSink());
4149 4212
4150 SimulateWheelEvent(-5, 0, 0, true); // sent directly 4213 SimulateWheelEvent(-5, 0, 0, true); // sent directly
4151 SimulateWheelEvent(-60, 0, 0, true); // enqueued 4214 SimulateWheelEvent(-60, 0, 0, true); // enqueued
4152 SimulateWheelEvent(-100, 0, 0, true); // coalesced into previous event 4215 SimulateWheelEvent(-100, 0, 0, true); // coalesced into previous event
4153 EXPECT_TRUE(ScrollStateIsUnknown()); 4216 EXPECT_TRUE(ScrollStateIsUnknown());
4154 EXPECT_EQ(5U, GetSentMessageCountAndResetSink()); 4217 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4155 4218
4156 // The first wheel scroll did not scroll content. Overscroll should not start 4219 // The first wheel scroll did not scroll content. Overscroll should not start
4157 // yet, since enough hasn't been scrolled. 4220 // yet, since enough hasn't been scrolled.
4158 SendInputEventACK(WebInputEvent::MouseWheel, 4221 SendInputEventACK(WebInputEvent::MouseWheel,
4159 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4222 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4160 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 4223 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
4161 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4224 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4162 EXPECT_TRUE(ScrollStateIsUnknown()); 4225 EXPECT_TRUE(ScrollStateIsUnknown());
4163 EXPECT_EQ(3U, GetSentMessageCountAndResetSink()); 4226 // ScrollBegin, ScrollUpdate, the second Mousewheel, and ScrollEnd will be
4227 // queued events.
4228 EXPECT_EQ(4U, GetSentMessageCountAndResetSink());
4164 4229
4165 SendInputEventACK(WebInputEvent::MouseWheel, 4230 SendInputEventACK(WebInputEvent::MouseWheel,
4166 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4231 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4167 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 4232 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
4168 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4233 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4169 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode()); 4234 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode());
4170 EXPECT_TRUE(ScrollStateIsOverscrolling()); 4235 EXPECT_TRUE(ScrollStateIsOverscrolling());
4171 EXPECT_EQ(1U, sink_->message_count()); 4236 // ScrollBegin, ScrollUpdate, and ScrollEnd will be queued events.
4237 EXPECT_EQ(3U, GetSentMessageCountAndResetSink());
4172 4238
4173 // The GestureScrollBegin will reset the delegate's mode, so check it here. 4239 // The GestureScrollBegin will reset the delegate's mode, so check it here.
4174 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode()); 4240 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode());
4175 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 4241 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
4176 blink::WebGestureDeviceTouchscreen); 4242 blink::WebGestureDeviceTouchscreen);
4177 SimulateGestureFlingStartEvent(0.f, 0.f, blink::WebGestureDeviceTouchpad); 4243 SimulateGestureFlingStartEvent(0.f, 0.f, blink::WebGestureDeviceTouchpad);
4178 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4244 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
4179 EXPECT_TRUE(ScrollStateIsUnknown()); 4245 EXPECT_TRUE(ScrollStateIsUnknown());
4180 EXPECT_EQ(3U, sink_->message_count()); 4246 // ScrollBegin will be the queued event.
4247 EXPECT_EQ(1U, sink_->message_count());
4181 EXPECT_FALSE(parent_host_->input_router()->HasPendingEvents()); 4248 EXPECT_FALSE(parent_host_->input_router()->HasPendingEvents());
4182 } 4249 }
4183 4250
4184 TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollResetsOnBlur) { 4251 TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollResetsOnBlur) {
4185 SetUpOverscrollEnvironment(); 4252 SetUpOverscrollEnvironment();
4186 4253
4187 // Start an overscroll with gesture scroll. In the middle of the scroll, blur 4254 // Start an overscroll with gesture scroll. In the middle of the scroll, blur
4188 // the host. 4255 // the host.
4189 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 4256 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
4190 blink::WebGestureDeviceTouchscreen); 4257 blink::WebGestureDeviceTouchscreen);
(...skipping 839 matching lines...) Expand 10 before | Expand all | Expand 10 after
5030 // There is no composition in the beginning. 5097 // There is no composition in the beginning.
5031 EXPECT_FALSE(has_composition_text()); 5098 EXPECT_FALSE(has_composition_text());
5032 SetHasCompositionTextToTrue(); 5099 SetHasCompositionTextToTrue();
5033 view->ImeCancelComposition(); 5100 view->ImeCancelComposition();
5034 // The composition must have been canceled. 5101 // The composition must have been canceled.
5035 EXPECT_FALSE(has_composition_text()); 5102 EXPECT_FALSE(has_composition_text());
5036 } 5103 }
5037 } 5104 }
5038 5105
5039 } // namespace content 5106 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/input/mouse_wheel_event_queue_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698