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

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

Issue 1415103006: Non-Local Join for Media Router and Presentation API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review Fixes 2 Created 5 years 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 <string> 5 #include <string>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 namespace { 46 namespace {
47 47
48 const char kDescription[] = "description"; 48 const char kDescription[] = "description";
49 const char kError[] = "error"; 49 const char kError[] = "error";
50 const char kExtensionId[] = "extension1234"; 50 const char kExtensionId[] = "extension1234";
51 const char kMessage[] = "message"; 51 const char kMessage[] = "message";
52 const char kSource[] = "source1"; 52 const char kSource[] = "source1";
53 const char kSource2[] = "source2"; 53 const char kSource2[] = "source2";
54 const char kRouteId[] = "routeId"; 54 const char kRouteId[] = "routeId";
55 const char kRouteId2[] = "routeId2"; 55 const char kRouteId2[] = "routeId2";
56 const char kJoinableRouteId[] = "joinableRouteId";
57 const char kJoinableRouteId2[] = "joinableRouteId2";
56 const char kSinkId[] = "sink"; 58 const char kSinkId[] = "sink";
57 const char kSinkId2[] = "sink2"; 59 const char kSinkId2[] = "sink2";
58 const char kSinkName[] = "sinkName"; 60 const char kSinkName[] = "sinkName";
59 const char kPresentationId[] = "presentationId"; 61 const char kPresentationId[] = "presentationId";
60 const char kOrigin[] = "http://origin/"; 62 const char kOrigin[] = "http://origin/";
61 const int kInvalidTabId = -1; 63 const int kInvalidTabId = -1;
62 const uint8 kBinaryMessage[] = {0x01, 0x02, 0x03, 0x04}; 64 const uint8 kBinaryMessage[] = {0x01, 0x02, 0x03, 0x04};
63 65
64 bool ArePresentationSessionMessagesEqual( 66 bool ArePresentationSessionMessagesEqual(
65 const content::PresentationSessionMessage* expected, 67 const content::PresentationSessionMessage* expected,
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 DISALLOW_COPY_AND_ASSIGN(TestProcessManager); 165 DISALLOW_COPY_AND_ASSIGN(TestProcessManager);
164 }; 166 };
165 167
166 // Mockable class for awaiting RegisterMediaRouteProvider callbacks. 168 // Mockable class for awaiting RegisterMediaRouteProvider callbacks.
167 class RegisterMediaRouteProviderHandler { 169 class RegisterMediaRouteProviderHandler {
168 public: 170 public:
169 MOCK_METHOD1(Invoke, void(const std::string& instance_id)); 171 MOCK_METHOD1(Invoke, void(const std::string& instance_id));
170 }; 172 };
171 173
172 TEST_F(MediaRouterMojoImplTest, CreateRoute) { 174 TEST_F(MediaRouterMojoImplTest, CreateRoute) {
173 MediaRoute expected_route(kRouteId, MediaSource(std::string(kSource)), 175 MediaSource media_source(kSource);
176 MediaRoute expected_route(kRouteId, media_source,
174 kSinkId, "", false, "", false); 177 kSinkId, "", false, "", false);
175 interfaces::MediaRoutePtr route = interfaces::MediaRoute::New(); 178 interfaces::MediaRoutePtr route = interfaces::MediaRoute::New();
176 route->media_source = kSource; 179 route->media_source = kSource;
177 route->media_sink_id = kSinkId; 180 route->media_sink_id = kSinkId;
178 route->media_route_id = kRouteId; 181 route->media_route_id = kRouteId;
179 route->description = kDescription; 182 route->description = kDescription;
180 route->is_local = true; 183 route->is_local = true;
181 route->for_display = true; 184 route->for_display = true;
182 185
183 // Use a lambda function as an invocation target here to work around 186 // Use a lambda function as an invocation target here to work around
184 // a limitation with GMock::Invoke that prevents it from using move-only types 187 // a limitation with GMock::Invoke that prevents it from using move-only types
185 // in runnable parameter lists. 188 // in runnable parameter lists.
186 EXPECT_CALL(mock_media_route_provider_, 189 EXPECT_CALL(mock_media_route_provider_,
187 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _, 190 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _,
188 mojo::String(kOrigin), kInvalidTabId, _)) 191 mojo::String(kOrigin), kInvalidTabId, _))
189 .WillOnce(Invoke([&route]( 192 .WillOnce(Invoke([&route](
190 const mojo::String& source, const mojo::String& sink, 193 const mojo::String& source, const mojo::String& sink,
191 const mojo::String& presentation_id, const mojo::String& origin, 194 const mojo::String& presentation_id, const mojo::String& origin,
192 int tab_id, 195 int tab_id,
193 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) { 196 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) {
194 cb.Run(route.Pass(), mojo::String()); 197 cb.Run(route.Pass(), mojo::String());
195 })); 198 }));
196
197 // MediaRouterMojoImpl will start observing local displayable routes as a 199 // MediaRouterMojoImpl will start observing local displayable routes as a
198 // result of having one created. 200 // result of having one created.
199 EXPECT_CALL(mock_media_route_provider_, StartObservingMediaRoutes()); 201 EXPECT_CALL(mock_media_route_provider_,
202 StartObservingMediaRoutes(mojo::String("")));
200 203
201 RouteResponseCallbackHandler handler; 204 RouteResponseCallbackHandler handler;
202 EXPECT_CALL(handler, Invoke(Pointee(Equals(expected_route)), Not(""), "")); 205 EXPECT_CALL(handler, Invoke(Pointee(Equals(expected_route)), Not(""), ""));
203 std::vector<MediaRouteResponseCallback> route_response_callbacks; 206 std::vector<MediaRouteResponseCallback> route_response_callbacks;
204 route_response_callbacks.push_back(base::Bind( 207 route_response_callbacks.push_back(base::Bind(
205 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); 208 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
206 router()->CreateRoute(kSource, kSinkId, GURL(kOrigin), nullptr, 209 router()->CreateRoute(kSource, kSinkId, GURL(kOrigin), nullptr,
207 route_response_callbacks); 210 route_response_callbacks);
208 ProcessEventLoop(); 211 ProcessEventLoop();
209 } 212 }
(...skipping 14 matching lines...) Expand all
224 EXPECT_CALL(handler, Invoke(nullptr, "", kError)); 227 EXPECT_CALL(handler, Invoke(nullptr, "", kError));
225 std::vector<MediaRouteResponseCallback> route_response_callbacks; 228 std::vector<MediaRouteResponseCallback> route_response_callbacks;
226 route_response_callbacks.push_back(base::Bind( 229 route_response_callbacks.push_back(base::Bind(
227 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); 230 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
228 router()->CreateRoute(kSource, kSinkId, GURL(kOrigin), nullptr, 231 router()->CreateRoute(kSource, kSinkId, GURL(kOrigin), nullptr,
229 route_response_callbacks); 232 route_response_callbacks);
230 ProcessEventLoop(); 233 ProcessEventLoop();
231 } 234 }
232 235
233 TEST_F(MediaRouterMojoImplTest, JoinRoute) { 236 TEST_F(MediaRouterMojoImplTest, JoinRoute) {
234 MediaRoute expected_route(kRouteId, MediaSource(std::string(kSource)), 237 MediaSource media_source(kSource);
238 MediaRoute expected_route(kRouteId, media_source,
235 kSinkId, "", false, "", false); 239 kSinkId, "", false, "", false);
236 interfaces::MediaRoutePtr route = interfaces::MediaRoute::New(); 240 interfaces::MediaRoutePtr route = interfaces::MediaRoute::New();
237 route->media_source = kSource; 241 route->media_source = kSource;
238 route->media_sink_id = kSinkId; 242 route->media_sink_id = kSinkId;
239 route->media_route_id = kRouteId; 243 route->media_route_id = kRouteId;
240 route->description = kDescription; 244 route->description = kDescription;
241 route->is_local = true; 245 route->is_local = true;
242 route->for_display = true; 246 route->for_display = true;
243 247
244 // Use a lambda function as an invocation target here to work around 248 // Use a lambda function as an invocation target here to work around
245 // a limitation with GMock::Invoke that prevents it from using move-only types 249 // a limitation with GMock::Invoke that prevents it from using move-only types
246 // in runnable parameter lists. 250 // in runnable parameter lists.
247 EXPECT_CALL(mock_media_route_provider_, 251 EXPECT_CALL(mock_media_route_provider_,
248 JoinRoute(mojo::String(kSource), mojo::String(kPresentationId), 252 JoinRoute(mojo::String(kSource), mojo::String(kPresentationId),
249 mojo::String(kOrigin), kInvalidTabId, _)) 253 mojo::String(kOrigin), kInvalidTabId, _))
250 .WillOnce(Invoke([&route]( 254 .WillOnce(Invoke([&route](
251 const mojo::String& source, const mojo::String& presentation_id, 255 const mojo::String& source, const mojo::String& presentation_id,
252 const mojo::String& origin, int tab_id, 256 const mojo::String& origin, int tab_id,
253 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) { 257 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) {
254 cb.Run(route.Pass(), mojo::String()); 258 cb.Run(route.Pass(), mojo::String());
255 })); 259 }));
256 260
257 // MediaRouterMojoImpl will start observing local displayable routes as a 261 // MediaRouterMojoImpl will start observing local displayable routes as a
258 // result of having one created. 262 // result of having one created.
259 EXPECT_CALL(mock_media_route_provider_, StartObservingMediaRoutes()); 263 EXPECT_CALL(mock_media_route_provider_,
264 StartObservingMediaRoutes(mojo::String("")));
260 265
261 RouteResponseCallbackHandler handler; 266 RouteResponseCallbackHandler handler;
262 EXPECT_CALL(handler, Invoke(Pointee(Equals(expected_route)), Not(""), "")); 267 EXPECT_CALL(handler, Invoke(Pointee(Equals(expected_route)), Not(""), ""));
263 std::vector<MediaRouteResponseCallback> route_response_callbacks; 268 std::vector<MediaRouteResponseCallback> route_response_callbacks;
264 route_response_callbacks.push_back(base::Bind( 269 route_response_callbacks.push_back(base::Bind(
265 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); 270 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
266 router()->JoinRoute(kSource, kPresentationId, GURL(kOrigin), nullptr, 271 router()->JoinRoute(kSource, kPresentationId, GURL(kOrigin), nullptr,
267 route_response_callbacks); 272 route_response_callbacks);
268 ProcessEventLoop(); 273 ProcessEventLoop();
269 } 274 }
(...skipping 12 matching lines...) Expand all
282 RouteResponseCallbackHandler handler; 287 RouteResponseCallbackHandler handler;
283 EXPECT_CALL(handler, Invoke(nullptr, "", kError)); 288 EXPECT_CALL(handler, Invoke(nullptr, "", kError));
284 std::vector<MediaRouteResponseCallback> route_response_callbacks; 289 std::vector<MediaRouteResponseCallback> route_response_callbacks;
285 route_response_callbacks.push_back(base::Bind( 290 route_response_callbacks.push_back(base::Bind(
286 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); 291 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
287 router()->JoinRoute(kSource, kPresentationId, GURL(kOrigin), nullptr, 292 router()->JoinRoute(kSource, kPresentationId, GURL(kOrigin), nullptr,
288 route_response_callbacks); 293 route_response_callbacks);
289 ProcessEventLoop(); 294 ProcessEventLoop();
290 } 295 }
291 296
297 TEST_F(MediaRouterMojoImplTest, JoinRouteByRouteId) {
298 MediaSource media_source(kSource);
299 MediaRoute expected_route(kRouteId, media_source,
300 kSinkId, "", false, "", false);
301 interfaces::MediaRoutePtr route = interfaces::MediaRoute::New();
302 route->media_source = kSource;
303 route->media_sink_id = kSinkId;
304 route->media_route_id = kRouteId;
305 route->description = kDescription;
306 route->is_local = true;
307 route->for_display = true;
308
309 std::string expected_presentation_id("non-local-join_");
310 expected_presentation_id += kRouteId;
311 // Use a lambda function as an invocation target here to work around
312 // a limitation with GMock::Invoke that prevents it from using move-only types
313 // in runnable parameter lists.
314 EXPECT_CALL(mock_media_route_provider_,
315 JoinRoute(mojo::String(kSource),
316 mojo::String(expected_presentation_id),
317 mojo::String(kOrigin), kInvalidTabId, _))
318 .WillOnce(Invoke([&route](
319 const mojo::String& source, const mojo::String& presentation_id,
320 const mojo::String& origin, int tab_id,
321 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) {
322 cb.Run(route.Pass(), mojo::String());
323 }));
324 EXPECT_CALL(mock_media_route_provider_,
325 StartObservingMediaRoutes(mojo::String("")));
mark a. foltz 2015/12/09 00:48:17 Shouldn't a real media source be passed to StartOb
matt.boetger 2015/12/15 19:21:20 No, because this StartObservingMediaRoutes comes f
326
327 RouteResponseCallbackHandler handler;
328 EXPECT_CALL(handler, Invoke(Pointee(Equals(expected_route)), Not(""), ""));
329 std::vector<MediaRouteResponseCallback> route_response_callbacks;
330 route_response_callbacks.push_back(base::Bind(
331 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
332 router()->JoinRouteByRouteId(kSource, kRouteId, GURL(kOrigin), nullptr,
333 route_response_callbacks);
334 ProcessEventLoop();
335 }
336
337 TEST_F(MediaRouterMojoImplTest, JoinRouteByRouteIdFails) {
338 std::string expected_presentation_id("non-local-join_");
339 expected_presentation_id += kRouteId;
340 EXPECT_CALL(mock_media_route_provider_,
341 JoinRoute(mojo::String(kSource),
342 mojo::String(expected_presentation_id),
343 mojo::String(kOrigin), kInvalidTabId, _))
344 .WillOnce(Invoke(
345 [](const mojo::String& source, const mojo::String& presentation_id,
346 const mojo::String& origin, int tab_id,
347 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) {
348 cb.Run(interfaces::MediaRoutePtr(), mojo::String(kError));
349 }));
350
351 RouteResponseCallbackHandler handler;
352 EXPECT_CALL(handler, Invoke(nullptr, "", kError));
353 std::vector<MediaRouteResponseCallback> route_response_callbacks;
354 route_response_callbacks.push_back(base::Bind(
355 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
356 router()->JoinRouteByRouteId(kSource, kRouteId, GURL(kOrigin), nullptr,
357 route_response_callbacks);
358 ProcessEventLoop();
359 }
360
292 TEST_F(MediaRouterMojoImplTest, CloseRoute) { 361 TEST_F(MediaRouterMojoImplTest, CloseRoute) {
293 EXPECT_CALL(mock_media_route_provider_, CloseRoute(mojo::String(kRouteId))); 362 EXPECT_CALL(mock_media_route_provider_, CloseRoute(mojo::String(kRouteId)));
294 router()->CloseRoute(kRouteId); 363 router()->CloseRoute(kRouteId);
295 ProcessEventLoop(); 364 ProcessEventLoop();
296 } 365 }
297 366
298 TEST_F(MediaRouterMojoImplTest, HandleIssue) { 367 TEST_F(MediaRouterMojoImplTest, HandleIssue) {
299 MockIssuesObserver issue_observer1(router()); 368 MockIssuesObserver issue_observer1(router());
300 MockIssuesObserver issue_observer2(router()); 369 MockIssuesObserver issue_observer2(router());
301 issue_observer1.RegisterObserver(); 370 issue_observer1.RegisterObserver();
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 EXPECT_CALL(mock_media_route_provider_, 561 EXPECT_CALL(mock_media_route_provider_,
493 StopObservingMediaSinks(mojo::String(kSource2))) 562 StopObservingMediaSinks(mojo::String(kSource2)))
494 .Times(1); 563 .Times(1);
495 sinks_observer.reset(); // Unregisters kSource from router(). 564 sinks_observer.reset(); // Unregisters kSource from router().
496 sinks_observer2.reset(); // Unregisters kSource2 from router(). 565 sinks_observer2.reset(); // Unregisters kSource2 from router().
497 ProcessEventLoop(); 566 ProcessEventLoop();
498 } 567 }
499 568
500 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaRoutesObserver) { 569 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaRoutesObserver) {
501 MockMediaRouter mock_router; 570 MockMediaRouter mock_router;
502 EXPECT_CALL(mock_media_route_provider_, StartObservingMediaRoutes()).Times(2); 571 MediaSource media_source(kSource);
572 MediaSource different_media_source(kSource2);
573 EXPECT_CALL(mock_media_route_provider_,
574 StartObservingMediaRoutes(mojo::String(media_source.id()))).Times(2);
575 EXPECT_CALL(mock_media_route_provider_,
576 StartObservingMediaRoutes(
577 mojo::String(different_media_source.id()))).Times(1);
503 578
504 MediaRoutesObserver* observer_captured; 579 MediaRoutesObserver* observer_captured;
505 EXPECT_CALL(mock_router, RegisterMediaRoutesObserver(_)) 580 EXPECT_CALL(mock_router, RegisterMediaRoutesObserver(_))
506 .Times(2) 581 .Times(3)
507 .WillRepeatedly(SaveArg<0>(&observer_captured)); 582 .WillRepeatedly(SaveArg<0>(&observer_captured));
508 MockMediaRoutesObserver routes_observer(&mock_router); 583 MockMediaRoutesObserver routes_observer(&mock_router, media_source.id());
509 EXPECT_EQ(observer_captured, &routes_observer); 584 EXPECT_EQ(observer_captured, &routes_observer);
510 MockMediaRoutesObserver extra_routes_observer(&mock_router); 585 MockMediaRoutesObserver extra_routes_observer(&mock_router,
586 media_source.id());
511 EXPECT_EQ(observer_captured, &extra_routes_observer); 587 EXPECT_EQ(observer_captured, &extra_routes_observer);
588 MockMediaRoutesObserver different_routes_observer(&mock_router,
589 different_media_source.id());
590 EXPECT_EQ(observer_captured, &different_routes_observer);
512 router()->RegisterMediaRoutesObserver(&routes_observer); 591 router()->RegisterMediaRoutesObserver(&routes_observer);
513 router()->RegisterMediaRoutesObserver(&extra_routes_observer); 592 router()->RegisterMediaRoutesObserver(&extra_routes_observer);
593 router()->RegisterMediaRoutesObserver(&different_routes_observer);
514 594
515 std::vector<MediaRoute> expected_routes; 595 std::vector<MediaRoute> expected_routes;
516 expected_routes.push_back(MediaRoute(kRouteId, MediaSource(kSource), kSinkId, 596 expected_routes.push_back(MediaRoute(kRouteId, media_source, kSinkId,
517 kDescription, false, "", false)); 597 kDescription, false, "", false));
518 expected_routes.push_back(MediaRoute(kRouteId2, MediaSource(kSource), kSinkId, 598 expected_routes.push_back(MediaRoute(kRouteId2, media_source, kSinkId,
519 kDescription, false, "", false)); 599 kDescription, false, "", false));
600 std::vector<MediaRoute::Id> expected_joinable_route_ids;
601 expected_joinable_route_ids.push_back(kJoinableRouteId);
602 expected_joinable_route_ids.push_back(kJoinableRouteId2);
603
604 mojo::Array<mojo::String> mojo_joinable_routes(2);
605 mojo_joinable_routes[0] = kJoinableRouteId;
606 mojo_joinable_routes[1] = kJoinableRouteId2;
520 607
521 mojo::Array<interfaces::MediaRoutePtr> mojo_routes(2); 608 mojo::Array<interfaces::MediaRoutePtr> mojo_routes(2);
522 mojo_routes[0] = interfaces::MediaRoute::New(); 609 mojo_routes[0] = interfaces::MediaRoute::New();
523 mojo_routes[0]->media_route_id = kRouteId; 610 mojo_routes[0]->media_route_id = kRouteId;
524 mojo_routes[0]->media_source = kSource; 611 mojo_routes[0]->media_source = kSource;
525 mojo_routes[0]->media_sink_id = kSinkId; 612 mojo_routes[0]->media_sink_id = kSinkId;
526 mojo_routes[0]->description = kDescription; 613 mojo_routes[0]->description = kDescription;
527 mojo_routes[0]->is_local = false; 614 mojo_routes[0]->is_local = false;
528 mojo_routes[1] = interfaces::MediaRoute::New(); 615 mojo_routes[1] = interfaces::MediaRoute::New();
529 mojo_routes[1]->media_route_id = kRouteId2; 616 mojo_routes[1]->media_route_id = kRouteId2;
530 mojo_routes[1]->media_source = kSource; 617 mojo_routes[1]->media_source = kSource;
531 mojo_routes[1]->media_sink_id = kSinkId; 618 mojo_routes[1]->media_sink_id = kSinkId;
532 mojo_routes[1]->description = kDescription; 619 mojo_routes[1]->description = kDescription;
533 mojo_routes[1]->is_local = false; 620 mojo_routes[1]->is_local = false;
534 621
535 EXPECT_CALL(routes_observer, 622 EXPECT_CALL(routes_observer,
536 OnRoutesUpdated(SequenceEquals(expected_routes))); 623 OnRoutesUpdated(SequenceEquals(expected_routes),
624 expected_joinable_route_ids));
537 EXPECT_CALL(extra_routes_observer, 625 EXPECT_CALL(extra_routes_observer,
538 OnRoutesUpdated(SequenceEquals(expected_routes))); 626 OnRoutesUpdated(SequenceEquals(expected_routes),
539 media_router_proxy_->OnRoutesUpdated(mojo_routes.Pass()); 627 expected_joinable_route_ids));
628 EXPECT_CALL(different_routes_observer,
629 OnRoutesUpdated(SequenceEquals(expected_routes),
630 expected_joinable_route_ids)).Times(0);
631 media_router_proxy_->OnRoutesUpdated(media_source.id(),
632 mojo_routes.Pass(),
633 mojo_joinable_routes.Pass());
540 ProcessEventLoop(); 634 ProcessEventLoop();
541 635
542 EXPECT_CALL(mock_router, UnregisterMediaRoutesObserver(&routes_observer)); 636 EXPECT_CALL(mock_router, UnregisterMediaRoutesObserver(&routes_observer));
543 EXPECT_CALL(mock_router, 637 EXPECT_CALL(mock_router,
544 UnregisterMediaRoutesObserver(&extra_routes_observer)); 638 UnregisterMediaRoutesObserver(&extra_routes_observer));
639 EXPECT_CALL(mock_router,
640 UnregisterMediaRoutesObserver(&different_routes_observer));
545 router()->UnregisterMediaRoutesObserver(&routes_observer); 641 router()->UnregisterMediaRoutesObserver(&routes_observer);
546 router()->UnregisterMediaRoutesObserver(&extra_routes_observer); 642 router()->UnregisterMediaRoutesObserver(&extra_routes_observer);
547 EXPECT_CALL(mock_media_route_provider_, StopObservingMediaRoutes()); 643 router()->UnregisterMediaRoutesObserver(&different_routes_observer);
644 EXPECT_CALL(mock_media_route_provider_,
645 StopObservingMediaRoutes(mojo::String(media_source.id())));
646 EXPECT_CALL(mock_media_route_provider_,
647 StopObservingMediaRoutes(
648 mojo::String(different_media_source.id())));
548 ProcessEventLoop(); 649 ProcessEventLoop();
549 } 650 }
550 651
551 TEST_F(MediaRouterMojoImplTest, SendRouteMessage) { 652 TEST_F(MediaRouterMojoImplTest, SendRouteMessage) {
552 EXPECT_CALL( 653 EXPECT_CALL(
553 mock_media_route_provider_, 654 mock_media_route_provider_,
554 SendRouteMessage(mojo::String(kRouteId), mojo::String(kMessage), _)) 655 SendRouteMessage(mojo::String(kRouteId), mojo::String(kMessage), _))
555 .WillOnce(Invoke([]( 656 .WillOnce(Invoke([](
556 const MediaRoute::Id& route_id, const std::string& message, 657 const MediaRoute::Id& route_id, const std::string& message,
557 const interfaces::MediaRouteProvider::SendRouteMessageCallback& cb) { 658 const interfaces::MediaRouteProvider::SendRouteMessageCallback& cb) {
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after
1059 EXPECT_CALL(provide_handler_, Invoke(testing::Not(""))); 1160 EXPECT_CALL(provide_handler_, Invoke(testing::Not("")));
1060 EXPECT_CALL(*process_manager_, IsEventPageSuspended(kExtensionId)) 1161 EXPECT_CALL(*process_manager_, IsEventPageSuspended(kExtensionId))
1061 .WillOnce(Return(false)); 1162 .WillOnce(Return(false));
1062 EXPECT_CALL(mock_media_route_provider_, CloseRoute(mojo::String(kRouteId2))) 1163 EXPECT_CALL(mock_media_route_provider_, CloseRoute(mojo::String(kRouteId2)))
1063 .Times(kMaxPendingRequests); 1164 .Times(kMaxPendingRequests);
1064 RegisterMediaRouteProvider(); 1165 RegisterMediaRouteProvider();
1065 ProcessEventLoop(); 1166 ProcessEventLoop();
1066 } 1167 }
1067 1168
1068 } // namespace media_router 1169 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698