Index: content/renderer/input/input_event_filter_unittest.cc |
diff --git a/content/renderer/input/input_event_filter_unittest.cc b/content/renderer/input/input_event_filter_unittest.cc |
index 880a361f2d074f517917da21f4765648e1468290..996488e958cc0ba4a4bf7a145cf6d1206548cb2b 100644 |
--- a/content/renderer/input/input_event_filter_unittest.cc |
+++ b/content/renderer/input/input_event_filter_unittest.cc |
@@ -18,6 +18,7 @@ |
#include "content/common/input_messages.h" |
#include "content/common/view_messages.h" |
#include "content/renderer/input/input_event_filter.h" |
+#include "content/renderer/input/input_handler_manager.h" |
#include "ipc/ipc_listener.h" |
#include "ipc/ipc_test_sink.h" |
#include "ipc/message_filter.h" |
@@ -34,15 +35,16 @@ namespace { |
const int kTestRoutingID = 13; |
-class InputEventRecorder { |
+class InputEventRecorder : public content::InputHandlerManager { |
public: |
- InputEventRecorder() |
- : filter_(NULL), |
+ InputEventRecorder(InputEventFilter* filter) |
+ : InputHandlerManager(nullptr, filter, nullptr, nullptr), |
handle_events_(false), |
send_to_widget_(false), |
passive_(false) {} |
- void set_filter(InputEventFilter* filter) { filter_ = filter; } |
+ ~InputEventRecorder() override {} |
+ |
void set_handle_events(bool value) { handle_events_ = value; } |
void set_send_to_widget(bool value) { send_to_widget_ = value; } |
void set_passive(bool value) { passive_ = value; } |
@@ -60,7 +62,7 @@ class InputEventRecorder { |
InputEventAckState HandleInputEvent(int routing_id, |
const WebInputEvent* event, |
- ui::LatencyInfo* latency_info) { |
+ ui::LatencyInfo* latency_info) override { |
DCHECK_EQ(kTestRoutingID, routing_id); |
records_.push_back(Record(event)); |
if (handle_events_) { |
@@ -84,7 +86,6 @@ class InputEventRecorder { |
std::vector<char> event_data; |
}; |
- InputEventFilter* filter_; |
bool handle_events_; |
bool send_to_widget_; |
bool passive_; |
@@ -145,11 +146,8 @@ class InputEventFilterTest : public testing::Test { |
base::Bind(base::IgnoreResult(&IPCMessageRecorder::OnMessageReceived), |
base::Unretained(&message_recorder_)), |
base::ThreadTaskRunnerHandle::Get(), message_loop_.task_runner()); |
- filter_->SetBoundHandler(base::Bind(&InputEventRecorder::HandleInputEvent, |
- base::Unretained(&event_recorder_))); |
- |
- event_recorder_.set_filter(filter_.get()); |
- |
+ event_recorder_ = base::MakeUnique<InputEventRecorder>(filter_.get()); |
+ filter_->SetInputHandlerManager(event_recorder_.get()); |
filter_->OnFilterAdded(&ipc_sink_); |
} |
@@ -162,10 +160,10 @@ class InputEventFilterTest : public testing::Test { |
// Used to record IPCs forwarded by the filter to the main thread. |
IPCMessageRecorder message_recorder_; |
- // Used to record WebInputEvents delivered to the handler. |
- InputEventRecorder event_recorder_; |
- |
scoped_refptr<InputEventFilter> filter_; |
+ |
+ // Used to record WebInputEvents delivered to the handler. |
+ std::unique_ptr<InputEventRecorder> event_recorder_; |
}; |
TEST_F(InputEventFilterTest, Basic) { |
@@ -177,14 +175,14 @@ TEST_F(InputEventFilterTest, Basic) { |
AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents)); |
EXPECT_EQ(0U, ipc_sink_.message_count()); |
- EXPECT_EQ(0U, event_recorder_.record_count()); |
+ EXPECT_EQ(0U, event_recorder_->record_count()); |
EXPECT_EQ(0U, message_recorder_.message_count()); |
filter_->RegisterRoutingID(kTestRoutingID); |
AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents)); |
ASSERT_EQ(arraysize(kEvents), ipc_sink_.message_count()); |
- ASSERT_EQ(arraysize(kEvents), event_recorder_.record_count()); |
+ ASSERT_EQ(arraysize(kEvents), event_recorder_->record_count()); |
EXPECT_EQ(0U, message_recorder_.message_count()); |
for (size_t i = 0; i < arraysize(kEvents); ++i) { |
@@ -200,18 +198,18 @@ TEST_F(InputEventFilterTest, Basic) { |
EXPECT_EQ(kEvents[i].type, event_type); |
EXPECT_EQ(ack_result, INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS); |
- const WebInputEvent* event = event_recorder_.record_at(i); |
+ const WebInputEvent* event = event_recorder_->record_at(i); |
ASSERT_TRUE(event); |
EXPECT_EQ(kEvents[i].size, event->size); |
EXPECT_TRUE(memcmp(&kEvents[i], event, event->size) == 0); |
} |
- event_recorder_.set_send_to_widget(true); |
+ event_recorder_->set_send_to_widget(true); |
AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents)); |
EXPECT_EQ(arraysize(kEvents), ipc_sink_.message_count()); |
- EXPECT_EQ(2 * arraysize(kEvents), event_recorder_.record_count()); |
+ EXPECT_EQ(2 * arraysize(kEvents), event_recorder_->record_count()); |
EXPECT_EQ(1u, message_recorder_.message_count()); |
{ |
@@ -229,14 +227,14 @@ TEST_F(InputEventFilterTest, Basic) { |
// Now reset everything, and test that DidHandleInputEvent is called. |
ipc_sink_.ClearMessages(); |
- event_recorder_.Clear(); |
+ event_recorder_->Clear(); |
message_recorder_.Clear(); |
- event_recorder_.set_handle_events(true); |
+ event_recorder_->set_handle_events(true); |
AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents)); |
EXPECT_EQ(arraysize(kEvents), ipc_sink_.message_count()); |
- EXPECT_EQ(arraysize(kEvents), event_recorder_.record_count()); |
+ EXPECT_EQ(arraysize(kEvents), event_recorder_->record_count()); |
EXPECT_EQ(0U, message_recorder_.message_count()); |
for (size_t i = 0; i < arraysize(kEvents); ++i) { |
@@ -257,8 +255,7 @@ TEST_F(InputEventFilterTest, Basic) { |
TEST_F(InputEventFilterTest, PreserveRelativeOrder) { |
filter_->RegisterRoutingID(kTestRoutingID); |
- event_recorder_.set_send_to_widget(true); |
- |
+ event_recorder_->set_send_to_widget(true); |
WebMouseEvent mouse_down = |
SyntheticWebMouseEventBuilder::Build(WebMouseEvent::MouseDown); |
@@ -320,11 +317,11 @@ TEST_F(InputEventFilterTest, NonBlockingWheel) { |
}; |
filter_->RegisterRoutingID(kTestRoutingID); |
- event_recorder_.set_send_to_widget(true); |
- event_recorder_.set_passive(true); |
+ event_recorder_->set_send_to_widget(true); |
+ event_recorder_->set_passive(true); |
AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents)); |
- EXPECT_EQ(arraysize(kEvents), event_recorder_.record_count()); |
+ EXPECT_EQ(arraysize(kEvents), event_recorder_->record_count()); |
ASSERT_EQ(4u, ipc_sink_.message_count()); |
// All events are handled, one is coalesced. |
@@ -381,11 +378,11 @@ TEST_F(InputEventFilterTest, NonBlockingTouch) { |
kEvents[3].MovePoint(0, 35, 35); |
filter_->RegisterRoutingID(kTestRoutingID); |
- event_recorder_.set_send_to_widget(true); |
- event_recorder_.set_passive(true); |
+ event_recorder_->set_send_to_widget(true); |
+ event_recorder_->set_passive(true); |
AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents)); |
- EXPECT_EQ(arraysize(kEvents), event_recorder_.record_count()); |
+ EXPECT_EQ(arraysize(kEvents), event_recorder_->record_count()); |
ASSERT_EQ(4u, ipc_sink_.message_count()); |
// All events are handled and one set was coalesced. |
@@ -438,16 +435,16 @@ TEST_F(InputEventFilterTest, IntermingledNonBlockingTouch) { |
kBlockingEvents[0].PressPoint(10, 10); |
filter_->RegisterRoutingID(kTestRoutingID); |
- event_recorder_.set_send_to_widget(true); |
- event_recorder_.set_passive(true); |
+ event_recorder_->set_send_to_widget(true); |
+ event_recorder_->set_passive(true); |
AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents)); |
- EXPECT_EQ(arraysize(kEvents), event_recorder_.record_count()); |
+ EXPECT_EQ(arraysize(kEvents), event_recorder_->record_count()); |
- event_recorder_.set_passive(false); |
+ event_recorder_->set_passive(false); |
AddEventsToFilter(filter_.get(), kBlockingEvents, arraysize(kBlockingEvents)); |
EXPECT_EQ(arraysize(kEvents) + arraysize(kBlockingEvents), |
- event_recorder_.record_count()); |
- ASSERT_EQ(3u, event_recorder_.record_count()); |
+ event_recorder_->record_count()); |
+ ASSERT_EQ(3u, event_recorder_->record_count()); |
EXPECT_EQ(3u, message_recorder_.message_count()); |
{ |