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 |