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