| OLD | NEW |
| 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 "content/browser/presentation/presentation_service_impl.h" | 5 #include "content/browser/presentation/presentation_service_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 | 36 |
| 37 namespace content { | 37 namespace content { |
| 38 | 38 |
| 39 namespace { | 39 namespace { |
| 40 | 40 |
| 41 // Matches Mojo structs. | 41 // Matches Mojo structs. |
| 42 MATCHER_P(Equals, expected, "") { | 42 MATCHER_P(Equals, expected, "") { |
| 43 return expected.Equals(arg); | 43 return expected.Equals(arg); |
| 44 } | 44 } |
| 45 | 45 |
| 46 // Matches blink::mojom::PresentationSessionInfo passed by reference. | 46 // Matches content::mojom::PresentationSessionInfo passed by reference. |
| 47 MATCHER_P(SessionInfoEquals, expected, "") { | 47 MATCHER_P(SessionInfoEquals, expected, "") { |
| 48 blink::mojom::PresentationSessionInfo& expected_value = expected; | 48 content::mojom::PresentationSessionInfo& expected_value = expected; |
| 49 return expected_value.Equals(arg); | 49 return expected_value.Equals(arg); |
| 50 } | 50 } |
| 51 | 51 |
| 52 // Matches content::PresentationSessionInfo passed by reference. | 52 // Matches content::PresentationSessionInfo passed by reference. |
| 53 MATCHER_P(ContentSessionInfoEquals, expected, "") { | 53 MATCHER_P(ContentSessionInfoEquals, expected, "") { |
| 54 const content::PresentationSessionInfo& expected_value = expected; | 54 const content::PresentationSessionInfo& expected_value = expected; |
| 55 return expected_value.presentation_url == arg.presentation_url && | 55 return expected_value.presentation_url == arg.presentation_url && |
| 56 expected_value.presentation_id == arg.presentation_id; | 56 expected_value.presentation_id == arg.presentation_id; |
| 57 } | 57 } |
| 58 | 58 |
| 59 const char kPresentationId[] = "presentationId"; | 59 const char kPresentationId[] = "presentationId"; |
| 60 const char kPresentationUrl1[] = "http://foo.com/index.html"; | 60 const char kPresentationUrl1[] = "http://foo.com/index.html"; |
| 61 const char kPresentationUrl2[] = "http://example.com/index.html"; | 61 const char kPresentationUrl2[] = "http://example.com/index.html"; |
| 62 const char kPresentationUrl3[] = "http://example.net/index.html"; | 62 const char kPresentationUrl3[] = "http://example.net/index.html"; |
| 63 | 63 |
| 64 void DoNothing(blink::mojom::PresentationSessionInfoPtr info, | 64 void DoNothing(content::mojom::PresentationSessionInfoPtr info, |
| 65 blink::mojom::PresentationErrorPtr error) {} | 65 content::mojom::PresentationErrorPtr error) {} |
| 66 | 66 |
| 67 } // namespace | 67 } // namespace |
| 68 | 68 |
| 69 class MockPresentationServiceDelegate | 69 class MockPresentationServiceDelegate |
| 70 : public ControllerPresentationServiceDelegate { | 70 : public ControllerPresentationServiceDelegate { |
| 71 public: | 71 public: |
| 72 MOCK_METHOD3(AddObserver, | 72 MOCK_METHOD3(AddObserver, |
| 73 void(int render_process_id, | 73 void(int render_process_id, |
| 74 int render_frame_id, | 74 int render_frame_id, |
| 75 PresentationServiceDelegate::Observer* observer)); | 75 PresentationServiceDelegate::Observer* observer)); |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 154 PresentationConnectionPtr controller_conn_ptr, | 154 PresentationConnectionPtr controller_conn_ptr, |
| 155 PresentationConnectionRequest receiver_conn_request) override { | 155 PresentationConnectionRequest receiver_conn_request) override { |
| 156 RegisterOffscreenPresentationConnectionRaw( | 156 RegisterOffscreenPresentationConnectionRaw( |
| 157 render_process_id, render_frame_id, session, controller_conn_ptr.get()); | 157 render_process_id, render_frame_id, session, controller_conn_ptr.get()); |
| 158 } | 158 } |
| 159 | 159 |
| 160 MOCK_METHOD4(RegisterOffscreenPresentationConnectionRaw, | 160 MOCK_METHOD4(RegisterOffscreenPresentationConnectionRaw, |
| 161 void(int render_process_id, | 161 void(int render_process_id, |
| 162 int render_frame_id, | 162 int render_frame_id, |
| 163 const content::PresentationSessionInfo& session, | 163 const content::PresentationSessionInfo& session, |
| 164 blink::mojom::PresentationConnection* connection)); | 164 content::mojom::PresentationConnection* connection)); |
| 165 | 165 |
| 166 void set_screen_availability_listening_supported(bool value) { | 166 void set_screen_availability_listening_supported(bool value) { |
| 167 screen_availability_listening_supported_ = value; | 167 screen_availability_listening_supported_ = value; |
| 168 } | 168 } |
| 169 | 169 |
| 170 private: | 170 private: |
| 171 bool screen_availability_listening_supported_ = true; | 171 bool screen_availability_listening_supported_ = true; |
| 172 }; | 172 }; |
| 173 | 173 |
| 174 class MockReceiverPresentationServiceDelegate | 174 class MockReceiverPresentationServiceDelegate |
| 175 : public ReceiverPresentationServiceDelegate { | 175 : public ReceiverPresentationServiceDelegate { |
| 176 public: | 176 public: |
| 177 MOCK_METHOD3(AddObserver, | 177 MOCK_METHOD3(AddObserver, |
| 178 void(int render_process_id, | 178 void(int render_process_id, |
| 179 int render_frame_id, | 179 int render_frame_id, |
| 180 PresentationServiceDelegate::Observer* observer)); | 180 PresentationServiceDelegate::Observer* observer)); |
| 181 MOCK_METHOD2(RemoveObserver, | 181 MOCK_METHOD2(RemoveObserver, |
| 182 void(int render_process_id, int render_frame_id)); | 182 void(int render_process_id, int render_frame_id)); |
| 183 MOCK_METHOD2(Reset, void(int render_process_id, int routing_id)); | 183 MOCK_METHOD2(Reset, void(int render_process_id, int routing_id)); |
| 184 MOCK_METHOD1(RegisterReceiverConnectionAvailableCallback, | 184 MOCK_METHOD1(RegisterReceiverConnectionAvailableCallback, |
| 185 void(const content::ReceiverConnectionAvailableCallback&)); | 185 void(const content::ReceiverConnectionAvailableCallback&)); |
| 186 }; | 186 }; |
| 187 | 187 |
| 188 class MockPresentationConnection : public blink::mojom::PresentationConnection { | 188 class MockPresentationConnection |
| 189 : public content::mojom::PresentationConnection { |
| 189 public: | 190 public: |
| 190 void OnMessage(blink::mojom::ConnectionMessagePtr message, | 191 void OnMessage(content::mojom::ConnectionMessagePtr message, |
| 191 const base::Callback<void(bool)>& send_message_cb) override { | 192 const base::Callback<void(bool)>& send_message_cb) override { |
| 192 OnConnectionMessageReceived(*message); | 193 OnConnectionMessageReceived(*message); |
| 193 } | 194 } |
| 194 MOCK_METHOD1(OnConnectionMessageReceived, | 195 MOCK_METHOD1(OnConnectionMessageReceived, |
| 195 void(const blink::mojom::ConnectionMessage& message)); | 196 void(const content::mojom::ConnectionMessage& message)); |
| 196 MOCK_METHOD1(DidChangeState, | 197 MOCK_METHOD1(DidChangeState, |
| 197 void(blink::mojom::PresentationConnectionState state)); | 198 void(content::mojom::PresentationConnectionState state)); |
| 198 }; | 199 }; |
| 199 | 200 |
| 200 class MockPresentationServiceClient | 201 class MockPresentationServiceClient |
| 201 : public blink::mojom::PresentationServiceClient { | 202 : public content::mojom::PresentationServiceClient { |
| 202 public: | 203 public: |
| 203 MOCK_METHOD2(OnScreenAvailabilityUpdated, | 204 MOCK_METHOD2(OnScreenAvailabilityUpdated, |
| 204 void(const GURL& url, bool available)); | 205 void(const GURL& url, bool available)); |
| 205 void OnConnectionStateChanged( | 206 void OnConnectionStateChanged( |
| 206 blink::mojom::PresentationSessionInfoPtr connection, | 207 content::mojom::PresentationSessionInfoPtr connection, |
| 207 blink::mojom::PresentationConnectionState new_state) override { | 208 content::mojom::PresentationConnectionState new_state) override { |
| 208 OnConnectionStateChanged(*connection, new_state); | 209 OnConnectionStateChanged(*connection, new_state); |
| 209 } | 210 } |
| 210 MOCK_METHOD2(OnConnectionStateChanged, | 211 MOCK_METHOD2(OnConnectionStateChanged, |
| 211 void(const blink::mojom::PresentationSessionInfo& connection, | 212 void(const content::mojom::PresentationSessionInfo& connection, |
| 212 blink::mojom::PresentationConnectionState new_state)); | 213 content::mojom::PresentationConnectionState new_state)); |
| 213 | 214 |
| 214 void OnConnectionClosed( | 215 void OnConnectionClosed( |
| 215 blink::mojom::PresentationSessionInfoPtr connection, | 216 content::mojom::PresentationSessionInfoPtr connection, |
| 216 blink::mojom::PresentationConnectionCloseReason reason, | 217 content::mojom::PresentationConnectionCloseReason reason, |
| 217 const std::string& message) override { | 218 const std::string& message) override { |
| 218 OnConnectionClosed(*connection, reason, message); | 219 OnConnectionClosed(*connection, reason, message); |
| 219 } | 220 } |
| 220 MOCK_METHOD3(OnConnectionClosed, | 221 MOCK_METHOD3(OnConnectionClosed, |
| 221 void(const blink::mojom::PresentationSessionInfo& connection, | 222 void(const content::mojom::PresentationSessionInfo& connection, |
| 222 blink::mojom::PresentationConnectionCloseReason reason, | 223 content::mojom::PresentationConnectionCloseReason reason, |
| 223 const std::string& message)); | 224 const std::string& message)); |
| 224 | 225 |
| 225 MOCK_METHOD1(OnScreenAvailabilityNotSupported, void(const GURL& url)); | 226 MOCK_METHOD1(OnScreenAvailabilityNotSupported, void(const GURL& url)); |
| 226 | 227 |
| 227 void OnConnectionMessagesReceived( | 228 void OnConnectionMessagesReceived( |
| 228 blink::mojom::PresentationSessionInfoPtr session_info, | 229 content::mojom::PresentationSessionInfoPtr session_info, |
| 229 std::vector<blink::mojom::ConnectionMessagePtr> messages) override { | 230 std::vector<content::mojom::ConnectionMessagePtr> messages) override { |
| 230 messages_received_ = std::move(messages); | 231 messages_received_ = std::move(messages); |
| 231 MessagesReceived(); | 232 MessagesReceived(); |
| 232 } | 233 } |
| 233 MOCK_METHOD0(MessagesReceived, void()); | 234 MOCK_METHOD0(MessagesReceived, void()); |
| 234 | 235 |
| 235 void OnDefaultSessionStarted( | 236 void OnDefaultSessionStarted( |
| 236 blink::mojom::PresentationSessionInfoPtr session_info) override { | 237 content::mojom::PresentationSessionInfoPtr session_info) override { |
| 237 OnDefaultSessionStarted(*session_info); | 238 OnDefaultSessionStarted(*session_info); |
| 238 } | 239 } |
| 239 MOCK_METHOD1(OnDefaultSessionStarted, | 240 MOCK_METHOD1( |
| 240 void(const blink::mojom::PresentationSessionInfo& session_info)); | 241 OnDefaultSessionStarted, |
| 242 void(const content::mojom::PresentationSessionInfo& session_info)); |
| 241 | 243 |
| 242 void OnReceiverConnectionAvailable( | 244 void OnReceiverConnectionAvailable( |
| 243 blink::mojom::PresentationSessionInfoPtr session_info, | 245 content::mojom::PresentationSessionInfoPtr session_info, |
| 244 blink::mojom::PresentationConnectionPtr controller_conn_ptr, | 246 content::mojom::PresentationConnectionPtr controller_conn_ptr, |
| 245 blink::mojom::PresentationConnectionRequest receiver_conn_request) | 247 content::mojom::PresentationConnectionRequest receiver_conn_request) |
| 246 override { | 248 override { |
| 247 OnReceiverConnectionAvailable(*session_info); | 249 OnReceiverConnectionAvailable(*session_info); |
| 248 } | 250 } |
| 249 MOCK_METHOD1(OnReceiverConnectionAvailable, | 251 MOCK_METHOD1( |
| 250 void(const blink::mojom::PresentationSessionInfo& session_info)); | 252 OnReceiverConnectionAvailable, |
| 253 void(const content::mojom::PresentationSessionInfo& session_info)); |
| 251 | 254 |
| 252 std::vector<blink::mojom::ConnectionMessagePtr> messages_received_; | 255 std::vector<content::mojom::ConnectionMessagePtr> messages_received_; |
| 253 }; | 256 }; |
| 254 | 257 |
| 255 class PresentationServiceImplTest : public RenderViewHostImplTestHarness { | 258 class PresentationServiceImplTest : public RenderViewHostImplTestHarness { |
| 256 public: | 259 public: |
| 257 PresentationServiceImplTest() | 260 PresentationServiceImplTest() |
| 258 : presentation_url1_(GURL(kPresentationUrl1)), | 261 : presentation_url1_(GURL(kPresentationUrl1)), |
| 259 presentation_url2_(GURL(kPresentationUrl2)), | 262 presentation_url2_(GURL(kPresentationUrl2)), |
| 260 presentation_url3_(GURL(kPresentationUrl3)) {} | 263 presentation_url3_(GURL(kPresentationUrl3)) {} |
| 261 | 264 |
| 262 void SetUp() override { | 265 void SetUp() override { |
| 263 RenderViewHostImplTestHarness::SetUp(); | 266 RenderViewHostImplTestHarness::SetUp(); |
| 264 | 267 |
| 265 auto request = mojo::MakeRequest(&service_ptr_); | 268 auto request = mojo::MakeRequest(&service_ptr_); |
| 266 EXPECT_CALL(mock_delegate_, AddObserver(_, _, _)).Times(1); | 269 EXPECT_CALL(mock_delegate_, AddObserver(_, _, _)).Times(1); |
| 267 TestRenderFrameHost* render_frame_host = contents()->GetMainFrame(); | 270 TestRenderFrameHost* render_frame_host = contents()->GetMainFrame(); |
| 268 render_frame_host->InitializeRenderFrameIfNeeded(); | 271 render_frame_host->InitializeRenderFrameIfNeeded(); |
| 269 service_impl_.reset(new PresentationServiceImpl( | 272 service_impl_.reset(new PresentationServiceImpl( |
| 270 render_frame_host, contents(), &mock_delegate_, nullptr)); | 273 render_frame_host, contents(), &mock_delegate_, nullptr)); |
| 271 service_impl_->Bind(std::move(request)); | 274 service_impl_->Bind(std::move(request)); |
| 272 | 275 |
| 273 blink::mojom::PresentationServiceClientPtr client_ptr; | 276 content::mojom::PresentationServiceClientPtr client_ptr; |
| 274 client_binding_.reset( | 277 client_binding_.reset( |
| 275 new mojo::Binding<blink::mojom::PresentationServiceClient>( | 278 new mojo::Binding<content::mojom::PresentationServiceClient>( |
| 276 &mock_client_, mojo::MakeRequest(&client_ptr))); | 279 &mock_client_, mojo::MakeRequest(&client_ptr))); |
| 277 service_impl_->SetClient(std::move(client_ptr)); | 280 service_impl_->SetClient(std::move(client_ptr)); |
| 278 | 281 |
| 279 presentation_urls_.push_back(presentation_url1_); | 282 presentation_urls_.push_back(presentation_url1_); |
| 280 presentation_urls_.push_back(presentation_url2_); | 283 presentation_urls_.push_back(presentation_url2_); |
| 281 } | 284 } |
| 282 | 285 |
| 283 void TearDown() override { | 286 void TearDown() override { |
| 284 service_ptr_.reset(); | 287 service_ptr_.reset(); |
| 285 if (service_impl_.get()) { | 288 if (service_impl_.get()) { |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 338 | 341 |
| 339 void ExpectCleanState() { | 342 void ExpectCleanState() { |
| 340 EXPECT_TRUE(service_impl_->default_presentation_urls_.empty()); | 343 EXPECT_TRUE(service_impl_->default_presentation_urls_.empty()); |
| 341 EXPECT_EQ( | 344 EXPECT_EQ( |
| 342 service_impl_->screen_availability_listeners_.find(presentation_url1_), | 345 service_impl_->screen_availability_listeners_.find(presentation_url1_), |
| 343 service_impl_->screen_availability_listeners_.end()); | 346 service_impl_->screen_availability_listeners_.end()); |
| 344 EXPECT_FALSE(service_impl_->on_connection_messages_callback_.get()); | 347 EXPECT_FALSE(service_impl_->on_connection_messages_callback_.get()); |
| 345 } | 348 } |
| 346 | 349 |
| 347 void ExpectNewSessionCallbackSuccess( | 350 void ExpectNewSessionCallbackSuccess( |
| 348 blink::mojom::PresentationSessionInfoPtr info, | 351 content::mojom::PresentationSessionInfoPtr info, |
| 349 blink::mojom::PresentationErrorPtr error) { | 352 content::mojom::PresentationErrorPtr error) { |
| 350 EXPECT_FALSE(info.is_null()); | 353 EXPECT_FALSE(info.is_null()); |
| 351 EXPECT_TRUE(error.is_null()); | 354 EXPECT_TRUE(error.is_null()); |
| 352 if (!run_loop_quit_closure_.is_null()) | 355 if (!run_loop_quit_closure_.is_null()) |
| 353 run_loop_quit_closure_.Run(); | 356 run_loop_quit_closure_.Run(); |
| 354 } | 357 } |
| 355 | 358 |
| 356 void ExpectNewSessionCallbackError( | 359 void ExpectNewSessionCallbackError( |
| 357 blink::mojom::PresentationSessionInfoPtr info, | 360 content::mojom::PresentationSessionInfoPtr info, |
| 358 blink::mojom::PresentationErrorPtr error) { | 361 content::mojom::PresentationErrorPtr error) { |
| 359 EXPECT_TRUE(info.is_null()); | 362 EXPECT_TRUE(info.is_null()); |
| 360 EXPECT_FALSE(error.is_null()); | 363 EXPECT_FALSE(error.is_null()); |
| 361 if (!run_loop_quit_closure_.is_null()) | 364 if (!run_loop_quit_closure_.is_null()) |
| 362 run_loop_quit_closure_.Run(); | 365 run_loop_quit_closure_.Run(); |
| 363 } | 366 } |
| 364 | 367 |
| 365 void ExpectConnectionMessages( | 368 void ExpectConnectionMessages( |
| 366 const std::vector<blink::mojom::ConnectionMessagePtr>& expected_msgs, | 369 const std::vector<content::mojom::ConnectionMessagePtr>& expected_msgs, |
| 367 const std::vector<blink::mojom::ConnectionMessagePtr>& actual_msgs) { | 370 const std::vector<content::mojom::ConnectionMessagePtr>& actual_msgs) { |
| 368 EXPECT_EQ(expected_msgs.size(), actual_msgs.size()); | 371 EXPECT_EQ(expected_msgs.size(), actual_msgs.size()); |
| 369 for (size_t i = 0; i < actual_msgs.size(); ++i) | 372 for (size_t i = 0; i < actual_msgs.size(); ++i) |
| 370 EXPECT_TRUE(expected_msgs[i].Equals(actual_msgs[i])); | 373 EXPECT_TRUE(expected_msgs[i].Equals(actual_msgs[i])); |
| 371 } | 374 } |
| 372 | 375 |
| 373 void ExpectSendConnectionMessageCallback(bool success) { | 376 void ExpectSendConnectionMessageCallback(bool success) { |
| 374 EXPECT_TRUE(success); | 377 EXPECT_TRUE(success); |
| 375 EXPECT_FALSE(service_impl_->send_message_callback_); | 378 EXPECT_FALSE(service_impl_->send_message_callback_); |
| 376 if (!run_loop_quit_closure_.is_null()) | 379 if (!run_loop_quit_closure_.is_null()) |
| 377 run_loop_quit_closure_.Run(); | 380 run_loop_quit_closure_.Run(); |
| 378 } | 381 } |
| 379 | 382 |
| 380 void RunListenForConnectionMessages(const std::string& text_msg, | 383 void RunListenForConnectionMessages(const std::string& text_msg, |
| 381 const std::vector<uint8_t>& binary_data, | 384 const std::vector<uint8_t>& binary_data, |
| 382 bool pass_ownership) { | 385 bool pass_ownership) { |
| 383 std::vector<blink::mojom::ConnectionMessagePtr> expected_msgs(2); | 386 std::vector<content::mojom::ConnectionMessagePtr> expected_msgs(2); |
| 384 expected_msgs[0] = blink::mojom::ConnectionMessage::New(); | 387 expected_msgs[0] = content::mojom::ConnectionMessage::New(); |
| 385 expected_msgs[0]->type = blink::mojom::PresentationMessageType::TEXT; | 388 expected_msgs[0]->type = content::mojom::PresentationMessageType::TEXT; |
| 386 expected_msgs[0]->message = text_msg; | 389 expected_msgs[0]->message = text_msg; |
| 387 expected_msgs[1] = blink::mojom::ConnectionMessage::New(); | 390 expected_msgs[1] = content::mojom::ConnectionMessage::New(); |
| 388 expected_msgs[1]->type = blink::mojom::PresentationMessageType::BINARY; | 391 expected_msgs[1]->type = content::mojom::PresentationMessageType::BINARY; |
| 389 expected_msgs[1]->data = binary_data; | 392 expected_msgs[1]->data = binary_data; |
| 390 | 393 |
| 391 blink::mojom::PresentationSessionInfoPtr session( | 394 content::mojom::PresentationSessionInfoPtr session( |
| 392 blink::mojom::PresentationSessionInfo::New()); | 395 content::mojom::PresentationSessionInfo::New()); |
| 393 session->url = presentation_url1_; | 396 session->url = presentation_url1_; |
| 394 session->id = kPresentationId; | 397 session->id = kPresentationId; |
| 395 | 398 |
| 396 PresentationConnectionMessageCallback message_cb; | 399 PresentationConnectionMessageCallback message_cb; |
| 397 { | 400 { |
| 398 base::RunLoop run_loop; | 401 base::RunLoop run_loop; |
| 399 EXPECT_CALL(mock_delegate_, ListenForConnectionMessages(_, _, _, _)) | 402 EXPECT_CALL(mock_delegate_, ListenForConnectionMessages(_, _, _, _)) |
| 400 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), | 403 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), |
| 401 SaveArg<3>(&message_cb))); | 404 SaveArg<3>(&message_cb))); |
| 402 service_ptr_->ListenForConnectionMessages(std::move(session)); | 405 service_ptr_->ListenForConnectionMessages(std::move(session)); |
| 403 run_loop.Run(); | 406 run_loop.Run(); |
| 404 } | 407 } |
| 405 | 408 |
| 406 std::vector<std::unique_ptr<PresentationConnectionMessage>> messages; | 409 std::vector<std::unique_ptr<PresentationConnectionMessage>> messages; |
| 407 std::unique_ptr<content::PresentationConnectionMessage> message; | 410 std::unique_ptr<content::PresentationConnectionMessage> message; |
| 408 message.reset(new content::PresentationConnectionMessage( | 411 message.reset(new content::PresentationConnectionMessage( |
| 409 PresentationMessageType::TEXT)); | 412 PresentationMessageType::TEXT)); |
| 410 message->message = text_msg; | 413 message->message = text_msg; |
| 411 messages.push_back(std::move(message)); | 414 messages.push_back(std::move(message)); |
| 412 message.reset(new content::PresentationConnectionMessage( | 415 message.reset(new content::PresentationConnectionMessage( |
| 413 PresentationMessageType::BINARY)); | 416 PresentationMessageType::BINARY)); |
| 414 message->data.reset(new std::vector<uint8_t>(binary_data)); | 417 message->data.reset(new std::vector<uint8_t>(binary_data)); |
| 415 messages.push_back(std::move(message)); | 418 messages.push_back(std::move(message)); |
| 416 | 419 |
| 417 std::vector<blink::mojom::ConnectionMessagePtr> actual_msgs; | 420 std::vector<content::mojom::ConnectionMessagePtr> actual_msgs; |
| 418 { | 421 { |
| 419 base::RunLoop run_loop; | 422 base::RunLoop run_loop; |
| 420 EXPECT_CALL(mock_client_, MessagesReceived()) | 423 EXPECT_CALL(mock_client_, MessagesReceived()) |
| 421 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); | 424 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); |
| 422 message_cb.Run(std::move(messages), pass_ownership); | 425 message_cb.Run(std::move(messages), pass_ownership); |
| 423 run_loop.Run(); | 426 run_loop.Run(); |
| 424 } | 427 } |
| 425 ExpectConnectionMessages(expected_msgs, mock_client_.messages_received_); | 428 ExpectConnectionMessages(expected_msgs, mock_client_.messages_received_); |
| 426 } | 429 } |
| 427 | 430 |
| 428 MockPresentationServiceDelegate mock_delegate_; | 431 MockPresentationServiceDelegate mock_delegate_; |
| 429 MockReceiverPresentationServiceDelegate mock_receiver_delegate_; | 432 MockReceiverPresentationServiceDelegate mock_receiver_delegate_; |
| 430 | 433 |
| 431 std::unique_ptr<PresentationServiceImpl> service_impl_; | 434 std::unique_ptr<PresentationServiceImpl> service_impl_; |
| 432 mojo::InterfacePtr<blink::mojom::PresentationService> service_ptr_; | 435 mojo::InterfacePtr<content::mojom::PresentationService> service_ptr_; |
| 433 | 436 |
| 434 MockPresentationServiceClient mock_client_; | 437 MockPresentationServiceClient mock_client_; |
| 435 std::unique_ptr<mojo::Binding<blink::mojom::PresentationServiceClient>> | 438 std::unique_ptr<mojo::Binding<content::mojom::PresentationServiceClient>> |
| 436 client_binding_; | 439 client_binding_; |
| 437 | 440 |
| 438 base::Closure run_loop_quit_closure_; | 441 base::Closure run_loop_quit_closure_; |
| 439 | 442 |
| 440 GURL presentation_url1_; | 443 GURL presentation_url1_; |
| 441 GURL presentation_url2_; | 444 GURL presentation_url2_; |
| 442 GURL presentation_url3_; | 445 GURL presentation_url3_; |
| 443 std::vector<GURL> presentation_urls_; | 446 std::vector<GURL> presentation_urls_; |
| 444 }; | 447 }; |
| 445 | 448 |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 522 | 525 |
| 523 // Sets different DPUs. | 526 // Sets different DPUs. |
| 524 std::vector<GURL> more_urls = presentation_urls_; | 527 std::vector<GURL> more_urls = presentation_urls_; |
| 525 more_urls.push_back(presentation_url3_); | 528 more_urls.push_back(presentation_url3_); |
| 526 | 529 |
| 527 content::PresentationSessionStartedCallback callback; | 530 content::PresentationSessionStartedCallback callback; |
| 528 EXPECT_CALL(mock_delegate_, SetDefaultPresentationUrls(_, _, more_urls, _)) | 531 EXPECT_CALL(mock_delegate_, SetDefaultPresentationUrls(_, _, more_urls, _)) |
| 529 .WillOnce(SaveArg<3>(&callback)); | 532 .WillOnce(SaveArg<3>(&callback)); |
| 530 service_impl_->SetDefaultPresentationUrls(more_urls); | 533 service_impl_->SetDefaultPresentationUrls(more_urls); |
| 531 | 534 |
| 532 blink::mojom::PresentationSessionInfo session_info; | 535 content::mojom::PresentationSessionInfo session_info; |
| 533 session_info.url = presentation_url2_; | 536 session_info.url = presentation_url2_; |
| 534 session_info.id = kPresentationId; | 537 session_info.id = kPresentationId; |
| 535 | 538 |
| 536 base::RunLoop run_loop; | 539 base::RunLoop run_loop; |
| 537 EXPECT_CALL(mock_client_, | 540 EXPECT_CALL(mock_client_, |
| 538 OnDefaultSessionStarted(SessionInfoEquals(ByRef(session_info)))) | 541 OnDefaultSessionStarted(SessionInfoEquals(ByRef(session_info)))) |
| 539 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); | 542 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); |
| 540 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _)); | 543 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _)); |
| 541 callback.Run( | 544 callback.Run( |
| 542 content::PresentationSessionInfo(presentation_url2_, kPresentationId)); | 545 content::PresentationSessionInfo(presentation_url2_, kPresentationId)); |
| 543 run_loop.Run(); | 546 run_loop.Run(); |
| 544 } | 547 } |
| 545 | 548 |
| 546 TEST_F(PresentationServiceImplTest, | 549 TEST_F(PresentationServiceImplTest, |
| 547 ListenForConnectionStateChangeAndChangeState) { | 550 ListenForConnectionStateChangeAndChangeState) { |
| 548 content::PresentationSessionInfo connection(presentation_url1_, | 551 content::PresentationSessionInfo connection(presentation_url1_, |
| 549 kPresentationId); | 552 kPresentationId); |
| 550 content::PresentationConnectionStateChangedCallback state_changed_cb; | 553 content::PresentationConnectionStateChangedCallback state_changed_cb; |
| 551 // Trigger state change. It should be propagated back up to |mock_client_|. | 554 // Trigger state change. It should be propagated back up to |mock_client_|. |
| 552 blink::mojom::PresentationSessionInfo presentation_connection; | 555 content::mojom::PresentationSessionInfo presentation_connection; |
| 553 presentation_connection.url = presentation_url1_; | 556 presentation_connection.url = presentation_url1_; |
| 554 presentation_connection.id = kPresentationId; | 557 presentation_connection.id = kPresentationId; |
| 555 | 558 |
| 556 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _)) | 559 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _)) |
| 557 .WillOnce(SaveArg<3>(&state_changed_cb)); | 560 .WillOnce(SaveArg<3>(&state_changed_cb)); |
| 558 EXPECT_CALL(mock_client_, | 561 EXPECT_CALL(mock_client_, |
| 559 OnConnectionStateChanged( | 562 OnConnectionStateChanged( |
| 560 SessionInfoEquals(ByRef(presentation_connection)), | 563 SessionInfoEquals(ByRef(presentation_connection)), |
| 561 blink::mojom::PresentationConnectionState::CONNECTED)); | 564 content::mojom::PresentationConnectionState::CONNECTED)); |
| 562 service_impl_->ListenForConnectionStateChangeAndChangeState(connection); | 565 service_impl_->ListenForConnectionStateChangeAndChangeState(connection); |
| 563 | 566 |
| 564 { | 567 { |
| 565 base::RunLoop run_loop; | 568 base::RunLoop run_loop; |
| 566 EXPECT_CALL(mock_client_, | 569 EXPECT_CALL(mock_client_, |
| 567 OnConnectionStateChanged( | 570 OnConnectionStateChanged( |
| 568 SessionInfoEquals(ByRef(presentation_connection)), | 571 SessionInfoEquals(ByRef(presentation_connection)), |
| 569 blink::mojom::PresentationConnectionState::TERMINATED)) | 572 content::mojom::PresentationConnectionState::TERMINATED)) |
| 570 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); | 573 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); |
| 571 state_changed_cb.Run(PresentationConnectionStateChangeInfo( | 574 state_changed_cb.Run(PresentationConnectionStateChangeInfo( |
| 572 PRESENTATION_CONNECTION_STATE_TERMINATED)); | 575 PRESENTATION_CONNECTION_STATE_TERMINATED)); |
| 573 run_loop.Run(); | 576 run_loop.Run(); |
| 574 } | 577 } |
| 575 } | 578 } |
| 576 | 579 |
| 577 TEST_F(PresentationServiceImplTest, ListenForConnectionClose) { | 580 TEST_F(PresentationServiceImplTest, ListenForConnectionClose) { |
| 578 content::PresentationSessionInfo connection(presentation_url1_, | 581 content::PresentationSessionInfo connection(presentation_url1_, |
| 579 kPresentationId); | 582 kPresentationId); |
| 580 content::PresentationConnectionStateChangedCallback state_changed_cb; | 583 content::PresentationConnectionStateChangedCallback state_changed_cb; |
| 581 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _)) | 584 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _)) |
| 582 .WillOnce(SaveArg<3>(&state_changed_cb)); | 585 .WillOnce(SaveArg<3>(&state_changed_cb)); |
| 583 service_impl_->ListenForConnectionStateChangeAndChangeState(connection); | 586 service_impl_->ListenForConnectionStateChangeAndChangeState(connection); |
| 584 | 587 |
| 585 // Trigger connection close. It should be propagated back up to | 588 // Trigger connection close. It should be propagated back up to |
| 586 // |mock_client_|. | 589 // |mock_client_|. |
| 587 blink::mojom::PresentationSessionInfo presentation_connection; | 590 content::mojom::PresentationSessionInfo presentation_connection; |
| 588 presentation_connection.url = presentation_url1_; | 591 presentation_connection.url = presentation_url1_; |
| 589 presentation_connection.id = kPresentationId; | 592 presentation_connection.id = kPresentationId; |
| 590 { | 593 { |
| 591 base::RunLoop run_loop; | 594 base::RunLoop run_loop; |
| 592 PresentationConnectionStateChangeInfo closed_info( | 595 PresentationConnectionStateChangeInfo closed_info( |
| 593 PRESENTATION_CONNECTION_STATE_CLOSED); | 596 PRESENTATION_CONNECTION_STATE_CLOSED); |
| 594 closed_info.close_reason = PRESENTATION_CONNECTION_CLOSE_REASON_WENT_AWAY; | 597 closed_info.close_reason = PRESENTATION_CONNECTION_CLOSE_REASON_WENT_AWAY; |
| 595 closed_info.message = "Foo"; | 598 closed_info.message = "Foo"; |
| 596 | 599 |
| 597 EXPECT_CALL( | 600 EXPECT_CALL( |
| 598 mock_client_, | 601 mock_client_, |
| 599 OnConnectionClosed( | 602 OnConnectionClosed( |
| 600 SessionInfoEquals(ByRef(presentation_connection)), | 603 SessionInfoEquals(ByRef(presentation_connection)), |
| 601 blink::mojom::PresentationConnectionCloseReason::WENT_AWAY, "Foo")) | 604 content::mojom::PresentationConnectionCloseReason::WENT_AWAY, |
| 605 "Foo")) |
| 602 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); | 606 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); |
| 603 state_changed_cb.Run(closed_info); | 607 state_changed_cb.Run(closed_info); |
| 604 run_loop.Run(); | 608 run_loop.Run(); |
| 605 } | 609 } |
| 606 } | 610 } |
| 607 | 611 |
| 608 TEST_F(PresentationServiceImplTest, SetSameDefaultPresentationUrls) { | 612 TEST_F(PresentationServiceImplTest, SetSameDefaultPresentationUrls) { |
| 609 EXPECT_CALL(mock_delegate_, | 613 EXPECT_CALL(mock_delegate_, |
| 610 SetDefaultPresentationUrls(_, _, presentation_urls_, _)) | 614 SetDefaultPresentationUrls(_, _, presentation_urls_, _)) |
| 611 .Times(1); | 615 .Times(1); |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 714 RunListenForConnectionMessages(text_msg, binary_data, false); | 718 RunListenForConnectionMessages(text_msg, binary_data, false); |
| 715 } | 719 } |
| 716 | 720 |
| 717 TEST_F(PresentationServiceImplTest, ListenForConnectionMessagesWithEmptyMsg) { | 721 TEST_F(PresentationServiceImplTest, ListenForConnectionMessagesWithEmptyMsg) { |
| 718 std::string text_msg(""); | 722 std::string text_msg(""); |
| 719 std::vector<uint8_t> binary_data; | 723 std::vector<uint8_t> binary_data; |
| 720 RunListenForConnectionMessages(text_msg, binary_data, false); | 724 RunListenForConnectionMessages(text_msg, binary_data, false); |
| 721 } | 725 } |
| 722 | 726 |
| 723 TEST_F(PresentationServiceImplTest, SetPresentationConnection) { | 727 TEST_F(PresentationServiceImplTest, SetPresentationConnection) { |
| 724 blink::mojom::PresentationSessionInfoPtr session( | 728 content::mojom::PresentationSessionInfoPtr session( |
| 725 blink::mojom::PresentationSessionInfo::New()); | 729 content::mojom::PresentationSessionInfo::New()); |
| 726 session->url = presentation_url1_; | 730 session->url = presentation_url1_; |
| 727 session->id = kPresentationId; | 731 session->id = kPresentationId; |
| 728 | 732 |
| 729 blink::mojom::PresentationConnectionPtr connection; | 733 content::mojom::PresentationConnectionPtr connection; |
| 730 MockPresentationConnection mock_presentation_connection; | 734 MockPresentationConnection mock_presentation_connection; |
| 731 mojo::Binding<blink::mojom::PresentationConnection> connection_binding( | 735 mojo::Binding<content::mojom::PresentationConnection> connection_binding( |
| 732 &mock_presentation_connection, mojo::MakeRequest(&connection)); | 736 &mock_presentation_connection, mojo::MakeRequest(&connection)); |
| 733 blink::mojom::PresentationConnectionPtr receiver_connection; | 737 content::mojom::PresentationConnectionPtr receiver_connection; |
| 734 auto request = mojo::MakeRequest(&receiver_connection); | 738 auto request = mojo::MakeRequest(&receiver_connection); |
| 735 | 739 |
| 736 content::PresentationSessionInfo expected(presentation_url1_, | 740 content::PresentationSessionInfo expected(presentation_url1_, |
| 737 kPresentationId); | 741 kPresentationId); |
| 738 EXPECT_CALL(mock_delegate_, | 742 EXPECT_CALL(mock_delegate_, |
| 739 RegisterOffscreenPresentationConnectionRaw( | 743 RegisterOffscreenPresentationConnectionRaw( |
| 740 _, _, ContentSessionInfoEquals(ByRef(expected)), _)); | 744 _, _, ContentSessionInfoEquals(ByRef(expected)), _)); |
| 741 | 745 |
| 742 service_impl_->SetPresentationConnection( | 746 service_impl_->SetPresentationConnection( |
| 743 std::move(session), std::move(connection), std::move(request)); | 747 std::move(session), std::move(connection), std::move(request)); |
| 744 } | 748 } |
| 745 | 749 |
| 746 TEST_F(PresentationServiceImplTest, ReceiverPresentationServiceDelegate) { | 750 TEST_F(PresentationServiceImplTest, ReceiverPresentationServiceDelegate) { |
| 747 MockReceiverPresentationServiceDelegate mock_receiver_delegate; | 751 MockReceiverPresentationServiceDelegate mock_receiver_delegate; |
| 748 | 752 |
| 749 PresentationServiceImpl service_impl(contents()->GetMainFrame(), contents(), | 753 PresentationServiceImpl service_impl(contents()->GetMainFrame(), contents(), |
| 750 nullptr, &mock_receiver_delegate); | 754 nullptr, &mock_receiver_delegate); |
| 751 | 755 |
| 752 ReceiverConnectionAvailableCallback callback; | 756 ReceiverConnectionAvailableCallback callback; |
| 753 EXPECT_CALL(mock_receiver_delegate, | 757 EXPECT_CALL(mock_receiver_delegate, |
| 754 RegisterReceiverConnectionAvailableCallback(_)) | 758 RegisterReceiverConnectionAvailableCallback(_)) |
| 755 .WillOnce(SaveArg<0>(&callback)); | 759 .WillOnce(SaveArg<0>(&callback)); |
| 756 | 760 |
| 757 blink::mojom::PresentationServiceClientPtr client_ptr; | 761 content::mojom::PresentationServiceClientPtr client_ptr; |
| 758 client_binding_.reset( | 762 client_binding_.reset( |
| 759 new mojo::Binding<blink::mojom::PresentationServiceClient>( | 763 new mojo::Binding<content::mojom::PresentationServiceClient>( |
| 760 &mock_client_, mojo::MakeRequest(&client_ptr))); | 764 &mock_client_, mojo::MakeRequest(&client_ptr))); |
| 761 service_impl.controller_delegate_ = nullptr; | 765 service_impl.controller_delegate_ = nullptr; |
| 762 service_impl.SetClient(std::move(client_ptr)); | 766 service_impl.SetClient(std::move(client_ptr)); |
| 763 EXPECT_FALSE(callback.is_null()); | 767 EXPECT_FALSE(callback.is_null()); |
| 764 | 768 |
| 765 // NO-OP for ControllerPresentationServiceDelegate API functions | 769 // NO-OP for ControllerPresentationServiceDelegate API functions |
| 766 EXPECT_CALL(mock_delegate_, ListenForConnectionMessages(_, _, _, _)).Times(0); | 770 EXPECT_CALL(mock_delegate_, ListenForConnectionMessages(_, _, _, _)).Times(0); |
| 767 | 771 |
| 768 blink::mojom::PresentationSessionInfoPtr session( | 772 content::mojom::PresentationSessionInfoPtr session( |
| 769 blink::mojom::PresentationSessionInfo::New()); | 773 content::mojom::PresentationSessionInfo::New()); |
| 770 session->url = GURL(kPresentationUrl1); | 774 session->url = GURL(kPresentationUrl1); |
| 771 session->id = kPresentationId; | 775 session->id = kPresentationId; |
| 772 | 776 |
| 773 service_impl.ListenForConnectionMessages(std::move(session)); | 777 service_impl.ListenForConnectionMessages(std::move(session)); |
| 774 } | 778 } |
| 775 | 779 |
| 776 TEST_F(PresentationServiceImplTest, StartSessionInProgress) { | 780 TEST_F(PresentationServiceImplTest, StartSessionInProgress) { |
| 777 EXPECT_CALL(mock_delegate_, StartSession(_, _, presentation_urls_, _, _)) | 781 EXPECT_CALL(mock_delegate_, StartSession(_, _, presentation_urls_, _, _)) |
| 778 .Times(1); | 782 .Times(1); |
| 779 service_ptr_->StartSession(presentation_urls_, base::Bind(&DoNothing)); | 783 service_ptr_->StartSession(presentation_urls_, base::Bind(&DoNothing)); |
| 780 | 784 |
| 781 // This request should fail immediately, since there is already a StartSession | 785 // This request should fail immediately, since there is already a StartSession |
| 782 // in progress. | 786 // in progress. |
| 783 service_ptr_->StartSession( | 787 service_ptr_->StartSession( |
| 784 presentation_urls_, | 788 presentation_urls_, |
| 785 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackError, | 789 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackError, |
| 786 base::Unretained(this))); | 790 base::Unretained(this))); |
| 787 SaveQuitClosureAndRunLoop(); | 791 SaveQuitClosureAndRunLoop(); |
| 788 } | 792 } |
| 789 | 793 |
| 790 TEST_F(PresentationServiceImplTest, SendStringMessage) { | 794 TEST_F(PresentationServiceImplTest, SendStringMessage) { |
| 791 std::string message("Test presentation session message"); | 795 std::string message("Test presentation session message"); |
| 792 | 796 |
| 793 blink::mojom::PresentationSessionInfoPtr session( | 797 content::mojom::PresentationSessionInfoPtr session( |
| 794 blink::mojom::PresentationSessionInfo::New()); | 798 content::mojom::PresentationSessionInfo::New()); |
| 795 session->url = presentation_url1_; | 799 session->url = presentation_url1_; |
| 796 session->id = kPresentationId; | 800 session->id = kPresentationId; |
| 797 blink::mojom::ConnectionMessagePtr message_request( | 801 content::mojom::ConnectionMessagePtr message_request( |
| 798 blink::mojom::ConnectionMessage::New()); | 802 content::mojom::ConnectionMessage::New()); |
| 799 message_request->type = blink::mojom::PresentationMessageType::TEXT; | 803 message_request->type = content::mojom::PresentationMessageType::TEXT; |
| 800 message_request->message = message; | 804 message_request->message = message; |
| 801 service_ptr_->SendConnectionMessage( | 805 service_ptr_->SendConnectionMessage( |
| 802 std::move(session), std::move(message_request), | 806 std::move(session), std::move(message_request), |
| 803 base::Bind( | 807 base::Bind( |
| 804 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback, | 808 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback, |
| 805 base::Unretained(this))); | 809 base::Unretained(this))); |
| 806 | 810 |
| 807 base::RunLoop run_loop; | 811 base::RunLoop run_loop; |
| 808 base::Callback<void(bool)> send_message_cb; | 812 base::Callback<void(bool)> send_message_cb; |
| 809 PresentationConnectionMessage* test_message = nullptr; | 813 PresentationConnectionMessage* test_message = nullptr; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 824 send_message_cb.Run(true); | 828 send_message_cb.Run(true); |
| 825 SaveQuitClosureAndRunLoop(); | 829 SaveQuitClosureAndRunLoop(); |
| 826 } | 830 } |
| 827 | 831 |
| 828 TEST_F(PresentationServiceImplTest, SendArrayBuffer) { | 832 TEST_F(PresentationServiceImplTest, SendArrayBuffer) { |
| 829 // Test Array buffer data. | 833 // Test Array buffer data. |
| 830 const uint8_t buffer[] = {0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48}; | 834 const uint8_t buffer[] = {0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48}; |
| 831 std::vector<uint8_t> data; | 835 std::vector<uint8_t> data; |
| 832 data.assign(buffer, buffer + sizeof(buffer)); | 836 data.assign(buffer, buffer + sizeof(buffer)); |
| 833 | 837 |
| 834 blink::mojom::PresentationSessionInfoPtr session( | 838 content::mojom::PresentationSessionInfoPtr session( |
| 835 blink::mojom::PresentationSessionInfo::New()); | 839 content::mojom::PresentationSessionInfo::New()); |
| 836 session->url = presentation_url1_; | 840 session->url = presentation_url1_; |
| 837 session->id = kPresentationId; | 841 session->id = kPresentationId; |
| 838 blink::mojom::ConnectionMessagePtr message_request( | 842 content::mojom::ConnectionMessagePtr message_request( |
| 839 blink::mojom::ConnectionMessage::New()); | 843 content::mojom::ConnectionMessage::New()); |
| 840 message_request->type = blink::mojom::PresentationMessageType::BINARY; | 844 message_request->type = content::mojom::PresentationMessageType::BINARY; |
| 841 message_request->data = data; | 845 message_request->data = data; |
| 842 service_ptr_->SendConnectionMessage( | 846 service_ptr_->SendConnectionMessage( |
| 843 std::move(session), std::move(message_request), | 847 std::move(session), std::move(message_request), |
| 844 base::Bind( | 848 base::Bind( |
| 845 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback, | 849 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback, |
| 846 base::Unretained(this))); | 850 base::Unretained(this))); |
| 847 | 851 |
| 848 base::RunLoop run_loop; | 852 base::RunLoop run_loop; |
| 849 base::Callback<void(bool)> send_message_cb; | 853 base::Callback<void(bool)> send_message_cb; |
| 850 PresentationConnectionMessage* test_message = nullptr; | 854 PresentationConnectionMessage* test_message = nullptr; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 870 | 874 |
| 871 TEST_F(PresentationServiceImplTest, SendArrayBufferWithExceedingLimit) { | 875 TEST_F(PresentationServiceImplTest, SendArrayBufferWithExceedingLimit) { |
| 872 // Create buffer with size exceeding the limit. | 876 // Create buffer with size exceeding the limit. |
| 873 // Use same size as in content::kMaxPresentationConnectionMessageSize. | 877 // Use same size as in content::kMaxPresentationConnectionMessageSize. |
| 874 const size_t kMaxBufferSizeInBytes = 64 * 1024; // 64 KB. | 878 const size_t kMaxBufferSizeInBytes = 64 * 1024; // 64 KB. |
| 875 uint8_t buffer[kMaxBufferSizeInBytes + 1]; | 879 uint8_t buffer[kMaxBufferSizeInBytes + 1]; |
| 876 memset(buffer, 0, kMaxBufferSizeInBytes+1); | 880 memset(buffer, 0, kMaxBufferSizeInBytes+1); |
| 877 std::vector<uint8_t> data; | 881 std::vector<uint8_t> data; |
| 878 data.assign(buffer, buffer + sizeof(buffer)); | 882 data.assign(buffer, buffer + sizeof(buffer)); |
| 879 | 883 |
| 880 blink::mojom::PresentationSessionInfoPtr session( | 884 content::mojom::PresentationSessionInfoPtr session( |
| 881 blink::mojom::PresentationSessionInfo::New()); | 885 content::mojom::PresentationSessionInfo::New()); |
| 882 session->url = presentation_url1_; | 886 session->url = presentation_url1_; |
| 883 session->id = kPresentationId; | 887 session->id = kPresentationId; |
| 884 blink::mojom::ConnectionMessagePtr message_request( | 888 content::mojom::ConnectionMessagePtr message_request( |
| 885 blink::mojom::ConnectionMessage::New()); | 889 content::mojom::ConnectionMessage::New()); |
| 886 message_request->type = blink::mojom::PresentationMessageType::BINARY; | 890 message_request->type = content::mojom::PresentationMessageType::BINARY; |
| 887 message_request->data = data; | 891 message_request->data = data; |
| 888 service_ptr_->SendConnectionMessage( | 892 service_ptr_->SendConnectionMessage( |
| 889 std::move(session), std::move(message_request), | 893 std::move(session), std::move(message_request), |
| 890 base::Bind( | 894 base::Bind( |
| 891 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback, | 895 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback, |
| 892 base::Unretained(this))); | 896 base::Unretained(this))); |
| 893 | 897 |
| 894 base::RunLoop run_loop; | 898 base::RunLoop run_loop; |
| 895 base::Callback<void(bool)> send_message_cb; | 899 base::Callback<void(bool)> send_message_cb; |
| 896 PresentationConnectionMessage* test_message = nullptr; | 900 PresentationConnectionMessage* test_message = nullptr; |
| 897 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _)) | 901 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _)) |
| 898 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), | 902 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), |
| 899 SaveArg<3>(&test_message), SaveArg<4>(&send_message_cb))); | 903 SaveArg<3>(&test_message), SaveArg<4>(&send_message_cb))); |
| 900 run_loop.Run(); | 904 run_loop.Run(); |
| 901 | 905 |
| 902 EXPECT_FALSE(test_message); | 906 EXPECT_FALSE(test_message); |
| 903 send_message_cb.Run(true); | 907 send_message_cb.Run(true); |
| 904 SaveQuitClosureAndRunLoop(); | 908 SaveQuitClosureAndRunLoop(); |
| 905 } | 909 } |
| 906 | 910 |
| 907 TEST_F(PresentationServiceImplTest, SendBlobData) { | 911 TEST_F(PresentationServiceImplTest, SendBlobData) { |
| 908 const uint8_t buffer[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}; | 912 const uint8_t buffer[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}; |
| 909 std::vector<uint8_t> data; | 913 std::vector<uint8_t> data; |
| 910 data.assign(buffer, buffer + sizeof(buffer)); | 914 data.assign(buffer, buffer + sizeof(buffer)); |
| 911 | 915 |
| 912 blink::mojom::PresentationSessionInfoPtr session( | 916 content::mojom::PresentationSessionInfoPtr session( |
| 913 blink::mojom::PresentationSessionInfo::New()); | 917 content::mojom::PresentationSessionInfo::New()); |
| 914 session->url = presentation_url1_; | 918 session->url = presentation_url1_; |
| 915 session->id = kPresentationId; | 919 session->id = kPresentationId; |
| 916 blink::mojom::ConnectionMessagePtr message_request( | 920 content::mojom::ConnectionMessagePtr message_request( |
| 917 blink::mojom::ConnectionMessage::New()); | 921 content::mojom::ConnectionMessage::New()); |
| 918 message_request->type = blink::mojom::PresentationMessageType::BINARY; | 922 message_request->type = content::mojom::PresentationMessageType::BINARY; |
| 919 message_request->data = data; | 923 message_request->data = data; |
| 920 service_ptr_->SendConnectionMessage( | 924 service_ptr_->SendConnectionMessage( |
| 921 std::move(session), std::move(message_request), | 925 std::move(session), std::move(message_request), |
| 922 base::Bind( | 926 base::Bind( |
| 923 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback, | 927 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback, |
| 924 base::Unretained(this))); | 928 base::Unretained(this))); |
| 925 | 929 |
| 926 base::RunLoop run_loop; | 930 base::RunLoop run_loop; |
| 927 base::Callback<void(bool)> send_message_cb; | 931 base::Callback<void(bool)> send_message_cb; |
| 928 PresentationConnectionMessage* test_message = nullptr; | 932 PresentationConnectionMessage* test_message = nullptr; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 972 mock_delegate_.set_screen_availability_listening_supported(false); | 976 mock_delegate_.set_screen_availability_listening_supported(false); |
| 973 base::RunLoop run_loop; | 977 base::RunLoop run_loop; |
| 974 EXPECT_CALL(mock_client_, | 978 EXPECT_CALL(mock_client_, |
| 975 OnScreenAvailabilityNotSupported(presentation_url1_)) | 979 OnScreenAvailabilityNotSupported(presentation_url1_)) |
| 976 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); | 980 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); |
| 977 ListenForScreenAvailabilityAndWait(presentation_url1_, false); | 981 ListenForScreenAvailabilityAndWait(presentation_url1_, false); |
| 978 run_loop.Run(); | 982 run_loop.Run(); |
| 979 } | 983 } |
| 980 | 984 |
| 981 } // namespace content | 985 } // namespace content |
| OLD | NEW |