| 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 |
| 11 #include "base/macros.h" | 11 #include "base/macros.h" |
| 12 #include "base/strings/string_util.h" | 12 #include "base/strings/string_util.h" |
| 13 #include "base/test/histogram_tester.h" | 13 #include "base/test/histogram_tester.h" |
| 14 #include "base/test/scoped_feature_list.h" | 14 #include "base/test/scoped_feature_list.h" |
| 15 #include "base/test/test_simple_task_runner.h" | 15 #include "base/test/test_simple_task_runner.h" |
| 16 #include "build/build_config.h" | 16 #include "build/build_config.h" |
| 17 #include "content/common/input/synthetic_web_input_event_builders.h" | 17 #include "content/common/input/synthetic_web_input_event_builders.h" |
| 18 #include "content/renderer/input/main_thread_event_queue.h" | 18 #include "content/renderer/input/main_thread_event_queue.h" |
| 19 #include "content/renderer/render_thread_impl.h" | 19 #include "content/renderer/render_thread_impl.h" |
| 20 #include "testing/gtest/include/gtest/gtest.h" | 20 #include "testing/gtest/include/gtest/gtest.h" |
| 21 #include "third_party/WebKit/public/platform/scheduler/test/mock_renderer_schedu
ler.h" | 21 #include "third_party/WebKit/public/platform/scheduler/test/mock_renderer_schedu
ler.h" |
| 22 | 22 |
| 23 using blink::WebInputEvent; | 23 using blink::WebInputEvent; |
| 24 using blink::WebMouseEvent; | 24 using blink::WebMouseEvent; |
| 25 using blink::WebMouseWheelEvent; | 25 using blink::WebMouseWheelEvent; |
| 26 using blink::WebTouchEvent; | 26 using blink::WebTouchEvent; |
| 27 | 27 |
| 28 namespace blink { | 28 namespace blink { |
| 29 bool operator==(const WebMouseWheelEvent& lhs, const WebMouseWheelEvent& rhs) { | 29 bool operator==(const WebMouseWheelEvent& lhs, const WebMouseWheelEvent& rhs) { |
| 30 return memcmp(&lhs, &rhs, lhs.size) == 0; | 30 return memcmp(&lhs, &rhs, lhs.size()) == 0; |
| 31 } | 31 } |
| 32 | 32 |
| 33 bool operator==(const WebTouchEvent& lhs, const WebTouchEvent& rhs) { | 33 bool operator==(const WebTouchEvent& lhs, const WebTouchEvent& rhs) { |
| 34 return memcmp(&lhs, &rhs, lhs.size) == 0; | 34 return memcmp(&lhs, &rhs, lhs.size()) == 0; |
| 35 } | 35 } |
| 36 } // namespace blink | 36 } // namespace blink |
| 37 | 37 |
| 38 namespace content { | 38 namespace content { |
| 39 namespace { | 39 namespace { |
| 40 | 40 |
| 41 const unsigned kRafAlignedEnabledTouch = 1; | 41 const unsigned kRafAlignedEnabledTouch = 1; |
| 42 const unsigned kRafAlignedEnabledMouse = 1 << 1; | 42 const unsigned kRafAlignedEnabledMouse = 1 << 1; |
| 43 | 43 |
| 44 const int kTestRoutingID = 13; | 44 const int kTestRoutingID = 13; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 68 queue_ = new MainThreadEventQueue(kTestRoutingID, this, main_task_runner_, | 68 queue_ = new MainThreadEventQueue(kTestRoutingID, this, main_task_runner_, |
| 69 &renderer_scheduler_); | 69 &renderer_scheduler_); |
| 70 } | 70 } |
| 71 | 71 |
| 72 void HandleEventOnMainThread(int routing_id, | 72 void HandleEventOnMainThread(int routing_id, |
| 73 const blink::WebInputEvent* event, | 73 const blink::WebInputEvent* event, |
| 74 const ui::LatencyInfo& latency, | 74 const ui::LatencyInfo& latency, |
| 75 InputEventDispatchType type) override { | 75 InputEventDispatchType type) override { |
| 76 EXPECT_EQ(kTestRoutingID, routing_id); | 76 EXPECT_EQ(kTestRoutingID, routing_id); |
| 77 handled_events_.push_back(ui::WebInputEventTraits::Clone(*event)); | 77 handled_events_.push_back(ui::WebInputEventTraits::Clone(*event)); |
| 78 queue_->EventHandled(event->type, INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 78 queue_->EventHandled(event->type(), INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 79 } | 79 } |
| 80 | 80 |
| 81 void SendInputEventAck(int routing_id, | 81 void SendInputEventAck(int routing_id, |
| 82 blink::WebInputEvent::Type type, | 82 blink::WebInputEvent::Type type, |
| 83 InputEventAckState ack_result, | 83 InputEventAckState ack_result, |
| 84 uint32_t touch_event_id) override { | 84 uint32_t touch_event_id) override { |
| 85 additional_acked_events_.push_back(touch_event_id); | 85 additional_acked_events_.push_back(touch_event_id); |
| 86 } | 86 } |
| 87 | 87 |
| 88 bool HandleEvent(WebInputEvent& event, InputEventAckState ack_result) { | 88 bool HandleEvent(WebInputEvent& event, InputEventAckState ack_result) { |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 | 149 |
| 150 EXPECT_EQ(2u, event_queue().size()); | 150 EXPECT_EQ(2u, event_queue().size()); |
| 151 EXPECT_EQ((raf_aligned_input_setting_ & kRafAlignedEnabledMouse) == 0, | 151 EXPECT_EQ((raf_aligned_input_setting_ & kRafAlignedEnabledMouse) == 0, |
| 152 main_task_runner_->HasPendingTask()); | 152 main_task_runner_->HasPendingTask()); |
| 153 RunPendingTasksWithSimulatedRaf(); | 153 RunPendingTasksWithSimulatedRaf(); |
| 154 EXPECT_FALSE(main_task_runner_->HasPendingTask()); | 154 EXPECT_FALSE(main_task_runner_->HasPendingTask()); |
| 155 EXPECT_EQ(0u, event_queue().size()); | 155 EXPECT_EQ(0u, event_queue().size()); |
| 156 EXPECT_EQ(2u, handled_events_.size()); | 156 EXPECT_EQ(2u, handled_events_.size()); |
| 157 | 157 |
| 158 { | 158 { |
| 159 EXPECT_EQ(kEvents[0].size, handled_events_.at(0)->size); | 159 EXPECT_EQ(kEvents[0].size(), handled_events_.at(0)->size()); |
| 160 EXPECT_EQ(kEvents[0].type, handled_events_.at(0)->type); | 160 EXPECT_EQ(kEvents[0].type(), handled_events_.at(0)->type()); |
| 161 const WebMouseWheelEvent* last_wheel_event = | 161 const WebMouseWheelEvent* last_wheel_event = |
| 162 static_cast<const WebMouseWheelEvent*>(handled_events_.at(0).get()); | 162 static_cast<const WebMouseWheelEvent*>(handled_events_.at(0).get()); |
| 163 EXPECT_EQ(WebInputEvent::DispatchType::ListenersNonBlockingPassive, | 163 EXPECT_EQ(WebInputEvent::DispatchType::ListenersNonBlockingPassive, |
| 164 last_wheel_event->dispatchType); | 164 last_wheel_event->dispatchType); |
| 165 WebMouseWheelEvent coalesced_event = kEvents[0]; | 165 WebMouseWheelEvent coalesced_event = kEvents[0]; |
| 166 ui::Coalesce(kEvents[1], &coalesced_event); | 166 ui::Coalesce(kEvents[1], &coalesced_event); |
| 167 coalesced_event.dispatchType = | 167 coalesced_event.dispatchType = |
| 168 WebInputEvent::DispatchType::ListenersNonBlockingPassive; | 168 WebInputEvent::DispatchType::ListenersNonBlockingPassive; |
| 169 EXPECT_EQ(coalesced_event, *last_wheel_event); | 169 EXPECT_EQ(coalesced_event, *last_wheel_event); |
| 170 } | 170 } |
| (...skipping 26 matching lines...) Expand all Loading... |
| 197 for (SyntheticWebTouchEvent& event : kEvents) | 197 for (SyntheticWebTouchEvent& event : kEvents) |
| 198 HandleEvent(event, INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); | 198 HandleEvent(event, INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); |
| 199 | 199 |
| 200 EXPECT_EQ(3u, event_queue().size()); | 200 EXPECT_EQ(3u, event_queue().size()); |
| 201 EXPECT_TRUE(main_task_runner_->HasPendingTask()); | 201 EXPECT_TRUE(main_task_runner_->HasPendingTask()); |
| 202 RunPendingTasksWithSimulatedRaf(); | 202 RunPendingTasksWithSimulatedRaf(); |
| 203 EXPECT_FALSE(main_task_runner_->HasPendingTask()); | 203 EXPECT_FALSE(main_task_runner_->HasPendingTask()); |
| 204 EXPECT_EQ(0u, event_queue().size()); | 204 EXPECT_EQ(0u, event_queue().size()); |
| 205 EXPECT_EQ(3u, handled_events_.size()); | 205 EXPECT_EQ(3u, handled_events_.size()); |
| 206 | 206 |
| 207 EXPECT_EQ(kEvents[0].size, handled_events_.at(0)->size); | 207 EXPECT_EQ(kEvents[0].size(), handled_events_.at(0)->size()); |
| 208 EXPECT_EQ(kEvents[0].type, handled_events_.at(0)->type); | 208 EXPECT_EQ(kEvents[0].type(), handled_events_.at(0)->type()); |
| 209 const WebTouchEvent* last_touch_event = | 209 const WebTouchEvent* last_touch_event = |
| 210 static_cast<const WebTouchEvent*>(handled_events_.at(0).get()); | 210 static_cast<const WebTouchEvent*>(handled_events_.at(0).get()); |
| 211 kEvents[0].dispatchType = | 211 kEvents[0].dispatchType = |
| 212 WebInputEvent::DispatchType::ListenersNonBlockingPassive; | 212 WebInputEvent::DispatchType::ListenersNonBlockingPassive; |
| 213 EXPECT_EQ(kEvents[0], *last_touch_event); | 213 EXPECT_EQ(kEvents[0], *last_touch_event); |
| 214 | 214 |
| 215 EXPECT_EQ(kEvents[1].size, handled_events_.at(1)->size); | 215 EXPECT_EQ(kEvents[1].size(), handled_events_.at(1)->size()); |
| 216 EXPECT_EQ(kEvents[1].type, handled_events_.at(1)->type); | 216 EXPECT_EQ(kEvents[1].type(), handled_events_.at(1)->type()); |
| 217 last_touch_event = | 217 last_touch_event = |
| 218 static_cast<const WebTouchEvent*>(handled_events_.at(1).get()); | 218 static_cast<const WebTouchEvent*>(handled_events_.at(1).get()); |
| 219 kEvents[1].dispatchType = | 219 kEvents[1].dispatchType = |
| 220 WebInputEvent::DispatchType::ListenersNonBlockingPassive; | 220 WebInputEvent::DispatchType::ListenersNonBlockingPassive; |
| 221 EXPECT_EQ(kEvents[1], *last_touch_event); | 221 EXPECT_EQ(kEvents[1], *last_touch_event); |
| 222 | 222 |
| 223 EXPECT_EQ(kEvents[2].size, handled_events_.at(1)->size); | 223 EXPECT_EQ(kEvents[2].size(), handled_events_.at(1)->size()); |
| 224 EXPECT_EQ(kEvents[2].type, handled_events_.at(2)->type); | 224 EXPECT_EQ(kEvents[2].type(), handled_events_.at(2)->type()); |
| 225 last_touch_event = | 225 last_touch_event = |
| 226 static_cast<const WebTouchEvent*>(handled_events_.at(2).get()); | 226 static_cast<const WebTouchEvent*>(handled_events_.at(2).get()); |
| 227 WebTouchEvent coalesced_event = kEvents[2]; | 227 WebTouchEvent coalesced_event = kEvents[2]; |
| 228 ui::Coalesce(kEvents[3], &coalesced_event); | 228 ui::Coalesce(kEvents[3], &coalesced_event); |
| 229 coalesced_event.dispatchType = | 229 coalesced_event.dispatchType = |
| 230 WebInputEvent::DispatchType::ListenersNonBlockingPassive; | 230 WebInputEvent::DispatchType::ListenersNonBlockingPassive; |
| 231 EXPECT_EQ(coalesced_event, *last_touch_event); | 231 EXPECT_EQ(coalesced_event, *last_touch_event); |
| 232 histogram_tester.ExpectBucketCount(kCoalescedCountHistogram, 0, 1); | 232 histogram_tester.ExpectBucketCount(kCoalescedCountHistogram, 0, 1); |
| 233 histogram_tester.ExpectBucketCount(kCoalescedCountHistogram, 1, 1); | 233 histogram_tester.ExpectBucketCount(kCoalescedCountHistogram, 1, 1); |
| 234 } | 234 } |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 290 | 290 |
| 291 EXPECT_EQ(2u, event_queue().size()); | 291 EXPECT_EQ(2u, event_queue().size()); |
| 292 EXPECT_EQ(raf_aligned_input_setting_ != | 292 EXPECT_EQ(raf_aligned_input_setting_ != |
| 293 (kRafAlignedEnabledMouse | kRafAlignedEnabledTouch), | 293 (kRafAlignedEnabledMouse | kRafAlignedEnabledTouch), |
| 294 main_task_runner_->HasPendingTask()); | 294 main_task_runner_->HasPendingTask()); |
| 295 RunPendingTasksWithSimulatedRaf(); | 295 RunPendingTasksWithSimulatedRaf(); |
| 296 EXPECT_FALSE(main_task_runner_->HasPendingTask()); | 296 EXPECT_FALSE(main_task_runner_->HasPendingTask()); |
| 297 EXPECT_EQ(0u, event_queue().size()); | 297 EXPECT_EQ(0u, event_queue().size()); |
| 298 EXPECT_EQ(2u, handled_events_.size()); | 298 EXPECT_EQ(2u, handled_events_.size()); |
| 299 { | 299 { |
| 300 EXPECT_EQ(kWheelEvents[0].size, handled_events_.at(0)->size); | 300 EXPECT_EQ(kWheelEvents[0].size(), handled_events_.at(0)->size()); |
| 301 EXPECT_EQ(kWheelEvents[0].type, handled_events_.at(0)->type); | 301 EXPECT_EQ(kWheelEvents[0].type(), handled_events_.at(0)->type()); |
| 302 const WebMouseWheelEvent* last_wheel_event = | 302 const WebMouseWheelEvent* last_wheel_event = |
| 303 static_cast<const WebMouseWheelEvent*>(handled_events_.at(0).get()); | 303 static_cast<const WebMouseWheelEvent*>(handled_events_.at(0).get()); |
| 304 EXPECT_EQ(WebInputEvent::DispatchType::ListenersNonBlockingPassive, | 304 EXPECT_EQ(WebInputEvent::DispatchType::ListenersNonBlockingPassive, |
| 305 last_wheel_event->dispatchType); | 305 last_wheel_event->dispatchType); |
| 306 WebMouseWheelEvent coalesced_event = kWheelEvents[0]; | 306 WebMouseWheelEvent coalesced_event = kWheelEvents[0]; |
| 307 ui::Coalesce(kWheelEvents[1], &coalesced_event); | 307 ui::Coalesce(kWheelEvents[1], &coalesced_event); |
| 308 coalesced_event.dispatchType = | 308 coalesced_event.dispatchType = |
| 309 WebInputEvent::DispatchType::ListenersNonBlockingPassive; | 309 WebInputEvent::DispatchType::ListenersNonBlockingPassive; |
| 310 EXPECT_EQ(coalesced_event, *last_wheel_event); | 310 EXPECT_EQ(coalesced_event, *last_wheel_event); |
| 311 } | 311 } |
| 312 { | 312 { |
| 313 EXPECT_EQ(kTouchEvents[0].size, handled_events_.at(1)->size); | 313 EXPECT_EQ(kTouchEvents[0].size(), handled_events_.at(1)->size()); |
| 314 EXPECT_EQ(kTouchEvents[0].type, handled_events_.at(1)->type); | 314 EXPECT_EQ(kTouchEvents[0].type(), handled_events_.at(1)->type()); |
| 315 const WebTouchEvent* last_touch_event = | 315 const WebTouchEvent* last_touch_event = |
| 316 static_cast<const WebTouchEvent*>(handled_events_.at(1).get()); | 316 static_cast<const WebTouchEvent*>(handled_events_.at(1).get()); |
| 317 WebTouchEvent coalesced_event = kTouchEvents[0]; | 317 WebTouchEvent coalesced_event = kTouchEvents[0]; |
| 318 ui::Coalesce(kTouchEvents[1], &coalesced_event); | 318 ui::Coalesce(kTouchEvents[1], &coalesced_event); |
| 319 coalesced_event.dispatchType = | 319 coalesced_event.dispatchType = |
| 320 WebInputEvent::DispatchType::ListenersNonBlockingPassive; | 320 WebInputEvent::DispatchType::ListenersNonBlockingPassive; |
| 321 EXPECT_EQ(coalesced_event, *last_touch_event); | 321 EXPECT_EQ(coalesced_event, *last_touch_event); |
| 322 } | 322 } |
| 323 } | 323 } |
| 324 | 324 |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 496 kEvents.PressPoint(10, 10); | 496 kEvents.PressPoint(10, 10); |
| 497 kEvents.touchStartOrFirstTouchMove = true; | 497 kEvents.touchStartOrFirstTouchMove = true; |
| 498 set_enable_fling_passive_listener_flag(true); | 498 set_enable_fling_passive_listener_flag(true); |
| 499 | 499 |
| 500 EXPECT_FALSE(last_touch_start_forced_nonblocking_due_to_fling()); | 500 EXPECT_FALSE(last_touch_start_forced_nonblocking_due_to_fling()); |
| 501 HandleEvent(kEvents, INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING_DUE_TO_FLING); | 501 HandleEvent(kEvents, INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING_DUE_TO_FLING); |
| 502 RunPendingTasksWithSimulatedRaf(); | 502 RunPendingTasksWithSimulatedRaf(); |
| 503 EXPECT_FALSE(main_task_runner_->HasPendingTask()); | 503 EXPECT_FALSE(main_task_runner_->HasPendingTask()); |
| 504 EXPECT_EQ(0u, event_queue().size()); | 504 EXPECT_EQ(0u, event_queue().size()); |
| 505 EXPECT_EQ(1u, handled_events_.size()); | 505 EXPECT_EQ(1u, handled_events_.size()); |
| 506 EXPECT_EQ(kEvents.size, handled_events_.at(0)->size); | 506 EXPECT_EQ(kEvents.size(), handled_events_.at(0)->size()); |
| 507 EXPECT_EQ(kEvents.type, handled_events_.at(0)->type); | 507 EXPECT_EQ(kEvents.type(), handled_events_.at(0)->type()); |
| 508 EXPECT_TRUE(last_touch_start_forced_nonblocking_due_to_fling()); | 508 EXPECT_TRUE(last_touch_start_forced_nonblocking_due_to_fling()); |
| 509 const WebTouchEvent* last_touch_event = | 509 const WebTouchEvent* last_touch_event = |
| 510 static_cast<const WebTouchEvent*>(handled_events_.at(0).get()); | 510 static_cast<const WebTouchEvent*>(handled_events_.at(0).get()); |
| 511 kEvents.dispatchType = WebInputEvent::ListenersForcedNonBlockingDueToFling; | 511 kEvents.dispatchType = WebInputEvent::ListenersForcedNonBlockingDueToFling; |
| 512 EXPECT_EQ(kEvents, *last_touch_event); | 512 EXPECT_EQ(kEvents, *last_touch_event); |
| 513 | 513 |
| 514 kEvents.MovePoint(0, 30, 30); | 514 kEvents.MovePoint(0, 30, 30); |
| 515 EXPECT_FALSE(main_task_runner_->HasPendingTask()); | 515 EXPECT_FALSE(main_task_runner_->HasPendingTask()); |
| 516 HandleEvent(kEvents, INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING_DUE_TO_FLING); | 516 HandleEvent(kEvents, INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING_DUE_TO_FLING); |
| 517 EXPECT_EQ((raf_aligned_input_setting_ & kRafAlignedEnabledTouch) == 0, | 517 EXPECT_EQ((raf_aligned_input_setting_ & kRafAlignedEnabledTouch) == 0, |
| 518 main_task_runner_->HasPendingTask()); | 518 main_task_runner_->HasPendingTask()); |
| 519 RunPendingTasksWithSimulatedRaf(); | 519 RunPendingTasksWithSimulatedRaf(); |
| 520 EXPECT_FALSE(main_task_runner_->HasPendingTask()); | 520 EXPECT_FALSE(main_task_runner_->HasPendingTask()); |
| 521 EXPECT_EQ(0u, event_queue().size()); | 521 EXPECT_EQ(0u, event_queue().size()); |
| 522 EXPECT_EQ(2u, handled_events_.size()); | 522 EXPECT_EQ(2u, handled_events_.size()); |
| 523 EXPECT_EQ(kEvents.size, handled_events_.at(1)->size); | 523 EXPECT_EQ(kEvents.size(), handled_events_.at(1)->size()); |
| 524 EXPECT_EQ(kEvents.type, handled_events_.at(1)->type); | 524 EXPECT_EQ(kEvents.type(), handled_events_.at(1)->type()); |
| 525 EXPECT_TRUE(last_touch_start_forced_nonblocking_due_to_fling()); | 525 EXPECT_TRUE(last_touch_start_forced_nonblocking_due_to_fling()); |
| 526 last_touch_event = | 526 last_touch_event = |
| 527 static_cast<const WebTouchEvent*>(handled_events_.at(1).get()); | 527 static_cast<const WebTouchEvent*>(handled_events_.at(1).get()); |
| 528 kEvents.dispatchType = WebInputEvent::ListenersForcedNonBlockingDueToFling; | 528 kEvents.dispatchType = WebInputEvent::ListenersForcedNonBlockingDueToFling; |
| 529 EXPECT_EQ(kEvents, *last_touch_event); | 529 EXPECT_EQ(kEvents, *last_touch_event); |
| 530 | 530 |
| 531 kEvents.MovePoint(0, 50, 50); | 531 kEvents.MovePoint(0, 50, 50); |
| 532 kEvents.touchStartOrFirstTouchMove = false; | 532 kEvents.touchStartOrFirstTouchMove = false; |
| 533 HandleEvent(kEvents, INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING_DUE_TO_FLING); | 533 HandleEvent(kEvents, INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING_DUE_TO_FLING); |
| 534 RunPendingTasksWithSimulatedRaf(); | 534 RunPendingTasksWithSimulatedRaf(); |
| 535 EXPECT_FALSE(main_task_runner_->HasPendingTask()); | 535 EXPECT_FALSE(main_task_runner_->HasPendingTask()); |
| 536 EXPECT_EQ(0u, event_queue().size()); | 536 EXPECT_EQ(0u, event_queue().size()); |
| 537 EXPECT_EQ(3u, handled_events_.size()); | 537 EXPECT_EQ(3u, handled_events_.size()); |
| 538 EXPECT_EQ(kEvents.size, handled_events_.at(2)->size); | 538 EXPECT_EQ(kEvents.size(), handled_events_.at(2)->size()); |
| 539 EXPECT_EQ(kEvents.type, handled_events_.at(2)->type); | 539 EXPECT_EQ(kEvents.type(), handled_events_.at(2)->type()); |
| 540 EXPECT_EQ(kEvents.dispatchType, WebInputEvent::Blocking); | 540 EXPECT_EQ(kEvents.dispatchType, WebInputEvent::Blocking); |
| 541 last_touch_event = | 541 last_touch_event = |
| 542 static_cast<const WebTouchEvent*>(handled_events_.at(2).get()); | 542 static_cast<const WebTouchEvent*>(handled_events_.at(2).get()); |
| 543 EXPECT_EQ(kEvents, *last_touch_event); | 543 EXPECT_EQ(kEvents, *last_touch_event); |
| 544 | 544 |
| 545 kEvents.ReleasePoint(0); | 545 kEvents.ReleasePoint(0); |
| 546 HandleEvent(kEvents, INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING_DUE_TO_FLING); | 546 HandleEvent(kEvents, INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING_DUE_TO_FLING); |
| 547 RunPendingTasksWithSimulatedRaf(); | 547 RunPendingTasksWithSimulatedRaf(); |
| 548 EXPECT_FALSE(main_task_runner_->HasPendingTask()); | 548 EXPECT_FALSE(main_task_runner_->HasPendingTask()); |
| 549 EXPECT_EQ(0u, event_queue().size()); | 549 EXPECT_EQ(0u, event_queue().size()); |
| 550 EXPECT_EQ(4u, handled_events_.size()); | 550 EXPECT_EQ(4u, handled_events_.size()); |
| 551 EXPECT_EQ(kEvents.size, handled_events_.at(3)->size); | 551 EXPECT_EQ(kEvents.size(), handled_events_.at(3)->size()); |
| 552 EXPECT_EQ(kEvents.type, handled_events_.at(3)->type); | 552 EXPECT_EQ(kEvents.type(), handled_events_.at(3)->type()); |
| 553 EXPECT_EQ(kEvents.dispatchType, WebInputEvent::Blocking); | 553 EXPECT_EQ(kEvents.dispatchType, WebInputEvent::Blocking); |
| 554 last_touch_event = | 554 last_touch_event = |
| 555 static_cast<const WebTouchEvent*>(handled_events_.at(3).get()); | 555 static_cast<const WebTouchEvent*>(handled_events_.at(3).get()); |
| 556 EXPECT_EQ(kEvents, *last_touch_event); | 556 EXPECT_EQ(kEvents, *last_touch_event); |
| 557 } | 557 } |
| 558 | 558 |
| 559 TEST_P(MainThreadEventQueueTest, BlockingTouchesOutsideFling) { | 559 TEST_P(MainThreadEventQueueTest, BlockingTouchesOutsideFling) { |
| 560 SyntheticWebTouchEvent kEvents; | 560 SyntheticWebTouchEvent kEvents; |
| 561 kEvents.PressPoint(10, 10); | 561 kEvents.PressPoint(10, 10); |
| 562 kEvents.touchStartOrFirstTouchMove = true; | 562 kEvents.touchStartOrFirstTouchMove = true; |
| 563 set_enable_fling_passive_listener_flag(false); | 563 set_enable_fling_passive_listener_flag(false); |
| 564 | 564 |
| 565 HandleEvent(kEvents, INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 565 HandleEvent(kEvents, INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 566 RunPendingTasksWithSimulatedRaf(); | 566 RunPendingTasksWithSimulatedRaf(); |
| 567 EXPECT_FALSE(main_task_runner_->HasPendingTask()); | 567 EXPECT_FALSE(main_task_runner_->HasPendingTask()); |
| 568 EXPECT_EQ(0u, event_queue().size()); | 568 EXPECT_EQ(0u, event_queue().size()); |
| 569 EXPECT_EQ(1u, handled_events_.size()); | 569 EXPECT_EQ(1u, handled_events_.size()); |
| 570 EXPECT_EQ(kEvents.size, handled_events_.at(0)->size); | 570 EXPECT_EQ(kEvents.size(), handled_events_.at(0)->size()); |
| 571 EXPECT_EQ(kEvents.type, handled_events_.at(0)->type); | 571 EXPECT_EQ(kEvents.type(), handled_events_.at(0)->type()); |
| 572 EXPECT_EQ(kEvents.dispatchType, WebInputEvent::Blocking); | 572 EXPECT_EQ(kEvents.dispatchType, WebInputEvent::Blocking); |
| 573 EXPECT_FALSE(last_touch_start_forced_nonblocking_due_to_fling()); | 573 EXPECT_FALSE(last_touch_start_forced_nonblocking_due_to_fling()); |
| 574 const WebTouchEvent* last_touch_event = | 574 const WebTouchEvent* last_touch_event = |
| 575 static_cast<const WebTouchEvent*>(handled_events_.at(0).get()); | 575 static_cast<const WebTouchEvent*>(handled_events_.at(0).get()); |
| 576 EXPECT_EQ(kEvents, *last_touch_event); | 576 EXPECT_EQ(kEvents, *last_touch_event); |
| 577 | 577 |
| 578 set_enable_fling_passive_listener_flag(false); | 578 set_enable_fling_passive_listener_flag(false); |
| 579 HandleEvent(kEvents, INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 579 HandleEvent(kEvents, INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 580 RunPendingTasksWithSimulatedRaf(); | 580 RunPendingTasksWithSimulatedRaf(); |
| 581 EXPECT_FALSE(main_task_runner_->HasPendingTask()); | 581 EXPECT_FALSE(main_task_runner_->HasPendingTask()); |
| 582 EXPECT_EQ(0u, event_queue().size()); | 582 EXPECT_EQ(0u, event_queue().size()); |
| 583 EXPECT_EQ(2u, handled_events_.size()); | 583 EXPECT_EQ(2u, handled_events_.size()); |
| 584 EXPECT_EQ(kEvents.size, handled_events_.at(1)->size); | 584 EXPECT_EQ(kEvents.size(), handled_events_.at(1)->size()); |
| 585 EXPECT_EQ(kEvents.type, handled_events_.at(1)->type); | 585 EXPECT_EQ(kEvents.type(), handled_events_.at(1)->type()); |
| 586 EXPECT_EQ(kEvents.dispatchType, WebInputEvent::Blocking); | 586 EXPECT_EQ(kEvents.dispatchType, WebInputEvent::Blocking); |
| 587 EXPECT_FALSE(last_touch_start_forced_nonblocking_due_to_fling()); | 587 EXPECT_FALSE(last_touch_start_forced_nonblocking_due_to_fling()); |
| 588 last_touch_event = | 588 last_touch_event = |
| 589 static_cast<const WebTouchEvent*>(handled_events_.at(1).get()); | 589 static_cast<const WebTouchEvent*>(handled_events_.at(1).get()); |
| 590 EXPECT_EQ(kEvents, *last_touch_event); | 590 EXPECT_EQ(kEvents, *last_touch_event); |
| 591 | 591 |
| 592 set_enable_fling_passive_listener_flag(true); | 592 set_enable_fling_passive_listener_flag(true); |
| 593 HandleEvent(kEvents, INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 593 HandleEvent(kEvents, INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 594 RunPendingTasksWithSimulatedRaf(); | 594 RunPendingTasksWithSimulatedRaf(); |
| 595 EXPECT_FALSE(main_task_runner_->HasPendingTask()); | 595 EXPECT_FALSE(main_task_runner_->HasPendingTask()); |
| 596 EXPECT_EQ(0u, event_queue().size()); | 596 EXPECT_EQ(0u, event_queue().size()); |
| 597 EXPECT_EQ(3u, handled_events_.size()); | 597 EXPECT_EQ(3u, handled_events_.size()); |
| 598 EXPECT_EQ(kEvents.size, handled_events_.at(2)->size); | 598 EXPECT_EQ(kEvents.size(), handled_events_.at(2)->size()); |
| 599 EXPECT_EQ(kEvents.type, handled_events_.at(2)->type); | 599 EXPECT_EQ(kEvents.type(), handled_events_.at(2)->type()); |
| 600 EXPECT_EQ(kEvents.dispatchType, WebInputEvent::Blocking); | 600 EXPECT_EQ(kEvents.dispatchType, WebInputEvent::Blocking); |
| 601 EXPECT_FALSE(last_touch_start_forced_nonblocking_due_to_fling()); | 601 EXPECT_FALSE(last_touch_start_forced_nonblocking_due_to_fling()); |
| 602 last_touch_event = | 602 last_touch_event = |
| 603 static_cast<const WebTouchEvent*>(handled_events_.at(2).get()); | 603 static_cast<const WebTouchEvent*>(handled_events_.at(2).get()); |
| 604 EXPECT_EQ(kEvents, *last_touch_event); | 604 EXPECT_EQ(kEvents, *last_touch_event); |
| 605 | 605 |
| 606 kEvents.MovePoint(0, 30, 30); | 606 kEvents.MovePoint(0, 30, 30); |
| 607 HandleEvent(kEvents, INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 607 HandleEvent(kEvents, INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 608 RunPendingTasksWithSimulatedRaf(); | 608 RunPendingTasksWithSimulatedRaf(); |
| 609 EXPECT_FALSE(main_task_runner_->HasPendingTask()); | 609 EXPECT_FALSE(main_task_runner_->HasPendingTask()); |
| 610 EXPECT_EQ(0u, event_queue().size()); | 610 EXPECT_EQ(0u, event_queue().size()); |
| 611 EXPECT_EQ(4u, handled_events_.size()); | 611 EXPECT_EQ(4u, handled_events_.size()); |
| 612 EXPECT_EQ(kEvents.size, handled_events_.at(3)->size); | 612 EXPECT_EQ(kEvents.size(), handled_events_.at(3)->size()); |
| 613 EXPECT_EQ(kEvents.type, handled_events_.at(3)->type); | 613 EXPECT_EQ(kEvents.type(), handled_events_.at(3)->type()); |
| 614 EXPECT_EQ(kEvents.dispatchType, WebInputEvent::Blocking); | 614 EXPECT_EQ(kEvents.dispatchType, WebInputEvent::Blocking); |
| 615 EXPECT_FALSE(last_touch_start_forced_nonblocking_due_to_fling()); | 615 EXPECT_FALSE(last_touch_start_forced_nonblocking_due_to_fling()); |
| 616 last_touch_event = | 616 last_touch_event = |
| 617 static_cast<const WebTouchEvent*>(handled_events_.at(3).get()); | 617 static_cast<const WebTouchEvent*>(handled_events_.at(3).get()); |
| 618 EXPECT_EQ(kEvents, *last_touch_event); | 618 EXPECT_EQ(kEvents, *last_touch_event); |
| 619 } | 619 } |
| 620 | 620 |
| 621 // The boolean parameterized test varies whether rAF aligned input | 621 // The boolean parameterized test varies whether rAF aligned input |
| 622 // is enabled or not. | 622 // is enabled or not. |
| 623 INSTANTIATE_TEST_CASE_P( | 623 INSTANTIATE_TEST_CASE_P( |
| 624 MainThreadEventQueueTests, | 624 MainThreadEventQueueTests, |
| 625 MainThreadEventQueueTest, | 625 MainThreadEventQueueTest, |
| 626 testing::Range(0u, | 626 testing::Range(0u, |
| 627 (kRafAlignedEnabledTouch | kRafAlignedEnabledMouse) + 1)); | 627 (kRafAlignedEnabledTouch | kRafAlignedEnabledMouse) + 1)); |
| 628 | 628 |
| 629 } // namespace content | 629 } // namespace content |
| OLD | NEW |