Chromium Code Reviews| Index: content/browser/presentation/presentation_service_impl_unittest.cc |
| diff --git a/content/browser/presentation/presentation_service_impl_unittest.cc b/content/browser/presentation/presentation_service_impl_unittest.cc |
| index c6eef75b49c08f7eede359bcf35b5bc368e6b4b0..79001dd424928f5f3567c4a65cfedc267405a904 100644 |
| --- a/content/browser/presentation/presentation_service_impl_unittest.cc |
| +++ b/content/browser/presentation/presentation_service_impl_unittest.cc |
| @@ -88,11 +88,32 @@ class MockPresentationServiceDelegate : public PresentationServiceDelegate { |
| const std::string& presentation_id, |
| const PresentationSessionSuccessCallback& success_cb, |
| const PresentationSessionErrorCallback& error_cb)); |
| + |
| MOCK_METHOD3(ListenForSessionMessages, |
| void( |
| int render_process_id, |
| int render_frame_id, |
| const PresentationSessionMessageCallback& message_cb)); |
| + |
| + MOCK_METHOD4(SendMessageRawPtr, |
| + void( |
| + int render_process_id, |
| + int render_frame_id, |
| + PresentationSessionMessage* message_request, |
| + const SendMessageCallback& send_message_cb)); |
| + |
| + void SendMessage( |
| + int render_process_id, |
| + int render_frame_id, |
| + scoped_ptr<PresentationSessionMessage> message_request, |
| + const SendMessageCallback& send_message_cb) { |
| + DCHECK(message_request); |
| + SendMessageRawPtr( |
| + render_process_id, |
| + render_frame_id, |
| + message_request.release(), |
| + send_message_cb); |
| + } |
| }; |
| class PresentationServiceImplTest : public RenderViewHostImplTestHarness { |
| @@ -243,6 +264,13 @@ class PresentationServiceImplTest : public RenderViewHostImplTestHarness { |
| run_loop_quit_closure_.Run(); |
| } |
| + void ExpectSendMessageMojoCallback(bool success) { |
| + EXPECT_TRUE(success); |
| + EXPECT_FALSE(service_impl_->send_message_cb_ptr_); |
| + if (!run_loop_quit_closure_.is_null()) |
| + run_loop_quit_closure_.Run(); |
| + } |
| + |
| void RunListenForSessionMessages(std::string& text_msg, |
| std::vector<uint8_t>& binary_data) { |
| std::string presentation_url("http://fooUrl"); |
| @@ -783,4 +811,88 @@ TEST_F(PresentationServiceImplTest, DefaultSessionStartReset) { |
| EXPECT_EQ(1, default_session_started_count_); |
| } |
| +TEST_F(PresentationServiceImplTest, SendStringMessage) { |
| + std::string presentation_url("http://fooUrl"); |
|
mark a. foltz
2015/05/07 01:34:30
Nit: Please use a proper URL with a TLD.
USE s.singapati at gmail.com
2015/05/07 14:08:52
Done.
|
| + std::string presentation_id("presentationId"); |
| + std::string message("Test presentation session message"); |
| + |
| + presentation::SessionMessagePtr message_request( |
| + presentation::SessionMessage::New()); |
| + message_request->presentation_url = presentation_url; |
| + message_request->presentation_id = presentation_id; |
| + message_request->type = presentation::PresentationMessageType:: |
| + PRESENTATION_MESSAGE_TYPE_TEXT; |
| + message_request->message = message; |
| + service_ptr_->SendMessage( |
| + message_request.Pass(), |
| + base::Bind( |
| + &PresentationServiceImplTest::ExpectSendMessageMojoCallback, |
| + base::Unretained(this))); |
| + |
| + base::RunLoop run_loop; |
| + base::Closure send_message_cb; |
| + PresentationSessionMessage* test_message = nullptr; |
| + EXPECT_CALL(mock_delegate_, SendMessageRawPtr( |
| + _, _, _, _)) |
| + .WillOnce(DoAll( |
| + InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), |
| + SaveArg<2>(&test_message), |
| + SaveArg<3>(&send_message_cb))); |
| + run_loop.Run(); |
| + |
| + EXPECT_TRUE(test_message); |
| + EXPECT_EQ(presentation_url, test_message->presentation_url); |
| + EXPECT_EQ(presentation_id, test_message->presentation_id); |
| + EXPECT_FALSE(test_message->is_binary()); |
| + EXPECT_EQ(message, *(test_message->message.get())); |
| + EXPECT_FALSE(test_message->data); |
| + delete test_message; |
| + send_message_cb.Run(); |
| + SaveQuitClosureAndRunLoop(); |
| +} |
| + |
| +TEST_F(PresentationServiceImplTest, SendArrayBuffer) { |
| + std::string presentation_url("http://fooUrl"); |
|
mark a. foltz
2015/05/07 01:34:30
Ditto
USE s.singapati at gmail.com
2015/05/07 14:08:52
Done.
|
| + std::string presentation_id("presentationId"); |
| + // Test Array buffer data. |
| + const uint8 buffer[] = {0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48}; |
| + std::vector<uint8> data; |
| + data.assign(buffer, buffer + sizeof(buffer)); |
| + |
| + presentation::SessionMessagePtr message_request( |
| + presentation::SessionMessage::New()); |
| + message_request->presentation_url = presentation_url; |
| + message_request->presentation_id = presentation_id; |
| + message_request->type = presentation::PresentationMessageType:: |
| + PRESENTATION_MESSAGE_TYPE_ARRAY_BUFFER; |
| + message_request->data = mojo::Array<uint8>::From(data); |
| + service_ptr_->SendMessage( |
| + message_request.Pass(), |
| + base::Bind( |
| + &PresentationServiceImplTest::ExpectSendMessageMojoCallback, |
| + base::Unretained(this))); |
| + |
| + base::RunLoop run_loop; |
| + base::Closure send_message_cb; |
| + PresentationSessionMessage* test_message = nullptr; |
| + EXPECT_CALL(mock_delegate_, SendMessageRawPtr( |
| + _, _, _, _)) |
| + .WillOnce(DoAll( |
| + InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), |
| + SaveArg<2>(&test_message), |
| + SaveArg<3>(&send_message_cb))); |
| + run_loop.Run(); |
| + |
| + EXPECT_TRUE(test_message); |
| + EXPECT_EQ(presentation_url, test_message->presentation_url); |
| + EXPECT_EQ(presentation_id, test_message->presentation_id); |
| + EXPECT_TRUE(test_message->is_binary()); |
| + EXPECT_FALSE(test_message->message); |
| + EXPECT_EQ(data.size(), test_message->data.get()->size()); |
| + EXPECT_EQ(0, memcmp(buffer, &(*test_message->data.get())[0], sizeof(buffer))); |
| + delete test_message; |
| + send_message_cb.Run(); |
| + SaveQuitClosureAndRunLoop(); |
| +} |
| + |
| } // namespace content |