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 = | |
mark a. foltz
2015/11/18 00:39:38
Consider adding a method to MPCSCC to get the boun
imcheng
2015/11/19 23:39:53
Since it's only used in one place, I would like to
| |
303 base::Bind(&MockPresentationConnectionStateChangedCallback::Run, | |
304 base::Unretained(&mock_callback)); | |
305 content::PresentationSessionInfo connection(kPresentationUrl, | |
306 kPresentationId); | |
307 EXPECT_CALL(router_, OnAddPresentationConnectionStateChangedCallbackInvoked( | |
mark a. foltz
2015/11/18 00:39:38
This is a little confusing, is there a way to set
imcheng
2015/11/19 23:39:53
Not possible at the moment, because the function h
| |
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 |