Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <stddef.h> | 5 #include <stddef.h> |
| 6 | 6 |
| 7 #include <new> | 7 #include <new> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 252 const WebTouchEvent* last_touch_event = | 252 const WebTouchEvent* last_touch_event = |
| 253 static_cast<const WebTouchEvent*>(handled_events_.at(1).get()); | 253 static_cast<const WebTouchEvent*>(handled_events_.at(1).get()); |
| 254 WebTouchEvent coalesced_event = kTouchEvents[0]; | 254 WebTouchEvent coalesced_event = kTouchEvents[0]; |
| 255 internal::Coalesce(kTouchEvents[1], &coalesced_event); | 255 internal::Coalesce(kTouchEvents[1], &coalesced_event); |
| 256 coalesced_event.dispatchType = | 256 coalesced_event.dispatchType = |
| 257 WebInputEvent::DispatchType::ListenersNonBlockingPassive; | 257 WebInputEvent::DispatchType::ListenersNonBlockingPassive; |
| 258 EXPECT_EQ(coalesced_event, *last_touch_event); | 258 EXPECT_EQ(coalesced_event, *last_touch_event); |
| 259 } | 259 } |
| 260 } | 260 } |
| 261 | 261 |
| 262 TEST_F(MainThreadEventQueueTest, BlockingTouchesDuringFling) { | |
| 263 SyntheticWebTouchEvent kEvents[1]; | |
| 264 kEvents[0].PressPoint(10, 10); | |
| 265 queue_->set_is_flinging(true); | |
| 266 | |
| 267 EXPECT_FALSE(main_task_runner_->HasPendingTask()); | |
| 268 EXPECT_EQ(0u, event_queue().size()); | |
| 269 queue_->HandleEvent(&kEvents[0], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, | |
| 270 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | |
| 271 EXPECT_EQ(1u, event_queue().size()); | |
| 272 EXPECT_TRUE(main_task_runner_->HasPendingTask()); | |
| 273 main_task_runner_->RunUntilIdle(); | |
| 274 EXPECT_FALSE(main_task_runner_->HasPendingTask()); | |
| 275 EXPECT_EQ(0u, event_queue().size()); | |
| 276 EXPECT_EQ(1u, handled_events_.size()); | |
| 277 EXPECT_EQ(kEvents[0].size, handled_events_.at(0)->size); | |
| 278 EXPECT_EQ(kEvents[0].type, handled_events_.at(0)->type); | |
| 279 const WebTouchEvent* last_touch_event = | |
| 280 static_cast<const WebTouchEvent*>(handled_events_.at(0).get()); | |
| 281 kEvents[0].dispatchedDuringFling = true; | |
| 282 kEvents[0].dispatchType = | |
| 283 WebInputEvent::DispatchType::ListenersForcedNonBlockingPassiveDueToFling; | |
| 284 EXPECT_EQ(kEvents[0], *last_touch_event); | |
| 285 | |
| 286 kEvents[0].MovePoint(0, 30, 30); | |
| 287 queue_->HandleEvent(&kEvents[0], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, | |
| 288 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | |
| 289 EXPECT_EQ(1u, event_queue().size()); | |
| 290 EXPECT_TRUE(main_task_runner_->HasPendingTask()); | |
| 291 main_task_runner_->RunUntilIdle(); | |
| 292 EXPECT_FALSE(main_task_runner_->HasPendingTask()); | |
| 293 EXPECT_EQ(0u, event_queue().size()); | |
| 294 EXPECT_EQ(2u, handled_events_.size()); | |
| 295 EXPECT_EQ(kEvents[0].size, handled_events_.at(1)->size); | |
| 296 EXPECT_EQ(kEvents[0].type, handled_events_.at(1)->type); | |
| 297 last_touch_event = | |
| 298 static_cast<const WebTouchEvent*>(handled_events_.at(1).get()); | |
| 299 kEvents[0].dispatchedDuringFling = true; | |
| 300 kEvents[0].dispatchType = | |
| 301 WebInputEvent::DispatchType::ListenersForcedNonBlockingPassiveDueToFling; | |
| 302 EXPECT_EQ(kEvents[0], *last_touch_event); | |
| 303 | |
| 304 kEvents[0].MovePoint(0, 50, 50); | |
| 305 queue_->HandleEvent(&kEvents[0], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, | |
| 306 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | |
| 307 EXPECT_EQ(1u, event_queue().size()); | |
| 308 EXPECT_TRUE(main_task_runner_->HasPendingTask()); | |
| 309 main_task_runner_->RunUntilIdle(); | |
| 310 EXPECT_FALSE(main_task_runner_->HasPendingTask()); | |
| 311 EXPECT_EQ(0u, event_queue().size()); | |
| 312 EXPECT_EQ(3u, handled_events_.size()); | |
| 313 EXPECT_EQ(kEvents[0].size, handled_events_.at(2)->size); | |
| 314 EXPECT_EQ(kEvents[0].type, handled_events_.at(2)->type); | |
| 315 last_touch_event = | |
|
dtapuska
2016/08/10 14:47:42
What are you expecting to have dispatchedDuringFli
| |
| 316 static_cast<const WebTouchEvent*>(handled_events_.at(2).get()); | |
| 317 EXPECT_EQ(kEvents[0], *last_touch_event); | |
| 318 | |
| 319 kEvents[0].ReleasePoint(0); | |
| 320 queue_->HandleEvent(&kEvents[0], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, | |
| 321 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | |
| 322 EXPECT_EQ(1u, event_queue().size()); | |
| 323 EXPECT_TRUE(main_task_runner_->HasPendingTask()); | |
| 324 main_task_runner_->RunUntilIdle(); | |
| 325 EXPECT_FALSE(main_task_runner_->HasPendingTask()); | |
| 326 EXPECT_EQ(0u, event_queue().size()); | |
| 327 EXPECT_EQ(4u, handled_events_.size()); | |
| 328 EXPECT_EQ(kEvents[0].size, handled_events_.at(3)->size); | |
| 329 EXPECT_EQ(kEvents[0].type, handled_events_.at(3)->type); | |
| 330 last_touch_event = | |
| 331 static_cast<const WebTouchEvent*>(handled_events_.at(3).get()); | |
| 332 EXPECT_EQ(kEvents[0], *last_touch_event); | |
| 333 } | |
| 334 | |
| 262 } // namespace content | 335 } // namespace content |
| OLD | NEW |