OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |