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

Unified Diff: content/renderer/input/main_thread_event_queue_unittest.cc

Issue 2813683002: Allow MainThreadEventQueue to call the RenderWidget directly. (Closed)
Patch Set: Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: content/renderer/input/main_thread_event_queue_unittest.cc
diff --git a/content/renderer/input/main_thread_event_queue_unittest.cc b/content/renderer/input/main_thread_event_queue_unittest.cc
index 81c324cbb5e5c8d3df38789857ef46af93098a0b..b4fc32ee7dfc6640ad6e51087c16811fe173cb4d 100644
--- a/content/renderer/input/main_thread_event_queue_unittest.cc
+++ b/content/renderer/input/main_thread_event_queue_unittest.cc
@@ -46,7 +46,6 @@ const unsigned kRafAlignedEnabledMouse = 1 << 1;
// Simulate a 16ms frame signal.
const base::TimeDelta kFrameInterval = base::TimeDelta::FromMilliseconds(16);
-const int kTestRoutingID = 13;
const char* kCoalescedCountHistogram =
"Event.MainThreadEventQueue.CoalescedCount";
@@ -62,8 +61,8 @@ class HandledTask {
class HandledEvent : public HandledTask {
public:
- explicit HandledEvent(const blink::WebCoalescedInputEvent* event)
- : event_(event->Event(), event->GetCoalescedEventsPointers()) {}
+ explicit HandledEvent(const blink::WebCoalescedInputEvent& event)
+ : event_(event.Event(), event.GetCoalescedEventsPointers()) {}
~HandledEvent() override {}
blink::WebCoalescedInputEvent* taskAsEvent() override { return &event_; }
@@ -91,8 +90,34 @@ class HandledClosure : public HandledTask {
unsigned closure_id_;
};
-class MainThreadEventQueueTest : public testing::TestWithParam<unsigned>,
- public MainThreadEventQueueClient {
+class MainThreadEventQueueTest;
+
+class MainThreadEventQueueForTest : public MainThreadEventQueue {
+ public:
+ MainThreadEventQueueForTest(
+ const scoped_refptr<base::SingleThreadTaskRunner>& main_task_runner,
+ blink::scheduler::RendererScheduler* scheduler,
+ MainThreadEventQueueTest* test)
+ : MainThreadEventQueue(main_task_runner, scheduler), test_(test) {}
+
+ InputEventAckState HandleEventOnMainThread(
+ const blink::WebCoalescedInputEvent& event,
+ const ui::LatencyInfo& latency,
+ InputEventDispatchType dispatch_type) override;
+
+ void SendInputEventAck(blink::WebInputEvent::Type type,
+ InputEventAckState ack_result,
+ uint32_t touch_event_id) override;
+
+ void NeedsMainFrame() override;
+
+ private:
+ ~MainThreadEventQueueForTest() override {}
+
+ MainThreadEventQueueTest* test_;
+};
+
+class MainThreadEventQueueTest : public testing::TestWithParam<unsigned> {
public:
MainThreadEventQueueTest()
: main_task_runner_(new base::TestSimpleTaskRunner()),
@@ -117,29 +142,8 @@ class MainThreadEventQueueTest : public testing::TestWithParam<unsigned>,
}
void SetUp() override {
- queue_ = new MainThreadEventQueue(kTestRoutingID, this, main_task_runner_,
- &renderer_scheduler_);
- }
-
- void HandleEventOnMainThread(int routing_id,
- const blink::WebCoalescedInputEvent* event,
- const ui::LatencyInfo& latency,
- InputEventDispatchType type) override {
- EXPECT_EQ(kTestRoutingID, routing_id);
-
- std::unique_ptr<HandledTask> handled_event(new HandledEvent(event));
- handled_tasks_.push_back(std::move(handled_event));
-
- queue_->EventHandled(event->Event().GetType(),
- blink::WebInputEventResult::kHandledApplication,
- INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
- }
-
- void SendInputEventAck(int routing_id,
- blink::WebInputEvent::Type type,
- InputEventAckState ack_result,
- uint32_t touch_event_id) override {
- additional_acked_events_.push_back(touch_event_id);
+ queue_ = new MainThreadEventQueueForTest(main_task_runner_,
+ &renderer_scheduler_, this);
}
bool HandleEvent(WebInputEvent& event, InputEventAckState ack_result) {
@@ -159,8 +163,6 @@ class MainThreadEventQueueTest : public testing::TestWithParam<unsigned>,
base::Unretained(this), closure_id));
}
- void NeedsMainFrame(int routing_id) override { needs_main_frame_ = true; }
-
MainThreadEventQueueTaskList& event_queue() {
return queue_->shared_state_.events_;
}
@@ -191,10 +193,11 @@ class MainThreadEventQueueTest : public testing::TestWithParam<unsigned>,
}
protected:
+ friend class MainThreadEventQueueForTest;
base::test::ScopedFeatureList feature_list_;
scoped_refptr<base::TestSimpleTaskRunner> main_task_runner_;
blink::scheduler::MockRendererScheduler renderer_scheduler_;
- scoped_refptr<MainThreadEventQueue> queue_;
+ scoped_refptr<MainThreadEventQueueForTest> queue_;
std::vector<std::unique_ptr<HandledTask>> handled_tasks_;
std::vector<uint32_t> additional_acked_events_;
@@ -204,6 +207,26 @@ class MainThreadEventQueueTest : public testing::TestWithParam<unsigned>,
unsigned closure_count_;
};
+InputEventAckState MainThreadEventQueueForTest::HandleEventOnMainThread(
+ const blink::WebCoalescedInputEvent& event,
+ const ui::LatencyInfo& latency,
+ InputEventDispatchType dispatch_type) {
+ std::unique_ptr<HandledTask> handled_event(new HandledEvent(event));
+ test_->handled_tasks_.push_back(std::move(handled_event));
+ return INPUT_EVENT_ACK_STATE_NOT_CONSUMED;
+}
+
+void MainThreadEventQueueForTest::SendInputEventAck(
+ blink::WebInputEvent::Type type,
+ InputEventAckState ack_result,
+ uint32_t touch_event_id) {
+ test_->additional_acked_events_.push_back(touch_event_id);
+}
+
+void MainThreadEventQueueForTest::NeedsMainFrame() {
+ test_->needs_main_frame_ = true;
+}
+
TEST_P(MainThreadEventQueueTest, NonBlockingWheel) {
base::HistogramTester histogram_tester;
@@ -880,20 +903,6 @@ INSTANTIATE_TEST_CASE_P(
testing::Range(0u,
(kRafAlignedEnabledTouch | kRafAlignedEnabledMouse) + 1));
-class DummyMainThreadEventQueueClient : public MainThreadEventQueueClient {
- void HandleEventOnMainThread(int routing_id,
- const blink::WebCoalescedInputEvent* event,
- const ui::LatencyInfo& latency,
- InputEventDispatchType dispatch_type) override {}
-
- void SendInputEventAck(int routing_id,
- blink::WebInputEvent::Type type,
- InputEventAckState ack_result,
- uint32_t touch_event_id) override {}
-
- void NeedsMainFrame(int routing_id) override {}
-};
-
class MainThreadEventQueueInitializationTest
: public testing::Test {
public:
@@ -914,7 +923,28 @@ class MainThreadEventQueueInitializationTest
blink::scheduler::MockRendererScheduler renderer_scheduler_;
scoped_refptr<base::TestSimpleTaskRunner> main_task_runner_;
std::unique_ptr<base::FieldTrialList> field_trial_list_;
- DummyMainThreadEventQueueClient dummy_main_thread_event_queue_client_;
+};
+
+class MockMainThreadEventQueue : public MainThreadEventQueue {
+ public:
+ MockMainThreadEventQueue(
+ const scoped_refptr<base::SingleThreadTaskRunner>& main_task_runner,
+ blink::scheduler::RendererScheduler* scheduler)
+ : MainThreadEventQueue(main_task_runner, scheduler) {}
+
+ MOCK_METHOD3(HandleEventOnMainThread,
+ InputEventAckState(const blink::WebCoalescedInputEvent& event,
+ const ui::LatencyInfo& latency,
+ InputEventDispatchType dispatch_type));
+
+ MOCK_METHOD3(SendInputEventAck,
+ void(blink::WebInputEvent::Type type,
+ InputEventAckState ack_result,
+ uint32_t touch_event_id));
+ MOCK_METHOD0(NeedsMainFrame, void());
+
+ private:
+ ~MockMainThreadEventQueue() override {}
};
TEST_F(MainThreadEventQueueInitializationTest,
@@ -924,9 +954,8 @@ TEST_F(MainThreadEventQueueInitializationTest,
base::FieldTrialList::CreateFieldTrial(
"MainThreadResponsivenessScrollIntervention", "Enabled123");
- queue_ = new MainThreadEventQueue(kTestRoutingID,
- &dummy_main_thread_event_queue_client_,
- main_task_runner_, &renderer_scheduler_);
+ queue_ =
+ new MockMainThreadEventQueue(main_task_runner_, &renderer_scheduler_);
EXPECT_TRUE(enable_non_blocking_due_to_main_thread_responsiveness_flag());
EXPECT_EQ(base::TimeDelta::FromMilliseconds(123),
main_thread_responsiveness_threshold());
@@ -936,9 +965,8 @@ TEST_F(MainThreadEventQueueInitializationTest,
MainThreadResponsivenessThresholdDisabled) {
base::FieldTrialList::CreateFieldTrial(
"MainThreadResponsivenessScrollIntervention", "Control");
- queue_ = new MainThreadEventQueue(kTestRoutingID,
- &dummy_main_thread_event_queue_client_,
- main_task_runner_, &renderer_scheduler_);
+ queue_ =
+ new MockMainThreadEventQueue(main_task_runner_, &renderer_scheduler_);
EXPECT_FALSE(enable_non_blocking_due_to_main_thread_responsiveness_flag());
EXPECT_EQ(base::TimeDelta::FromMilliseconds(0),
main_thread_responsiveness_threshold());

Powered by Google App Engine
This is Rietveld 408576698