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

Side by Side Diff: chrome/browser/media/router/presentation_service_delegate_impl_unittest.cc

Issue 2386633003: [Media Router] Convert MediaRouter to use GURL for presentation URLs. (Closed)
Patch Set: Respond to dcheng@ comment Created 4 years, 2 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 "chrome/browser/media/router/presentation_service_delegate_impl.h" 5 #include "chrome/browser/media/router/presentation_service_delegate_impl.h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
9 #include "chrome/browser/media/router/media_source.h" 9 #include "chrome/browser/media/router/media_source.h"
10 #include "chrome/browser/media/router/media_source_helper.h" 10 #include "chrome/browser/media/router/media_source_helper.h"
(...skipping 12 matching lines...) Expand all
23 #include "testing/gmock/include/gmock/gmock.h" 23 #include "testing/gmock/include/gmock/gmock.h"
24 24
25 using ::testing::_; 25 using ::testing::_;
26 using ::testing::Mock; 26 using ::testing::Mock;
27 using ::testing::Return; 27 using ::testing::Return;
28 using ::testing::SaveArg; 28 using ::testing::SaveArg;
29 using ::testing::StrictMock; 29 using ::testing::StrictMock;
30 30
31 namespace { 31 namespace {
32 32
33 const char kPresentationUrl1[] = "http://foo.fakeUrl.com/"; 33 const char kPresentationUrl1[] = "http://foo.fakeurl.com/";
34 const char kPresentationUrl2[] = "http://bar.fakeUrl.com/"; 34 const char kPresentationUrl2[] = "http://bar.fakeurl.com/";
35 const char kFrameUrl[] = "http://anotherFrameUrl.fakeUrl.com/"; 35 const char kFrameUrl[] = "http://anotherframeurl.fakeurl.com/";
36 36
37 } // namespace 37 } // namespace
38 38
39 namespace media_router { 39 namespace media_router {
40 40
41 class MockDelegateObserver 41 class MockDelegateObserver
42 : public content::PresentationServiceDelegate::Observer { 42 : public content::PresentationServiceDelegate::Observer {
43 public: 43 public:
44 MOCK_METHOD0(OnDelegateDestroyed, void()); 44 MOCK_METHOD0(OnDelegateDestroyed, void());
45 MOCK_METHOD1(OnDefaultPresentationStarted, 45 MOCK_METHOD1(OnDefaultPresentationStarted,
(...skipping 12 matching lines...) Expand all
58 public: 58 public:
59 MOCK_METHOD1(OnCreateConnectionSuccess, 59 MOCK_METHOD1(OnCreateConnectionSuccess,
60 void(const content::PresentationSessionInfo& connection)); 60 void(const content::PresentationSessionInfo& connection));
61 MOCK_METHOD1(OnCreateConnectionError, 61 MOCK_METHOD1(OnCreateConnectionError,
62 void(const content::PresentationError& error)); 62 void(const content::PresentationError& error));
63 }; 63 };
64 64
65 class PresentationServiceDelegateImplTest 65 class PresentationServiceDelegateImplTest
66 : public ChromeRenderViewHostTestHarness { 66 : public ChromeRenderViewHostTestHarness {
67 public: 67 public:
68 PresentationServiceDelegateImplTest() : delegate_impl_(nullptr) {} 68 PresentationServiceDelegateImplTest()
69 : delegate_impl_(nullptr),
70 presentation_url1_(kPresentationUrl1),
71 presentation_url2_(kPresentationUrl2) {}
69 72
70 void SetUp() override { 73 void SetUp() override {
71 ChromeRenderViewHostTestHarness::SetUp(); 74 ChromeRenderViewHostTestHarness::SetUp();
72 content::WebContents* wc = GetWebContents(); 75 content::WebContents* wc = GetWebContents();
73 ASSERT_TRUE(wc); 76 ASSERT_TRUE(wc);
74 PresentationServiceDelegateImpl::CreateForWebContents(wc); 77 PresentationServiceDelegateImpl::CreateForWebContents(wc);
75 delegate_impl_ = PresentationServiceDelegateImpl::FromWebContents(wc); 78 delegate_impl_ = PresentationServiceDelegateImpl::FromWebContents(wc);
76 delegate_impl_->SetMediaRouterForTest(&router_); 79 delegate_impl_->SetMediaRouterForTest(&router_);
80 presentation_urls_.push_back(presentation_url1_);
77 } 81 }
78 82
79 MOCK_METHOD1(OnDefaultPresentationStarted, 83 MOCK_METHOD1(OnDefaultPresentationStarted,
80 void(const content::PresentationSessionInfo& session_info)); 84 void(const content::PresentationSessionInfo& session_info));
81 85
82 protected: 86 protected:
83 virtual content::WebContents* GetWebContents() { return web_contents(); } 87 virtual content::WebContents* GetWebContents() { return web_contents(); }
84 88
85 void RunDefaultPresentationUrlCallbackTest(bool incognito) { 89 void RunDefaultPresentationUrlCallbackTest(bool incognito) {
86 content::RenderFrameHost* main_frame = GetWebContents()->GetMainFrame(); 90 content::RenderFrameHost* main_frame = GetWebContents()->GetMainFrame();
87 ASSERT_TRUE(main_frame); 91 ASSERT_TRUE(main_frame);
88 int render_process_id = main_frame->GetProcess()->GetID(); 92 int render_process_id = main_frame->GetProcess()->GetID();
89 int routing_id = main_frame->GetRoutingID(); 93 int routing_id = main_frame->GetRoutingID();
90 94
91 auto callback = base::Bind( 95 auto callback = base::Bind(
92 &PresentationServiceDelegateImplTest::OnDefaultPresentationStarted, 96 &PresentationServiceDelegateImplTest::OnDefaultPresentationStarted,
93 base::Unretained(this)); 97 base::Unretained(this));
94 std::vector<std::string> urls({kPresentationUrl1}); 98 std::vector<std::string> urls({kPresentationUrl1});
95 delegate_impl_->SetDefaultPresentationUrls(render_process_id, routing_id, 99 delegate_impl_->SetDefaultPresentationUrls(render_process_id, routing_id,
96 urls, callback); 100 presentation_urls_, callback);
97 101
98 ASSERT_TRUE(delegate_impl_->HasDefaultPresentationRequest()); 102 ASSERT_TRUE(delegate_impl_->HasDefaultPresentationRequest());
99 PresentationRequest request = 103 PresentationRequest request =
100 delegate_impl_->GetDefaultPresentationRequest(); 104 delegate_impl_->GetDefaultPresentationRequest();
101 105
102 // Should not trigger callback since route response is error. 106 // Should not trigger callback since route response is error.
103 std::unique_ptr<RouteRequestResult> result = RouteRequestResult::FromError( 107 std::unique_ptr<RouteRequestResult> result = RouteRequestResult::FromError(
104 "Error", RouteRequestResult::UNKNOWN_ERROR); 108 "Error", RouteRequestResult::UNKNOWN_ERROR);
105 delegate_impl_->OnRouteResponse(request, *result); 109 delegate_impl_->OnRouteResponse(request, *result);
106 EXPECT_TRUE(Mock::VerifyAndClearExpectations(this)); 110 EXPECT_TRUE(Mock::VerifyAndClearExpectations(this));
107 111
108 // Should not trigger callback since request doesn't match. 112 // Should not trigger callback since request doesn't match.
109 PresentationRequest different_request(RenderFrameHostId(100, 200), 113 PresentationRequest different_request(
110 {kPresentationUrl2}, GURL(kFrameUrl)); 114 RenderFrameHostId(100, 200), {presentation_url2_}, GURL(kFrameUrl));
111 MediaRoute* media_route = new MediaRoute( 115 MediaRoute* media_route = new MediaRoute(
112 "differentRouteId", MediaSourceForPresentationUrl(kPresentationUrl2), 116 "differentRouteId", MediaSourceForPresentationUrl(presentation_url2_),
113 "mediaSinkId", "", true, "", true); 117 "mediaSinkId", "", true, "", true);
114 media_route->set_incognito(incognito); 118 media_route->set_incognito(incognito);
115 result = RouteRequestResult::FromSuccess(base::WrapUnique(media_route), 119 result = RouteRequestResult::FromSuccess(base::WrapUnique(media_route),
116 "differentPresentationId"); 120 "differentPresentationId");
117 delegate_impl_->OnRouteResponse(different_request, *result); 121 delegate_impl_->OnRouteResponse(different_request, *result);
118 EXPECT_TRUE(Mock::VerifyAndClearExpectations(this)); 122 EXPECT_TRUE(Mock::VerifyAndClearExpectations(this));
119 123
120 // Should trigger callback since request matches. 124 // Should trigger callback since request matches.
121 EXPECT_CALL(*this, OnDefaultPresentationStarted(_)).Times(1); 125 EXPECT_CALL(*this, OnDefaultPresentationStarted(_)).Times(1);
122 MediaRoute* media_route2 = new MediaRoute( 126 MediaRoute* media_route2 = new MediaRoute(
123 "routeId", MediaSourceForPresentationUrl(kPresentationUrl1), 127 "routeId", MediaSourceForPresentationUrl(presentation_url1_),
124 "mediaSinkId", "", true, "", true); 128 "mediaSinkId", "", true, "", true);
125 media_route2->set_incognito(incognito); 129 media_route2->set_incognito(incognito);
126 result = RouteRequestResult::FromSuccess(base::WrapUnique(media_route2), 130 result = RouteRequestResult::FromSuccess(base::WrapUnique(media_route2),
127 "presentationId"); 131 "presentationId");
128 delegate_impl_->OnRouteResponse(request, *result); 132 delegate_impl_->OnRouteResponse(request, *result);
129 } 133 }
130 134
131 PresentationServiceDelegateImpl* delegate_impl_; 135 PresentationServiceDelegateImpl* delegate_impl_;
132 MockMediaRouter router_; 136 MockMediaRouter router_;
137 const GURL presentation_url1_;
138 const GURL presentation_url2_;
139 std::vector<GURL> presentation_urls_;
133 }; 140 };
134 141
135 class PresentationServiceDelegateImplIncognitoTest 142 class PresentationServiceDelegateImplIncognitoTest
136 : public PresentationServiceDelegateImplTest { 143 : public PresentationServiceDelegateImplTest {
137 public: 144 public:
138 PresentationServiceDelegateImplIncognitoTest() : 145 PresentationServiceDelegateImplIncognitoTest() :
139 incognito_web_contents_(nullptr) {} 146 incognito_web_contents_(nullptr) {}
140 147
141 protected: 148 protected:
142 content::WebContents* GetWebContents() override { 149 content::WebContents* GetWebContents() override {
(...skipping 11 matching lines...) Expand all
154 // require RenderViewHost, etc., that in turn are deleted by 161 // require RenderViewHost, etc., that in turn are deleted by
155 // RenderViewHostTestHarness::TearDown(). 162 // RenderViewHostTestHarness::TearDown().
156 delete incognito_web_contents_; 163 delete incognito_web_contents_;
157 PresentationServiceDelegateImplTest::TearDown(); 164 PresentationServiceDelegateImplTest::TearDown();
158 } 165 }
159 166
160 content::WebContents* incognito_web_contents_; 167 content::WebContents* incognito_web_contents_;
161 }; 168 };
162 169
163 TEST_F(PresentationServiceDelegateImplTest, AddScreenAvailabilityListener) { 170 TEST_F(PresentationServiceDelegateImplTest, AddScreenAvailabilityListener) {
164 MediaSource source1 = MediaSourceForPresentationUrl(kPresentationUrl1); 171 MediaSource source1 = MediaSourceForPresentationUrl(presentation_url1_);
165 MediaSource source2 = MediaSourceForPresentationUrl(kPresentationUrl2); 172 MediaSource source2 = MediaSourceForPresentationUrl(presentation_url2_);
166 MockScreenAvailabilityListener listener1(kPresentationUrl1); 173 MockScreenAvailabilityListener listener1(presentation_url1_);
167 MockScreenAvailabilityListener listener2(kPresentationUrl2); 174 MockScreenAvailabilityListener listener2(presentation_url2_);
168 content::RenderFrameHost* main_frame = GetWebContents()->GetMainFrame(); 175 content::RenderFrameHost* main_frame = GetWebContents()->GetMainFrame();
169 ASSERT_TRUE(main_frame); 176 ASSERT_TRUE(main_frame);
170 int render_process_id = main_frame->GetProcess()->GetID(); 177 int render_process_id = main_frame->GetProcess()->GetID();
171 int render_frame_id1 = main_frame->GetRoutingID(); 178 int render_frame_id1 = main_frame->GetRoutingID();
172 179
173 // Note that |render_frame_id2| does not correspond to a real frame. As a 180 // Note that |render_frame_id2| does not correspond to a real frame. As a
174 // result, the observer added with have an empty GURL as origin. 181 // result, the observer added with have an empty GURL as origin.
175 int render_frame_id2 = 2; 182 int render_frame_id2 = 2;
176 183
177 EXPECT_CALL(router_, RegisterMediaSinksObserver(_)) 184 EXPECT_CALL(router_, RegisterMediaSinksObserver(_))
(...skipping 17 matching lines...) Expand all
195 render_process_id, render_frame_id2, &listener2); 202 render_process_id, render_frame_id2, &listener2);
196 EXPECT_FALSE(delegate_impl_->HasScreenAvailabilityListenerForTest( 203 EXPECT_FALSE(delegate_impl_->HasScreenAvailabilityListenerForTest(
197 render_process_id, render_frame_id1, source1.id())); 204 render_process_id, render_frame_id1, source1.id()));
198 EXPECT_FALSE(delegate_impl_->HasScreenAvailabilityListenerForTest( 205 EXPECT_FALSE(delegate_impl_->HasScreenAvailabilityListenerForTest(
199 render_process_id, render_frame_id2, source2.id())); 206 render_process_id, render_frame_id2, source2.id()));
200 } 207 }
201 208
202 TEST_F(PresentationServiceDelegateImplTest, AddMultipleListenersToFrame) { 209 TEST_F(PresentationServiceDelegateImplTest, AddMultipleListenersToFrame) {
203 ON_CALL(router_, RegisterMediaSinksObserver(_)).WillByDefault(Return(true)); 210 ON_CALL(router_, RegisterMediaSinksObserver(_)).WillByDefault(Return(true));
204 211
205 MediaSource source1 = MediaSourceForPresentationUrl(kPresentationUrl1); 212 MediaSource source1 = MediaSourceForPresentationUrl(presentation_url1_);
206 MediaSource source2 = MediaSourceForPresentationUrl(kPresentationUrl2); 213 MediaSource source2 = MediaSourceForPresentationUrl(presentation_url2_);
207 MockScreenAvailabilityListener listener1(kPresentationUrl1); 214 MockScreenAvailabilityListener listener1(presentation_url1_);
208 MockScreenAvailabilityListener listener2(kPresentationUrl2); 215 MockScreenAvailabilityListener listener2(presentation_url2_);
209 content::RenderFrameHost* main_frame = GetWebContents()->GetMainFrame(); 216 content::RenderFrameHost* main_frame = GetWebContents()->GetMainFrame();
210 ASSERT_TRUE(main_frame); 217 ASSERT_TRUE(main_frame);
211 int render_process_id = main_frame->GetProcess()->GetID(); 218 int render_process_id = main_frame->GetProcess()->GetID();
212 int render_frame_id = main_frame->GetRoutingID(); 219 int render_frame_id = main_frame->GetRoutingID();
213 220
214 EXPECT_CALL(router_, RegisterMediaSinksObserver(_)).Times(2); 221 EXPECT_CALL(router_, RegisterMediaSinksObserver(_)).Times(2);
215 EXPECT_TRUE(delegate_impl_->AddScreenAvailabilityListener( 222 EXPECT_TRUE(delegate_impl_->AddScreenAvailabilityListener(
216 render_process_id, render_frame_id, &listener1)); 223 render_process_id, render_frame_id, &listener1));
217 EXPECT_TRUE(delegate_impl_->AddScreenAvailabilityListener( 224 EXPECT_TRUE(delegate_impl_->AddScreenAvailabilityListener(
218 render_process_id, render_frame_id, &listener2)); 225 render_process_id, render_frame_id, &listener2));
219 EXPECT_TRUE(delegate_impl_->HasScreenAvailabilityListenerForTest( 226 EXPECT_TRUE(delegate_impl_->HasScreenAvailabilityListenerForTest(
220 render_process_id, render_frame_id, source1.id())) 227 render_process_id, render_frame_id, source1.id()))
221 << "Mapping not found for " << source1.ToString(); 228 << "Mapping not found for " << source1.ToString();
222 EXPECT_TRUE(delegate_impl_->HasScreenAvailabilityListenerForTest( 229 EXPECT_TRUE(delegate_impl_->HasScreenAvailabilityListenerForTest(
223 render_process_id, render_frame_id, source2.id())) 230 render_process_id, render_frame_id, source2.id()))
224 << "Mapping not found for " << source2.ToString(); 231 << "Mapping not found for " << source2.ToString();
225 232
226 EXPECT_CALL(router_, UnregisterMediaSinksObserver(_)).Times(2); 233 EXPECT_CALL(router_, UnregisterMediaSinksObserver(_)).Times(2);
227 delegate_impl_->RemoveScreenAvailabilityListener( 234 delegate_impl_->RemoveScreenAvailabilityListener(
228 render_process_id, render_frame_id, &listener1); 235 render_process_id, render_frame_id, &listener1);
229 delegate_impl_->RemoveScreenAvailabilityListener( 236 delegate_impl_->RemoveScreenAvailabilityListener(
230 render_process_id, render_frame_id, &listener2); 237 render_process_id, render_frame_id, &listener2);
231 EXPECT_FALSE(delegate_impl_->HasScreenAvailabilityListenerForTest( 238 EXPECT_FALSE(delegate_impl_->HasScreenAvailabilityListenerForTest(
232 render_process_id, render_frame_id, source1.id())); 239 render_process_id, render_frame_id, source1.id()));
233 EXPECT_FALSE(delegate_impl_->HasScreenAvailabilityListenerForTest( 240 EXPECT_FALSE(delegate_impl_->HasScreenAvailabilityListenerForTest(
234 render_process_id, render_frame_id, source2.id())); 241 render_process_id, render_frame_id, source2.id()));
235 } 242 }
236 243
237 TEST_F(PresentationServiceDelegateImplTest, AddSameListenerTwice) { 244 TEST_F(PresentationServiceDelegateImplTest, AddSameListenerTwice) {
238 MediaSource source1(MediaSourceForPresentationUrl(kPresentationUrl1)); 245 MediaSource source1(MediaSourceForPresentationUrl(presentation_url1_));
239 MockScreenAvailabilityListener listener1(kPresentationUrl1); 246 MockScreenAvailabilityListener listener1(presentation_url1_);
240 content::RenderFrameHost* main_frame = GetWebContents()->GetMainFrame(); 247 content::RenderFrameHost* main_frame = GetWebContents()->GetMainFrame();
241 ASSERT_TRUE(main_frame); 248 ASSERT_TRUE(main_frame);
242 int render_process_id = main_frame->GetProcess()->GetID(); 249 int render_process_id = main_frame->GetProcess()->GetID();
243 int render_frame_id = main_frame->GetRoutingID(); 250 int render_frame_id = main_frame->GetRoutingID();
244 251
245 EXPECT_CALL(router_, RegisterMediaSinksObserver(_)).WillOnce(Return(true)); 252 EXPECT_CALL(router_, RegisterMediaSinksObserver(_)).WillOnce(Return(true));
246 EXPECT_TRUE(delegate_impl_->AddScreenAvailabilityListener( 253 EXPECT_TRUE(delegate_impl_->AddScreenAvailabilityListener(
247 render_process_id, render_frame_id, &listener1)); 254 render_process_id, render_frame_id, &listener1));
248 EXPECT_FALSE(delegate_impl_->AddScreenAvailabilityListener( 255 EXPECT_FALSE(delegate_impl_->AddScreenAvailabilityListener(
249 render_process_id, render_frame_id, &listener1)); 256 render_process_id, render_frame_id, &listener1));
(...skipping 16 matching lines...) Expand all
266 content::WebContentsTester::For(GetWebContents()) 273 content::WebContentsTester::For(GetWebContents())
267 ->NavigateAndCommit(frame_url); 274 ->NavigateAndCommit(frame_url);
268 content::RenderFrameHost* main_frame = GetWebContents()->GetMainFrame(); 275 content::RenderFrameHost* main_frame = GetWebContents()->GetMainFrame();
269 ASSERT_TRUE(main_frame); 276 ASSERT_TRUE(main_frame);
270 int render_process_id = main_frame->GetProcess()->GetID(); 277 int render_process_id = main_frame->GetProcess()->GetID();
271 int routing_id = main_frame->GetRoutingID(); 278 int routing_id = main_frame->GetRoutingID();
272 279
273 auto callback = base::Bind( 280 auto callback = base::Bind(
274 &PresentationServiceDelegateImplTest::OnDefaultPresentationStarted, 281 &PresentationServiceDelegateImplTest::OnDefaultPresentationStarted,
275 base::Unretained(this)); 282 base::Unretained(this));
276 std::vector<std::string> urls({kPresentationUrl1});
277 delegate_impl_->SetDefaultPresentationUrls(render_process_id, routing_id, 283 delegate_impl_->SetDefaultPresentationUrls(render_process_id, routing_id,
278 urls, callback); 284 presentation_urls_, callback);
279 ASSERT_TRUE(delegate_impl_->HasDefaultPresentationRequest()); 285 ASSERT_TRUE(delegate_impl_->HasDefaultPresentationRequest());
280 PresentationRequest request1 = 286 PresentationRequest request1 =
281 delegate_impl_->GetDefaultPresentationRequest(); 287 delegate_impl_->GetDefaultPresentationRequest();
282 EXPECT_EQ(kPresentationUrl1, request1.presentation_url()); 288 EXPECT_EQ(presentation_url1_, request1.presentation_url());
283 EXPECT_EQ(RenderFrameHostId(render_process_id, routing_id), 289 EXPECT_EQ(RenderFrameHostId(render_process_id, routing_id),
284 request1.render_frame_host_id()); 290 request1.render_frame_host_id());
285 EXPECT_EQ(frame_url, request1.frame_url()); 291 EXPECT_EQ(frame_url, request1.frame_url());
286 292
287 // Set to a new default presentation URL 293 // Set to a new default presentation URL
288 std::vector<std::string> new_urls({kPresentationUrl2}); 294 std::vector<GURL> new_urls = {presentation_url2_};
289 delegate_impl_->SetDefaultPresentationUrls(render_process_id, routing_id, 295 delegate_impl_->SetDefaultPresentationUrls(render_process_id, routing_id,
290 new_urls, callback); 296 new_urls, callback);
291 ASSERT_TRUE(delegate_impl_->HasDefaultPresentationRequest()); 297 ASSERT_TRUE(delegate_impl_->HasDefaultPresentationRequest());
292 PresentationRequest request2 = 298 PresentationRequest request2 =
293 delegate_impl_->GetDefaultPresentationRequest(); 299 delegate_impl_->GetDefaultPresentationRequest();
294 EXPECT_EQ(kPresentationUrl2, request2.presentation_url()); 300 EXPECT_EQ(presentation_url2_, request2.presentation_url());
295 EXPECT_EQ(RenderFrameHostId(render_process_id, routing_id), 301 EXPECT_EQ(RenderFrameHostId(render_process_id, routing_id),
296 request2.render_frame_host_id()); 302 request2.render_frame_host_id());
297 EXPECT_EQ(frame_url, request2.frame_url()); 303 EXPECT_EQ(frame_url, request2.frame_url());
298 304
299 // Remove default presentation URL. 305 // Remove default presentation URL.
300 delegate_impl_->SetDefaultPresentationUrls( 306 delegate_impl_->SetDefaultPresentationUrls(render_process_id, routing_id,
301 render_process_id, routing_id, std::vector<std::string>(), callback); 307 std::vector<GURL>(), callback);
302 EXPECT_FALSE(delegate_impl_->HasDefaultPresentationRequest()); 308 EXPECT_FALSE(delegate_impl_->HasDefaultPresentationRequest());
303 } 309 }
304 310
305 TEST_F(PresentationServiceDelegateImplTest, DefaultPresentationUrlCallback) { 311 TEST_F(PresentationServiceDelegateImplTest, DefaultPresentationUrlCallback) {
306 RunDefaultPresentationUrlCallbackTest(false); 312 RunDefaultPresentationUrlCallbackTest(false);
307 } 313 }
308 314
309 TEST_F(PresentationServiceDelegateImplIncognitoTest, 315 TEST_F(PresentationServiceDelegateImplIncognitoTest,
310 DefaultPresentationUrlCallback) { 316 DefaultPresentationUrlCallback) {
311 RunDefaultPresentationUrlCallbackTest(true); 317 RunDefaultPresentationUrlCallbackTest(true);
312 } 318 }
313 319
314 TEST_F(PresentationServiceDelegateImplTest, 320 TEST_F(PresentationServiceDelegateImplTest,
315 DefaultPresentationRequestObserver) { 321 DefaultPresentationRequestObserver) {
316 auto callback = base::Bind( 322 auto callback = base::Bind(
317 &PresentationServiceDelegateImplTest::OnDefaultPresentationStarted, 323 &PresentationServiceDelegateImplTest::OnDefaultPresentationStarted,
318 base::Unretained(this)); 324 base::Unretained(this));
319 325
320 StrictMock<MockDefaultPresentationRequestObserver> observer; 326 StrictMock<MockDefaultPresentationRequestObserver> observer;
321 delegate_impl_->AddDefaultPresentationRequestObserver(&observer); 327 delegate_impl_->AddDefaultPresentationRequestObserver(&observer);
322 328
323 GURL frame_url(kFrameUrl); 329 GURL frame_url(kFrameUrl);
324 content::WebContentsTester::For(GetWebContents()) 330 content::WebContentsTester::For(GetWebContents())
325 ->NavigateAndCommit(frame_url); 331 ->NavigateAndCommit(frame_url);
326 content::RenderFrameHost* main_frame = GetWebContents()->GetMainFrame(); 332 content::RenderFrameHost* main_frame = GetWebContents()->GetMainFrame();
327 ASSERT_TRUE(main_frame); 333 ASSERT_TRUE(main_frame);
328 int render_process_id = main_frame->GetProcess()->GetID(); 334 int render_process_id = main_frame->GetProcess()->GetID();
329 int routing_id = main_frame->GetRoutingID(); 335 int routing_id = main_frame->GetRoutingID();
330 336
337 std::vector<GURL> request1_urls = {presentation_url1_};
331 PresentationRequest observed_request1( 338 PresentationRequest observed_request1(
332 RenderFrameHostId(render_process_id, routing_id), {kPresentationUrl1}, 339 RenderFrameHostId(render_process_id, routing_id), request1_urls,
333 frame_url); 340 frame_url);
334 EXPECT_CALL(observer, OnDefaultPresentationChanged(Equals(observed_request1))) 341 EXPECT_CALL(observer, OnDefaultPresentationChanged(Equals(observed_request1)))
335 .Times(1); 342 .Times(1);
336 std::vector<std::string> request1_urls({kPresentationUrl1});
337 delegate_impl_->SetDefaultPresentationUrls(render_process_id, routing_id, 343 delegate_impl_->SetDefaultPresentationUrls(render_process_id, routing_id,
338 request1_urls, callback); 344 request1_urls, callback);
339 345
340 ASSERT_TRUE(delegate_impl_->HasDefaultPresentationRequest()); 346 ASSERT_TRUE(delegate_impl_->HasDefaultPresentationRequest());
341 PresentationRequest request1 = 347 PresentationRequest request1 =
342 delegate_impl_->GetDefaultPresentationRequest(); 348 delegate_impl_->GetDefaultPresentationRequest();
343 EXPECT_TRUE(request1.Equals(observed_request1)); 349 EXPECT_TRUE(request1.Equals(observed_request1));
344 350
345 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer)); 351 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer));
346 352
353 std::vector<GURL> request2_urls = {presentation_url2_};
347 PresentationRequest observed_request2( 354 PresentationRequest observed_request2(
348 RenderFrameHostId(render_process_id, routing_id), {kPresentationUrl2}, 355 RenderFrameHostId(render_process_id, routing_id), request2_urls,
349 frame_url); 356 frame_url);
350 EXPECT_CALL(observer, OnDefaultPresentationChanged(Equals(observed_request2))) 357 EXPECT_CALL(observer, OnDefaultPresentationChanged(Equals(observed_request2)))
351 .Times(1); 358 .Times(1);
352 std::vector<std::string> request2_urls({kPresentationUrl2});
353 delegate_impl_->SetDefaultPresentationUrls(render_process_id, routing_id, 359 delegate_impl_->SetDefaultPresentationUrls(render_process_id, routing_id,
354 request2_urls, callback); 360 request2_urls, callback);
355 ASSERT_TRUE(delegate_impl_->HasDefaultPresentationRequest()); 361 ASSERT_TRUE(delegate_impl_->HasDefaultPresentationRequest());
356 PresentationRequest request2 = 362 PresentationRequest request2 =
357 delegate_impl_->GetDefaultPresentationRequest(); 363 delegate_impl_->GetDefaultPresentationRequest();
358 EXPECT_TRUE(request2.Equals(observed_request2)); 364 EXPECT_TRUE(request2.Equals(observed_request2));
359 365
360 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer)); 366 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer));
361 367
362 // Remove default presentation URL. 368 // Remove default presentation URL.
363 EXPECT_CALL(observer, OnDefaultPresentationRemoved()).Times(1); 369 EXPECT_CALL(observer, OnDefaultPresentationRemoved()).Times(1);
364 delegate_impl_->SetDefaultPresentationUrls( 370 delegate_impl_->SetDefaultPresentationUrls(render_process_id, routing_id,
365 render_process_id, routing_id, std::vector<std::string>(), callback); 371 std::vector<GURL>(), callback);
366 } 372 }
367 373
368 TEST_F(PresentationServiceDelegateImplTest, ListenForConnnectionStateChange) { 374 TEST_F(PresentationServiceDelegateImplTest, ListenForConnnectionStateChange) {
369 GURL frame_url(kFrameUrl); 375 GURL frame_url(kFrameUrl);
370 content::WebContentsTester::For(GetWebContents()) 376 content::WebContentsTester::For(GetWebContents())
371 ->NavigateAndCommit(frame_url); 377 ->NavigateAndCommit(frame_url);
372 content::RenderFrameHost* main_frame = GetWebContents()->GetMainFrame(); 378 content::RenderFrameHost* main_frame = GetWebContents()->GetMainFrame();
373 ASSERT_TRUE(main_frame); 379 ASSERT_TRUE(main_frame);
374 int render_process_id = main_frame->GetProcess()->GetID(); 380 int render_process_id = main_frame->GetProcess()->GetID();
375 int routing_id = main_frame->GetRoutingID(); 381 int routing_id = main_frame->GetRoutingID();
376 382
377 // Set up a PresentationConnection so we can listen to it. 383 // Set up a PresentationConnection so we can listen to it.
378 std::vector<MediaRouteResponseCallback> route_response_callbacks; 384 std::vector<MediaRouteResponseCallback> route_response_callbacks;
379 EXPECT_CALL(router_, JoinRoute(_, _, _, _, _, _, false)) 385 EXPECT_CALL(router_, JoinRoute(_, _, _, _, _, _, false))
380 .WillOnce(SaveArg<4>(&route_response_callbacks)); 386 .WillOnce(SaveArg<4>(&route_response_callbacks));
381 387
382 const std::string kPresentationId("pid"); 388 const std::string kPresentationId("pid");
383 std::vector<std::string> join_urls({kPresentationUrl1});
384 MockCreatePresentationConnnectionCallbacks mock_create_connection_callbacks; 389 MockCreatePresentationConnnectionCallbacks mock_create_connection_callbacks;
385 delegate_impl_->JoinSession( 390 delegate_impl_->JoinSession(
386 render_process_id, routing_id, join_urls, kPresentationId, 391 render_process_id, routing_id, presentation_urls_, kPresentationId,
387 base::Bind(&MockCreatePresentationConnnectionCallbacks:: 392 base::Bind(&MockCreatePresentationConnnectionCallbacks::
388 OnCreateConnectionSuccess, 393 OnCreateConnectionSuccess,
389 base::Unretained(&mock_create_connection_callbacks)), 394 base::Unretained(&mock_create_connection_callbacks)),
390 base::Bind( 395 base::Bind(
391 &MockCreatePresentationConnnectionCallbacks::OnCreateConnectionError, 396 &MockCreatePresentationConnnectionCallbacks::OnCreateConnectionError,
392 base::Unretained(&mock_create_connection_callbacks))); 397 base::Unretained(&mock_create_connection_callbacks)));
393 398
394 EXPECT_CALL(mock_create_connection_callbacks, OnCreateConnectionSuccess(_)) 399 EXPECT_CALL(mock_create_connection_callbacks, OnCreateConnectionSuccess(_))
395 .Times(1); 400 .Times(1);
396 std::unique_ptr<RouteRequestResult> result = RouteRequestResult::FromSuccess( 401 std::unique_ptr<RouteRequestResult> result = RouteRequestResult::FromSuccess(
397 base::MakeUnique<MediaRoute>( 402 base::MakeUnique<MediaRoute>(
398 "routeId", MediaSourceForPresentationUrl(kPresentationUrl1), 403 "routeId", MediaSourceForPresentationUrl(presentation_url1_),
399 "mediaSinkId", "description", true, "", true), 404 "mediaSinkId", "description", true, "", true),
400 kPresentationId); 405 kPresentationId);
401 for (const auto& route_response_callback : route_response_callbacks) 406 for (const auto& route_response_callback : route_response_callbacks)
402 route_response_callback.Run(*result); 407 route_response_callback.Run(*result);
403 408
404 MockPresentationConnectionStateChangedCallback mock_callback; 409 MockPresentationConnectionStateChangedCallback mock_callback;
405 content::PresentationConnectionStateChangedCallback callback = 410 content::PresentationConnectionStateChangedCallback callback =
406 base::Bind(&MockPresentationConnectionStateChangedCallback::Run, 411 base::Bind(&MockPresentationConnectionStateChangedCallback::Run,
407 base::Unretained(&mock_callback)); 412 base::Unretained(&mock_callback));
408 content::PresentationSessionInfo connection(kPresentationUrl1, 413 content::PresentationSessionInfo connection(presentation_url1_,
409 kPresentationId); 414 kPresentationId);
410 EXPECT_CALL(router_, OnAddPresentationConnectionStateChangedCallbackInvoked( 415 EXPECT_CALL(router_, OnAddPresentationConnectionStateChangedCallbackInvoked(
411 Equals(callback))); 416 Equals(callback)));
412 delegate_impl_->ListenForConnectionStateChange(render_process_id, routing_id, 417 delegate_impl_->ListenForConnectionStateChange(render_process_id, routing_id,
413 connection, callback); 418 connection, callback);
414 } 419 }
415 420
416 TEST_F(PresentationServiceDelegateImplTest, Reset) { 421 TEST_F(PresentationServiceDelegateImplTest, Reset) {
417 EXPECT_CALL(router_, RegisterMediaSinksObserver(_)) 422 EXPECT_CALL(router_, RegisterMediaSinksObserver(_))
418 .WillRepeatedly(Return(true)); 423 .WillRepeatedly(Return(true));
419 424
420 MediaSource source = MediaSourceForPresentationUrl(kPresentationUrl1); 425 MediaSource source = MediaSourceForPresentationUrl(presentation_url1_);
421 MockScreenAvailabilityListener listener1(kPresentationUrl1); 426 MockScreenAvailabilityListener listener1(presentation_url1_);
422 427
423 content::RenderFrameHost* main_frame = GetWebContents()->GetMainFrame(); 428 content::RenderFrameHost* main_frame = GetWebContents()->GetMainFrame();
424 ASSERT_TRUE(main_frame); 429 ASSERT_TRUE(main_frame);
425 int render_process_id = main_frame->GetProcess()->GetID(); 430 int render_process_id = main_frame->GetProcess()->GetID();
426 int render_frame_id = main_frame->GetRoutingID(); 431 int render_frame_id = main_frame->GetRoutingID();
427 432
428 EXPECT_TRUE(delegate_impl_->AddScreenAvailabilityListener( 433 EXPECT_TRUE(delegate_impl_->AddScreenAvailabilityListener(
429 render_process_id, render_frame_id, &listener1)); 434 render_process_id, render_frame_id, &listener1));
430 EXPECT_TRUE(delegate_impl_->HasScreenAvailabilityListenerForTest( 435 EXPECT_TRUE(delegate_impl_->HasScreenAvailabilityListenerForTest(
431 render_process_id, render_frame_id, source.id())); 436 render_process_id, render_frame_id, source.id()));
(...skipping 15 matching lines...) Expand all
447 manager->AddObserver(345, 456, &delegate_observer2); 452 manager->AddObserver(345, 456, &delegate_observer2);
448 453
449 // Removes |delegate_observer2|. 454 // Removes |delegate_observer2|.
450 manager->RemoveObserver(345, 456); 455 manager->RemoveObserver(345, 456);
451 456
452 EXPECT_CALL(delegate_observer1, OnDelegateDestroyed()).Times(1); 457 EXPECT_CALL(delegate_observer1, OnDelegateDestroyed()).Times(1);
453 manager.reset(); 458 manager.reset();
454 } 459 }
455 460
456 TEST_F(PresentationServiceDelegateImplTest, SinksObserverCantRegister) { 461 TEST_F(PresentationServiceDelegateImplTest, SinksObserverCantRegister) {
457 MockScreenAvailabilityListener listener(kPresentationUrl1); 462 MockScreenAvailabilityListener listener(presentation_url1_);
458 content::RenderFrameHost* main_frame = GetWebContents()->GetMainFrame(); 463 content::RenderFrameHost* main_frame = GetWebContents()->GetMainFrame();
459 ASSERT_TRUE(main_frame); 464 ASSERT_TRUE(main_frame);
460 int render_process_id = main_frame->GetProcess()->GetID(); 465 int render_process_id = main_frame->GetProcess()->GetID();
461 int render_frame_id = main_frame->GetRoutingID(); 466 int render_frame_id = main_frame->GetRoutingID();
462 467
463 EXPECT_CALL(router_, RegisterMediaSinksObserver(_)).WillOnce(Return(false)); 468 EXPECT_CALL(router_, RegisterMediaSinksObserver(_)).WillOnce(Return(false));
464 EXPECT_CALL(listener, OnScreenAvailabilityNotSupported()); 469 EXPECT_CALL(listener, OnScreenAvailabilityNotSupported());
465 EXPECT_FALSE(delegate_impl_->AddScreenAvailabilityListener( 470 EXPECT_FALSE(delegate_impl_->AddScreenAvailabilityListener(
466 render_process_id, render_frame_id, &listener)); 471 render_process_id, render_frame_id, &listener));
467 } 472 }
468 473
469 } // namespace media_router 474 } // namespace media_router
OLDNEW
« no previous file with comments | « chrome/browser/media/router/presentation_service_delegate_impl.cc ('k') | chrome/browser/media/router/test_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698