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 79cb66c803a5fed9aaf6a3ba26152a0ec972e971..8871a990056d9e2789521a210feb023ae0906d32 100644 |
--- a/content/renderer/input/input_event_filter_unittest.cc |
+++ b/content/renderer/input/input_event_filter_unittest.cc |
@@ -19,6 +19,7 @@ |
using blink::WebInputEvent; |
using blink::WebMouseEvent; |
+using blink::WebTouchEvent; |
namespace content { |
namespace { |
@@ -108,8 +109,9 @@ void AddMessagesToFilter(IPC::MessageFilter* message_filter, |
base::MessageLoop::current()->RunUntilIdle(); |
} |
+template <typename T> |
void AddEventsToFilter(IPC::MessageFilter* message_filter, |
- const WebMouseEvent events[], |
+ const T events[], |
size_t count) { |
std::vector<IPC::Message> messages; |
for (size_t i = 0; i < count; ++i) { |
@@ -294,4 +296,44 @@ TEST_F(InputEventFilterTest, PreserveRelativeOrder) { |
} |
} |
+// Test once we receive the inputevent_acks, they still have the same |
+// unique_event_id as the webtouchevent. |
+TEST_F(InputEventFilterTest, WebTouchEventAck) { |
+ WebTouchEvent touch1; |
+ touch1.type = WebInputEvent::TouchStart; |
+ touch1.uniqueTouchEventId = 123456; |
+ |
+ WebTouchEvent touch2; |
+ touch2.type = WebInputEvent::TouchMove; |
+ touch2.uniqueTouchEventId = 234567; |
+ |
+ WebTouchEvent kEvents[2] = {touch1, touch2}; |
+ |
+ AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents)); |
+ EXPECT_EQ(0U, ipc_sink_.message_count()); |
+ EXPECT_EQ(0U, event_recorder_.record_count()); |
+ EXPECT_EQ(0U, message_recorder_.message_count()); |
+ |
+ filter_->DidAddInputHandler(kTestRoutingID, NULL); |
+ |
+ AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents)); |
+ ASSERT_EQ(arraysize(kEvents), ipc_sink_.message_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) { |
+ const IPC::Message* message = ipc_sink_.GetMessageAt(i); |
+ EXPECT_EQ(kTestRoutingID, message->routing_id()); |
+ EXPECT_EQ(InputHostMsg_HandleInputEvent_ACK::ID, message->type()); |
+ |
+ InputHostMsg_HandleInputEvent_ACK::Param params; |
+ EXPECT_TRUE(InputHostMsg_HandleInputEvent_ACK::Read(message, ¶ms)); |
+ WebInputEvent::Type event_type = get<0>(params).type; |
+ uint64 unique_event_id = get<0>(params).unique_touch_event_id; |
+ |
+ EXPECT_EQ(kEvents[i].type, event_type); |
+ EXPECT_EQ(kEvents[i].uniqueTouchEventId, unique_event_id); |
+ } |
+} |
+ |
} // namespace content |