| 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 |