Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(319)

Side by Side Diff: content/browser/presentation/presentation_service_impl_unittest.cc

Issue 1037483003: [PresentationAPI] Implementing send() from WebPresentationClient to the PresentationService. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: merge. Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "base/message_loop/message_loop.h" 6 #include "base/message_loop/message_loop.h"
7 #include "base/run_loop.h" 7 #include "base/run_loop.h"
8 #include "base/test/test_timeouts.h" 8 #include "base/test/test_timeouts.h"
9 #include "content/browser/presentation/presentation_service_impl.h" 9 #include "content/browser/presentation/presentation_service_impl.h"
10 #include "content/public/browser/presentation_service_delegate.h" 10 #include "content/public/browser/presentation_service_delegate.h"
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 const PresentationSessionSuccessCallback& success_cb, 81 const PresentationSessionSuccessCallback& success_cb,
82 const PresentationSessionErrorCallback& error_cb)); 82 const PresentationSessionErrorCallback& error_cb));
83 MOCK_METHOD6(JoinSession, 83 MOCK_METHOD6(JoinSession,
84 void( 84 void(
85 int render_process_id, 85 int render_process_id,
86 int render_frame_id, 86 int render_frame_id,
87 const std::string& presentation_url, 87 const std::string& presentation_url,
88 const std::string& presentation_id, 88 const std::string& presentation_id,
89 const PresentationSessionSuccessCallback& success_cb, 89 const PresentationSessionSuccessCallback& success_cb,
90 const PresentationSessionErrorCallback& error_cb)); 90 const PresentationSessionErrorCallback& error_cb));
91
91 MOCK_METHOD3(ListenForSessionMessages, 92 MOCK_METHOD3(ListenForSessionMessages,
92 void( 93 void(
93 int render_process_id, 94 int render_process_id,
94 int render_frame_id, 95 int render_frame_id,
95 const PresentationSessionMessageCallback& message_cb)); 96 const PresentationSessionMessageCallback& message_cb));
97
98 MOCK_METHOD4(SendMessageRawPtr,
99 void(
100 int render_process_id,
101 int render_frame_id,
102 PresentationSessionMessage* message_request,
103 const SendMessageCallback& send_message_cb));
104
105 void SendMessage(
106 int render_process_id,
107 int render_frame_id,
108 scoped_ptr<PresentationSessionMessage> message_request,
109 const SendMessageCallback& send_message_cb) {
110 DCHECK(message_request);
111 SendMessageRawPtr(
112 render_process_id,
113 render_frame_id,
114 message_request.release(),
115 send_message_cb);
116 }
96 }; 117 };
97 118
98 class PresentationServiceImplTest : public RenderViewHostImplTestHarness { 119 class PresentationServiceImplTest : public RenderViewHostImplTestHarness {
99 public: 120 public:
100 PresentationServiceImplTest() 121 PresentationServiceImplTest()
101 : callback_count_(0), default_session_started_count_(0) {} 122 : callback_count_(0), default_session_started_count_(0) {}
102 123
103 void SetUp() override { 124 void SetUp() override {
104 RenderViewHostImplTestHarness::SetUp(); 125 RenderViewHostImplTestHarness::SetUp();
105 126
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 mojo::Array<presentation::SessionMessagePtr> actual_msgs) { 257 mojo::Array<presentation::SessionMessagePtr> actual_msgs) {
237 EXPECT_TRUE(actual_msgs.size() == expected_msgs_.size()); 258 EXPECT_TRUE(actual_msgs.size() == expected_msgs_.size());
238 for (size_t i = 0; i < actual_msgs.size(); ++i) { 259 for (size_t i = 0; i < actual_msgs.size(); ++i) {
239 EXPECT_TRUE(ArePresentationSessionMessagesEqual(expected_msgs_[i].get(), 260 EXPECT_TRUE(ArePresentationSessionMessagesEqual(expected_msgs_[i].get(),
240 actual_msgs[i].get())); 261 actual_msgs[i].get()));
241 } 262 }
242 if (!run_loop_quit_closure_.is_null()) 263 if (!run_loop_quit_closure_.is_null())
243 run_loop_quit_closure_.Run(); 264 run_loop_quit_closure_.Run();
244 } 265 }
245 266
267 void ExpectSendMessageMojoCallback(bool success) {
268 EXPECT_TRUE(success);
269 EXPECT_FALSE(service_impl_->send_message_cb_ptr_);
270 if (!run_loop_quit_closure_.is_null())
271 run_loop_quit_closure_.Run();
272 }
273
246 void RunListenForSessionMessages(std::string& text_msg, 274 void RunListenForSessionMessages(std::string& text_msg,
247 std::vector<uint8_t>& binary_data) { 275 std::vector<uint8_t>& binary_data) {
248 std::string presentation_url("http://fooUrl"); 276 std::string presentation_url("http://fooUrl");
249 std::string presentation_id("presentationId"); 277 std::string presentation_id("presentationId");
250 278
251 expected_msgs_ = mojo::Array<presentation::SessionMessagePtr>::New(2); 279 expected_msgs_ = mojo::Array<presentation::SessionMessagePtr>::New(2);
252 expected_msgs_[0] = presentation::SessionMessage::New(); 280 expected_msgs_[0] = presentation::SessionMessage::New();
253 expected_msgs_[0]->presentation_url = presentation_url; 281 expected_msgs_[0]->presentation_url = presentation_url;
254 expected_msgs_[0]->presentation_id = presentation_id; 282 expected_msgs_[0]->presentation_id = presentation_id;
255 expected_msgs_[0]->type = 283 expected_msgs_[0]->type =
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after
776 base::Unretained(this))); 804 base::Unretained(this)));
777 RunLoopFor(TestTimeouts::tiny_timeout()); 805 RunLoopFor(TestTimeouts::tiny_timeout());
778 806
779 ExpectReset(); 807 ExpectReset();
780 service_impl_->Reset(); 808 service_impl_->Reset();
781 ExpectCleanState(); 809 ExpectCleanState();
782 SaveQuitClosureAndRunLoop(); 810 SaveQuitClosureAndRunLoop();
783 EXPECT_EQ(1, default_session_started_count_); 811 EXPECT_EQ(1, default_session_started_count_);
784 } 812 }
785 813
814 TEST_F(PresentationServiceImplTest, SendStringMessage) {
815 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.
816 std::string presentation_id("presentationId");
817 std::string message("Test presentation session message");
818
819 presentation::SessionMessagePtr message_request(
820 presentation::SessionMessage::New());
821 message_request->presentation_url = presentation_url;
822 message_request->presentation_id = presentation_id;
823 message_request->type = presentation::PresentationMessageType::
824 PRESENTATION_MESSAGE_TYPE_TEXT;
825 message_request->message = message;
826 service_ptr_->SendMessage(
827 message_request.Pass(),
828 base::Bind(
829 &PresentationServiceImplTest::ExpectSendMessageMojoCallback,
830 base::Unretained(this)));
831
832 base::RunLoop run_loop;
833 base::Closure send_message_cb;
834 PresentationSessionMessage* test_message = nullptr;
835 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(
836 _, _, _, _))
837 .WillOnce(DoAll(
838 InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
839 SaveArg<2>(&test_message),
840 SaveArg<3>(&send_message_cb)));
841 run_loop.Run();
842
843 EXPECT_TRUE(test_message);
844 EXPECT_EQ(presentation_url, test_message->presentation_url);
845 EXPECT_EQ(presentation_id, test_message->presentation_id);
846 EXPECT_FALSE(test_message->is_binary());
847 EXPECT_EQ(message, *(test_message->message.get()));
848 EXPECT_FALSE(test_message->data);
849 delete test_message;
850 send_message_cb.Run();
851 SaveQuitClosureAndRunLoop();
852 }
853
854 TEST_F(PresentationServiceImplTest, SendArrayBuffer) {
855 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.
856 std::string presentation_id("presentationId");
857 // Test Array buffer data.
858 const uint8 buffer[] = {0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48};
859 std::vector<uint8> data;
860 data.assign(buffer, buffer + sizeof(buffer));
861
862 presentation::SessionMessagePtr message_request(
863 presentation::SessionMessage::New());
864 message_request->presentation_url = presentation_url;
865 message_request->presentation_id = presentation_id;
866 message_request->type = presentation::PresentationMessageType::
867 PRESENTATION_MESSAGE_TYPE_ARRAY_BUFFER;
868 message_request->data = mojo::Array<uint8>::From(data);
869 service_ptr_->SendMessage(
870 message_request.Pass(),
871 base::Bind(
872 &PresentationServiceImplTest::ExpectSendMessageMojoCallback,
873 base::Unretained(this)));
874
875 base::RunLoop run_loop;
876 base::Closure send_message_cb;
877 PresentationSessionMessage* test_message = nullptr;
878 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(
879 _, _, _, _))
880 .WillOnce(DoAll(
881 InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
882 SaveArg<2>(&test_message),
883 SaveArg<3>(&send_message_cb)));
884 run_loop.Run();
885
886 EXPECT_TRUE(test_message);
887 EXPECT_EQ(presentation_url, test_message->presentation_url);
888 EXPECT_EQ(presentation_id, test_message->presentation_id);
889 EXPECT_TRUE(test_message->is_binary());
890 EXPECT_FALSE(test_message->message);
891 EXPECT_EQ(data.size(), test_message->data.get()->size());
892 EXPECT_EQ(0, memcmp(buffer, &(*test_message->data.get())[0], sizeof(buffer)));
893 delete test_message;
894 send_message_cb.Run();
895 SaveQuitClosureAndRunLoop();
896 }
897
786 } // namespace content 898 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698