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 2f2525667ed51ecfe4e920cd595bb8e4f64468f7..66a720584f0019013228fe25e824d11aa88daea5 100644 |
| --- a/content/browser/presentation/presentation_service_impl_unittest.cc |
| +++ b/content/browser/presentation/presentation_service_impl_unittest.cc |
| @@ -7,6 +7,7 @@ |
| #include "base/run_loop.h" |
| #include "base/test/test_timeouts.h" |
| #include "content/browser/presentation/presentation_service_impl.h" |
| +#include "content/public/browser/presentation_message.h" |
| #include "content/public/browser/presentation_service_delegate.h" |
| #include "content/public/browser/presentation_session.h" |
| #include "content/test/test_render_frame_host.h" |
| @@ -77,6 +78,12 @@ class MockPresentationServiceDelegate : public PresentationServiceDelegate { |
| const std::string& presentation_id, |
| const PresentationSessionSuccessCallback& success_cb, |
| const PresentationSessionErrorCallback& error_cb)); |
| + MOCK_METHOD4(SendMessage, |
| + void( |
| + int render_process_id, |
| + int render_frame_id, |
| + PresentationMessageRequest* message_request, |
| + const SendMessageCallback& send_message_cb)); |
| }; |
| class PresentationServiceImplTest : public RenderViewHostImplTestHarness { |
| @@ -215,6 +222,13 @@ class PresentationServiceImplTest : public RenderViewHostImplTestHarness { |
| run_loop_quit_closure_.Run(); |
| } |
| + void ExpectSendMessageMojoCallback(bool success) { |
| + EXPECT_EQ(success, true); |
|
imcheng (use chromium acct)
2015/04/30 20:11:29
EXPECT_TRUE(success)
USE s.singapati at gmail.com
2015/05/04 16:40:28
Done.
|
| + EXPECT_FALSE(service_impl_->send_message_cb_ptr_); |
| + if (!run_loop_quit_closure_.is_null()) |
| + run_loop_quit_closure_.Run(); |
| + } |
| + |
| MockPresentationServiceDelegate mock_delegate_; |
| scoped_ptr<PresentationServiceImpl> service_impl_; |
| mojo::InterfacePtr<presentation::PresentationService> service_ptr_; |
| @@ -668,4 +682,86 @@ TEST_F(PresentationServiceImplTest, DefaultSessionStartReset) { |
| EXPECT_EQ(1, default_session_started_count_); |
| } |
| +TEST_F(PresentationServiceImplTest, SendStringMessage) { |
| + std::string presentation_url("http://fooUrl"); |
| + 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::Callback<void()> send_message_cb; |
| + PresentationMessageRequest* test_message = nullptr; |
|
imcheng (use chromium acct)
2015/04/30 20:11:29
do we have a memory leak here since the test_messa
USE s.singapati at gmail.com
2015/05/01 10:30:25
yes, delegate is responsible for deleting the Pres
USE s.singapati at gmail.com
2015/05/04 16:40:28
Done. deleting test_message for now. Working on pa
USE s.singapati at gmail.com
2015/05/05 14:26:36
Done. passing scoped_ptr<> to delegate and MOCK Se
|
| + EXPECT_CALL(mock_delegate_, SendMessage( |
| + _, _, _, _)) |
| + .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_EQ(PresentationMessageType::TEXT, test_message->type); |
| + EXPECT_EQ(message, test_message->message); |
| + EXPECT_EQ(0u, test_message->data.size()); |
| + send_message_cb.Run(); |
| + SaveQuitClosureAndRunLoop(); |
| +} |
| + |
| +TEST_F(PresentationServiceImplTest, SendArrayBuffer) { |
| + std::string presentation_url("http://fooUrl"); |
| + 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::Callback<void()> send_message_cb; |
| + PresentationMessageRequest* test_message = nullptr; |
|
imcheng (use chromium acct)
2015/04/30 20:11:29
ditto on memory leak
USE s.singapati at gmail.com
2015/05/04 16:40:28
Done. deleting test_message for now. Working on pa
USE s.singapati at gmail.com
2015/05/05 14:26:36
Done.
|
| + EXPECT_CALL(mock_delegate_, SendMessage( |
| + _, _, _, _)) |
| + .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_EQ(PresentationMessageType::ARRAY_BUFFER, test_message->type); |
| + EXPECT_EQ(0u, test_message->message.size()); |
| + EXPECT_EQ(data.size(), test_message->data.size()); |
| + EXPECT_EQ(0, memcmp(buffer, &test_message->data[0], sizeof(buffer))); |
| + send_message_cb.Run(); |
| + SaveQuitClosureAndRunLoop(); |
| +} |
| + |
| } // namespace content |