Index: content/browser/renderer_host/input/input_router_impl_unittest.cc |
diff --git a/content/browser/renderer_host/input/input_router_impl_unittest.cc b/content/browser/renderer_host/input/input_router_impl_unittest.cc |
index 5b3d7d7e0d68b42828524344529cd221857501c1..ed922c9d8ac272bdfd881c47d2b7d8b56add403c 100644 |
--- a/content/browser/renderer_host/input/input_router_impl_unittest.cc |
+++ b/content/browser/renderer_host/input/input_router_impl_unittest.cc |
@@ -354,7 +354,7 @@ TEST_F(InputRouterImplTest, CoalescesRangeSelection) { |
// Now ack the first message. |
{ |
- scoped_ptr<IPC::Message> response(new ViewHostMsg_SelectRange_ACK(0)); |
+ scoped_ptr<IPC::Message> response(new InputHostMsg_SelectRange_ACK(0)); |
input_router_->OnMessageReceived(*response); |
} |
@@ -367,7 +367,197 @@ TEST_F(InputRouterImplTest, CoalescesRangeSelection) { |
// Acking the coalesced msg should not send any more msg. |
{ |
- scoped_ptr<IPC::Message> response(new ViewHostMsg_SelectRange_ACK(0)); |
+ scoped_ptr<IPC::Message> response(new InputHostMsg_SelectRange_ACK(0)); |
+ input_router_->OnMessageReceived(*response); |
+ } |
+ EXPECT_EQ(0u, GetSentMessageCountAndResetSink()); |
+} |
+ |
+TEST_F(InputRouterImplTest, CoalescesMoveRangeSelectionExtent) { |
+ input_router_->SendInput(scoped_ptr<IPC::Message>( |
+ new InputMsg_MoveRangeSelectionExtent(0, gfx::Point(1, 2)))); |
+ ExpectIPCMessageWithArg1<InputMsg_MoveRangeSelectionExtent>( |
+ process_->sink().GetMessageAt(0), |
+ gfx::Point(1, 2)); |
+ EXPECT_EQ(1u, GetSentMessageCountAndResetSink()); |
+ |
+ // Send two more messages without acking. |
+ input_router_->SendInput(scoped_ptr<IPC::Message>( |
+ new InputMsg_MoveRangeSelectionExtent(0, gfx::Point(3, 4)))); |
+ EXPECT_EQ(0u, GetSentMessageCountAndResetSink()); |
+ |
+ input_router_->SendInput(scoped_ptr<IPC::Message>( |
+ new InputMsg_MoveRangeSelectionExtent(0, gfx::Point(5, 6)))); |
+ EXPECT_EQ(0u, GetSentMessageCountAndResetSink()); |
+ |
+ // Now ack the first message. |
+ { |
+ scoped_ptr<IPC::Message> response( |
+ new InputHostMsg_MoveRangeSelectionExtent_ACK(0)); |
+ input_router_->OnMessageReceived(*response); |
+ } |
+ |
+ // Verify that the two messages are coalesced into one message. |
+ ExpectIPCMessageWithArg1<InputMsg_MoveRangeSelectionExtent>( |
+ process_->sink().GetMessageAt(0), |
+ gfx::Point(5, 6)); |
+ EXPECT_EQ(1u, GetSentMessageCountAndResetSink()); |
+ |
+ // Acking the coalesced msg should not send any more msg. |
+ { |
+ scoped_ptr<IPC::Message> response( |
+ new InputHostMsg_MoveRangeSelectionExtent_ACK(0)); |
+ input_router_->OnMessageReceived(*response); |
+ } |
+ EXPECT_EQ(0u, GetSentMessageCountAndResetSink()); |
+} |
+ |
+TEST_F(InputRouterImplTest, InterleaveSelectRangeAndMoveRangeSelectionExtent) { |
+ // Send first message: SelectRange. |
+ input_router_->SendInput(scoped_ptr<IPC::Message>( |
+ new InputMsg_SelectRange(0, gfx::Point(1, 2), gfx::Point(3, 4)))); |
+ ExpectIPCMessageWithArg2<InputMsg_SelectRange>( |
+ process_->sink().GetMessageAt(0), |
+ gfx::Point(1, 2), |
+ gfx::Point(3, 4)); |
+ EXPECT_EQ(1u, GetSentMessageCountAndResetSink()); |
+ |
+ // Send second message: MoveRangeSelectionExtent. |
+ input_router_->SendInput(scoped_ptr<IPC::Message>( |
+ new InputMsg_MoveRangeSelectionExtent(0, gfx::Point(5, 6)))); |
+ EXPECT_EQ(0u, GetSentMessageCountAndResetSink()); |
+ |
+ // Send third message: SelectRange. |
+ input_router_->SendInput(scoped_ptr<IPC::Message>( |
+ new InputMsg_SelectRange(0, gfx::Point(7, 8), gfx::Point(9, 10)))); |
+ EXPECT_EQ(0u, GetSentMessageCountAndResetSink()); |
+ |
+ // Ack the messages and verify that they're not coalesced and that they're in |
+ // correct order. |
+ |
+ // Ack the first message. |
+ { |
+ scoped_ptr<IPC::Message> response( |
+ new InputHostMsg_SelectRange_ACK(0)); |
+ input_router_->OnMessageReceived(*response); |
+ } |
+ |
+ ExpectIPCMessageWithArg1<InputMsg_MoveRangeSelectionExtent>( |
+ process_->sink().GetMessageAt(0), |
+ gfx::Point(5, 6)); |
+ EXPECT_EQ(1u, GetSentMessageCountAndResetSink()); |
+ |
+ // Ack the second message. |
+ { |
+ scoped_ptr<IPC::Message> response( |
+ new InputHostMsg_MoveRangeSelectionExtent_ACK(0)); |
+ input_router_->OnMessageReceived(*response); |
+ } |
+ |
+ ExpectIPCMessageWithArg2<InputMsg_SelectRange>( |
+ process_->sink().GetMessageAt(0), |
+ gfx::Point(7, 8), |
+ gfx::Point(9, 10)); |
+ EXPECT_EQ(1u, GetSentMessageCountAndResetSink()); |
+ |
+ // Ack the third message. |
+ { |
+ scoped_ptr<IPC::Message> response( |
+ new InputHostMsg_SelectRange_ACK(0)); |
+ input_router_->OnMessageReceived(*response); |
+ } |
+ EXPECT_EQ(0u, GetSentMessageCountAndResetSink()); |
+} |
+ |
+TEST_F(InputRouterImplTest, |
+ CoalescesInterleavedSelectRangeAndMoveRangeSelectionExtent) { |
+ // Send interleaved SelectRange and MoveRangeSelectionExtent messages. They |
+ // should be coalesced as shown by the arrows. |
+ // > SelectRange |
+ // MoveRangeSelectionExtent |
+ // MoveRangeSelectionExtent |
+ // > MoveRangeSelectionExtent |
+ // SelectRange |
+ // > SelectRange |
+ // > MoveRangeSelectionExtent |
+ |
+ input_router_->SendInput(scoped_ptr<IPC::Message>( |
+ new InputMsg_SelectRange(0, gfx::Point(1, 2), gfx::Point(3, 4)))); |
+ ExpectIPCMessageWithArg2<InputMsg_SelectRange>( |
+ process_->sink().GetMessageAt(0), |
+ gfx::Point(1, 2), |
+ gfx::Point(3, 4)); |
+ EXPECT_EQ(1u, GetSentMessageCountAndResetSink()); |
+ |
+ input_router_->SendInput(scoped_ptr<IPC::Message>( |
+ new InputMsg_MoveRangeSelectionExtent(0, gfx::Point(5, 6)))); |
+ EXPECT_EQ(0u, GetSentMessageCountAndResetSink()); |
+ |
+ input_router_->SendInput(scoped_ptr<IPC::Message>( |
+ new InputMsg_MoveRangeSelectionExtent(0, gfx::Point(7, 8)))); |
+ EXPECT_EQ(0u, GetSentMessageCountAndResetSink()); |
+ |
+ input_router_->SendInput(scoped_ptr<IPC::Message>( |
+ new InputMsg_MoveRangeSelectionExtent(0, gfx::Point(9, 10)))); |
+ EXPECT_EQ(0u, GetSentMessageCountAndResetSink()); |
+ |
+ input_router_->SendInput(scoped_ptr<IPC::Message>( |
+ new InputMsg_SelectRange(0, gfx::Point(11, 12), gfx::Point(13, 14)))); |
+ EXPECT_EQ(0u, GetSentMessageCountAndResetSink()); |
+ |
+ input_router_->SendInput(scoped_ptr<IPC::Message>( |
+ new InputMsg_SelectRange(0, gfx::Point(15, 16), gfx::Point(17, 18)))); |
+ EXPECT_EQ(0u, GetSentMessageCountAndResetSink()); |
+ |
+ input_router_->SendInput(scoped_ptr<IPC::Message>( |
+ new InputMsg_MoveRangeSelectionExtent(0, gfx::Point(19, 20)))); |
+ EXPECT_EQ(0u, GetSentMessageCountAndResetSink()); |
+ |
+ // Ack the first message. |
+ { |
+ scoped_ptr<IPC::Message> response( |
+ new InputHostMsg_SelectRange_ACK(0)); |
+ input_router_->OnMessageReceived(*response); |
+ } |
+ |
+ // Verify that the three MoveRangeSelectionExtent messages are coalesced into |
+ // one message. |
+ ExpectIPCMessageWithArg1<InputMsg_MoveRangeSelectionExtent>( |
+ process_->sink().GetMessageAt(0), |
+ gfx::Point(9, 10)); |
+ EXPECT_EQ(1u, GetSentMessageCountAndResetSink()); |
+ |
+ // Ack the second message. |
+ { |
+ scoped_ptr<IPC::Message> response( |
+ new InputHostMsg_MoveRangeSelectionExtent_ACK(0)); |
+ input_router_->OnMessageReceived(*response); |
+ } |
+ |
+ // Verify that the two SelectRange messages are coalesced into one message. |
+ ExpectIPCMessageWithArg2<InputMsg_SelectRange>( |
+ process_->sink().GetMessageAt(0), |
+ gfx::Point(15, 16), |
+ gfx::Point(17, 18)); |
+ EXPECT_EQ(1u, GetSentMessageCountAndResetSink()); |
+ |
+ // Ack the third message. |
+ { |
+ scoped_ptr<IPC::Message> response( |
+ new InputHostMsg_SelectRange_ACK(0)); |
+ input_router_->OnMessageReceived(*response); |
+ } |
+ |
+ // Verify the fourth message. |
+ ExpectIPCMessageWithArg1<InputMsg_MoveRangeSelectionExtent>( |
+ process_->sink().GetMessageAt(0), |
+ gfx::Point(19, 20)); |
+ EXPECT_EQ(1u, GetSentMessageCountAndResetSink()); |
+ |
+ // Ack the fourth message. |
+ { |
+ scoped_ptr<IPC::Message> response( |
+ new InputHostMsg_MoveRangeSelectionExtent_ACK(0)); |
input_router_->OnMessageReceived(*response); |
} |
EXPECT_EQ(0u, GetSentMessageCountAndResetSink()); |
@@ -391,7 +581,7 @@ TEST_F(InputRouterImplTest, CoalescesCaretMove) { |
// Now ack the first message. |
{ |
- scoped_ptr<IPC::Message> response(new ViewHostMsg_MoveCaret_ACK(0)); |
+ scoped_ptr<IPC::Message> response(new InputHostMsg_MoveCaret_ACK(0)); |
input_router_->OnMessageReceived(*response); |
} |
@@ -402,7 +592,7 @@ TEST_F(InputRouterImplTest, CoalescesCaretMove) { |
// Acking the coalesced msg should not send any more msg. |
{ |
- scoped_ptr<IPC::Message> response(new ViewHostMsg_MoveCaret_ACK(0)); |
+ scoped_ptr<IPC::Message> response(new InputHostMsg_MoveCaret_ACK(0)); |
input_router_->OnMessageReceived(*response); |
} |
EXPECT_EQ(0u, GetSentMessageCountAndResetSink()); |