| 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 <vector> | 5 #include <vector> |
| 6 | 6 |
| 7 #include "base/strings/stringprintf.h" | 7 #include "base/strings/stringprintf.h" |
| 8 #include "chrome/browser/media/router/media_source.h" | 8 #include "chrome/browser/media/router/media_source.h" |
| 9 #include "chrome/browser/media/router/media_source_helper.h" | 9 #include "chrome/browser/media/router/media_source_helper.h" |
| 10 #include "chrome/browser/media/router/mock_media_router.h" | 10 #include "chrome/browser/media/router/mock_media_router.h" |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 }; | 38 }; |
| 39 | 39 |
| 40 class MockDefaultPresentationRequestObserver | 40 class MockDefaultPresentationRequestObserver |
| 41 : public PresentationServiceDelegateImpl:: | 41 : public PresentationServiceDelegateImpl:: |
| 42 DefaultPresentationRequestObserver { | 42 DefaultPresentationRequestObserver { |
| 43 public: | 43 public: |
| 44 MOCK_METHOD1(OnDefaultPresentationChanged, void(const PresentationRequest&)); | 44 MOCK_METHOD1(OnDefaultPresentationChanged, void(const PresentationRequest&)); |
| 45 MOCK_METHOD0(OnDefaultPresentationRemoved, void()); | 45 MOCK_METHOD0(OnDefaultPresentationRemoved, void()); |
| 46 }; | 46 }; |
| 47 | 47 |
| 48 class MockCreatePresentationConnnectionCallbacks { |
| 49 public: |
| 50 MOCK_METHOD1(OnCreateConnectionSuccess, |
| 51 void(const content::PresentationSessionInfo& connection)); |
| 52 MOCK_METHOD1(OnCreateConnectionError, |
| 53 void(const content::PresentationError& error)); |
| 54 }; |
| 55 |
| 48 class PresentationServiceDelegateImplTest | 56 class PresentationServiceDelegateImplTest |
| 49 : public ChromeRenderViewHostTestHarness { | 57 : public ChromeRenderViewHostTestHarness { |
| 50 public: | 58 public: |
| 51 void SetUp() override { | 59 void SetUp() override { |
| 52 ChromeRenderViewHostTestHarness::SetUp(); | 60 ChromeRenderViewHostTestHarness::SetUp(); |
| 53 content::WebContents* wc = web_contents(); | 61 content::WebContents* wc = web_contents(); |
| 54 ASSERT_TRUE(wc); | 62 ASSERT_TRUE(wc); |
| 55 PresentationServiceDelegateImpl::CreateForWebContents(wc); | 63 PresentationServiceDelegateImpl::CreateForWebContents(wc); |
| 56 delegate_impl_ = PresentationServiceDelegateImpl::FromWebContents(wc); | 64 delegate_impl_ = PresentationServiceDelegateImpl::FromWebContents(wc); |
| 57 delegate_impl_->SetMediaRouterForTest(&router_); | 65 delegate_impl_->SetMediaRouterForTest(&router_); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 render_process_id, render_frame_id, source1.id())); | 126 render_process_id, render_frame_id, source1.id())); |
| 119 | 127 |
| 120 EXPECT_CALL(router_, UnregisterMediaSinksObserver(_)).Times(1); | 128 EXPECT_CALL(router_, UnregisterMediaSinksObserver(_)).Times(1); |
| 121 delegate_impl_->RemoveScreenAvailabilityListener(render_process_id, | 129 delegate_impl_->RemoveScreenAvailabilityListener(render_process_id, |
| 122 render_frame_id, &listener1); | 130 render_frame_id, &listener1); |
| 123 EXPECT_FALSE(delegate_impl_->HasScreenAvailabilityListenerForTest( | 131 EXPECT_FALSE(delegate_impl_->HasScreenAvailabilityListenerForTest( |
| 124 render_process_id, render_frame_id, source1.id())); | 132 render_process_id, render_frame_id, source1.id())); |
| 125 } | 133 } |
| 126 | 134 |
| 127 // TODO(imcheng): Add a test to set default presentation URL in a different | 135 // TODO(imcheng): Add a test to set default presentation URL in a different |
| 128 // RenderFrameHost and verify that it works. | 136 // RenderFrameHost and verify that it is ignored. |
| 129 TEST_F(PresentationServiceDelegateImplTest, SetDefaultPresentationUrl) { | 137 TEST_F(PresentationServiceDelegateImplTest, SetDefaultPresentationUrl) { |
| 130 EXPECT_FALSE(delegate_impl_->HasDefaultPresentationRequest()); | 138 EXPECT_FALSE(delegate_impl_->HasDefaultPresentationRequest()); |
| 131 | 139 |
| 132 GURL frame_url("http://www.google.com"); | 140 GURL frame_url("http://www.google.com"); |
| 133 content::WebContentsTester::For(web_contents())->NavigateAndCommit(frame_url); | 141 content::WebContentsTester::For(web_contents())->NavigateAndCommit(frame_url); |
| 134 content::RenderFrameHost* main_frame = web_contents()->GetMainFrame(); | 142 content::RenderFrameHost* main_frame = web_contents()->GetMainFrame(); |
| 135 ASSERT_TRUE(main_frame); | 143 ASSERT_TRUE(main_frame); |
| 136 int render_process_id = main_frame->GetProcess()->GetID(); | 144 int render_process_id = main_frame->GetProcess()->GetID(); |
| 137 int routing_id = main_frame->GetRoutingID(); | 145 int routing_id = main_frame->GetRoutingID(); |
| 138 | 146 |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 251 EXPECT_TRUE(request2.Equals(observed_request2)); | 259 EXPECT_TRUE(request2.Equals(observed_request2)); |
| 252 | 260 |
| 253 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer)); | 261 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer)); |
| 254 | 262 |
| 255 // Remove default presentation URL. | 263 // Remove default presentation URL. |
| 256 EXPECT_CALL(observer, OnDefaultPresentationRemoved()).Times(1); | 264 EXPECT_CALL(observer, OnDefaultPresentationRemoved()).Times(1); |
| 257 delegate_impl_->SetDefaultPresentationUrl(render_process_id, routing_id, "", | 265 delegate_impl_->SetDefaultPresentationUrl(render_process_id, routing_id, "", |
| 258 callback); | 266 callback); |
| 259 } | 267 } |
| 260 | 268 |
| 269 TEST_F(PresentationServiceDelegateImplTest, ListenForConnnectionStateChange) { |
| 270 GURL frame_url("http://www.google.com"); |
| 271 content::WebContentsTester::For(web_contents())->NavigateAndCommit(frame_url); |
| 272 content::RenderFrameHost* main_frame = web_contents()->GetMainFrame(); |
| 273 ASSERT_TRUE(main_frame); |
| 274 int render_process_id = main_frame->GetProcess()->GetID(); |
| 275 int routing_id = main_frame->GetRoutingID(); |
| 276 |
| 277 // Set up a PresentationConnection so we can listen to it. |
| 278 std::vector<MediaRouteResponseCallback> route_response_callbacks; |
| 279 EXPECT_CALL(router_, JoinRoute(_, _, _, _, _)) |
| 280 .WillOnce(SaveArg<4>(&route_response_callbacks)); |
| 281 |
| 282 const std::string kPresentationUrl("http://url1.fakeUrl"); |
| 283 const std::string kPresentationId("pid"); |
| 284 MockCreatePresentationConnnectionCallbacks mock_create_connection_callbacks; |
| 285 delegate_impl_->JoinSession( |
| 286 render_process_id, routing_id, kPresentationUrl, kPresentationId, |
| 287 base::Bind(&MockCreatePresentationConnnectionCallbacks:: |
| 288 OnCreateConnectionSuccess, |
| 289 base::Unretained(&mock_create_connection_callbacks)), |
| 290 base::Bind( |
| 291 &MockCreatePresentationConnnectionCallbacks::OnCreateConnectionError, |
| 292 base::Unretained(&mock_create_connection_callbacks))); |
| 293 |
| 294 EXPECT_CALL(mock_create_connection_callbacks, OnCreateConnectionSuccess(_)) |
| 295 .Times(1); |
| 296 MediaRoute route("routeId", MediaSourceForPresentationUrl(kPresentationUrl), |
| 297 "mediaSinkId", "description", true, "", true); |
| 298 for (const auto& route_response_callback : route_response_callbacks) |
| 299 route_response_callback.Run(&route, kPresentationId, ""); |
| 300 |
| 301 MockPresentationConnectionStateChangedCallback mock_callback; |
| 302 content::PresentationConnectionStateChangedCallback callback = |
| 303 base::Bind(&MockPresentationConnectionStateChangedCallback::Run, |
| 304 base::Unretained(&mock_callback)); |
| 305 content::PresentationSessionInfo connection(kPresentationUrl, |
| 306 kPresentationId); |
| 307 EXPECT_CALL(router_, OnAddPresentationConnectionStateChangedCallbackInvoked( |
| 308 Equals(callback))); |
| 309 delegate_impl_->ListenForConnectionStateChange(render_process_id, routing_id, |
| 310 connection, callback); |
| 311 } |
| 312 |
| 261 TEST_F(PresentationServiceDelegateImplTest, Reset) { | 313 TEST_F(PresentationServiceDelegateImplTest, Reset) { |
| 262 ON_CALL(router_, RegisterMediaSinksObserver(_)).WillByDefault(Return(true)); | 314 ON_CALL(router_, RegisterMediaSinksObserver(_)).WillByDefault(Return(true)); |
| 263 | 315 |
| 264 std::string presentation_url1("http://url1.fakeUrl"); | 316 std::string presentation_url1("http://url1.fakeUrl"); |
| 265 MediaSource source = MediaSourceForPresentationUrl(presentation_url1); | 317 MediaSource source = MediaSourceForPresentationUrl(presentation_url1); |
| 266 MockScreenAvailabilityListener listener1(presentation_url1); | 318 MockScreenAvailabilityListener listener1(presentation_url1); |
| 267 int render_process_id = 1; | 319 int render_process_id = 1; |
| 268 int render_frame_id = 0; | 320 int render_frame_id = 0; |
| 269 | 321 |
| 270 EXPECT_TRUE(delegate_impl_->AddScreenAvailabilityListener( | 322 EXPECT_TRUE(delegate_impl_->AddScreenAvailabilityListener( |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 302 MockScreenAvailabilityListener listener(presentation_url); | 354 MockScreenAvailabilityListener listener(presentation_url); |
| 303 const int render_process_id = 10; | 355 const int render_process_id = 10; |
| 304 const int render_frame_id = 1; | 356 const int render_frame_id = 1; |
| 305 | 357 |
| 306 EXPECT_CALL(router_, RegisterMediaSinksObserver(_)).Times(1); | 358 EXPECT_CALL(router_, RegisterMediaSinksObserver(_)).Times(1); |
| 307 EXPECT_FALSE(delegate_impl_->AddScreenAvailabilityListener( | 359 EXPECT_FALSE(delegate_impl_->AddScreenAvailabilityListener( |
| 308 render_process_id, render_frame_id, &listener)); | 360 render_process_id, render_frame_id, &listener)); |
| 309 } | 361 } |
| 310 | 362 |
| 311 } // namespace media_router | 363 } // namespace media_router |
| OLD | NEW |