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

Side by Side Diff: content/renderer/input/main_thread_event_queue_unittest.cc

Issue 2573073003: Collapse the API surface on WebInputEvent via accessor functions. (Closed)
Patch Set: Fix nits Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « content/renderer/input/main_thread_event_queue.cc ('k') | content/renderer/input/render_widget_input_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698