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

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: Fixing ChromeOS System Tray Test Created 4 years, 11 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 namespace { 51 namespace {
52 52
53 const char kDescription[] = "description"; 53 const char kDescription[] = "description";
54 const char kError[] = "error"; 54 const char kError[] = "error";
55 const char kExtensionId[] = "extension1234"; 55 const char kExtensionId[] = "extension1234";
56 const char kMessage[] = "message"; 56 const char kMessage[] = "message";
57 const char kSource[] = "source1"; 57 const char kSource[] = "source1";
58 const char kSource2[] = "source2"; 58 const char kSource2[] = "source2";
59 const char kRouteId[] = "routeId"; 59 const char kRouteId[] = "routeId";
60 const char kRouteId2[] = "routeId2"; 60 const char kRouteId2[] = "routeId2";
61 const char kJoinableRouteId[] = "joinableRouteId";
62 const char kJoinableRouteId2[] = "joinableRouteId2";
61 const char kSinkId[] = "sink"; 63 const char kSinkId[] = "sink";
62 const char kSinkId2[] = "sink2"; 64 const char kSinkId2[] = "sink2";
63 const char kSinkName[] = "sinkName"; 65 const char kSinkName[] = "sinkName";
64 const char kPresentationId[] = "presentationId"; 66 const char kPresentationId[] = "presentationId";
65 const char kOrigin[] = "http://origin/"; 67 const char kOrigin[] = "http://origin/";
66 const int kInvalidTabId = -1; 68 const int kInvalidTabId = -1;
67 const uint8_t kBinaryMessage[] = {0x01, 0x02, 0x03, 0x04}; 69 const uint8_t kBinaryMessage[] = {0x01, 0x02, 0x03, 0x04};
68 70
69 bool ArePresentationSessionMessagesEqual( 71 bool ArePresentationSessionMessagesEqual(
70 const content::PresentationSessionMessage* expected, 72 const content::PresentationSessionMessage* expected,
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 DISALLOW_COPY_AND_ASSIGN(TestProcessManager); 170 DISALLOW_COPY_AND_ASSIGN(TestProcessManager);
169 }; 171 };
170 172
171 // Mockable class for awaiting RegisterMediaRouteProvider callbacks. 173 // Mockable class for awaiting RegisterMediaRouteProvider callbacks.
172 class RegisterMediaRouteProviderHandler { 174 class RegisterMediaRouteProviderHandler {
173 public: 175 public:
174 MOCK_METHOD1(Invoke, void(const std::string& instance_id)); 176 MOCK_METHOD1(Invoke, void(const std::string& instance_id));
175 }; 177 };
176 178
177 TEST_F(MediaRouterMojoImplTest, CreateRoute) { 179 TEST_F(MediaRouterMojoImplTest, CreateRoute) {
178 MediaRoute expected_route(kRouteId, MediaSource(std::string(kSource)), 180 MediaSource media_source(kSource);
181 MediaRoute expected_route(kRouteId, media_source,
179 kSinkId, "", false, "", false); 182 kSinkId, "", false, "", false);
180 interfaces::MediaRoutePtr route = interfaces::MediaRoute::New(); 183 interfaces::MediaRoutePtr route = interfaces::MediaRoute::New();
181 route->media_source = kSource; 184 route->media_source = kSource;
182 route->media_sink_id = kSinkId; 185 route->media_sink_id = kSinkId;
183 route->media_route_id = kRouteId; 186 route->media_route_id = kRouteId;
184 route->description = kDescription; 187 route->description = kDescription;
185 route->is_local = true; 188 route->is_local = true;
186 route->for_display = true; 189 route->for_display = true;
187 190
188 // Use a lambda function as an invocation target here to work around 191 // Use a lambda function as an invocation target here to work around
189 // a limitation with GMock::Invoke that prevents it from using move-only types 192 // a limitation with GMock::Invoke that prevents it from using move-only types
190 // in runnable parameter lists. 193 // in runnable parameter lists.
191 EXPECT_CALL(mock_media_route_provider_, 194 EXPECT_CALL(mock_media_route_provider_,
192 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _, 195 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _,
193 mojo::String(kOrigin), kInvalidTabId, _)) 196 mojo::String(kOrigin), kInvalidTabId, _))
194 .WillOnce(Invoke([&route]( 197 .WillOnce(Invoke([&route](
195 const mojo::String& source, const mojo::String& sink, 198 const mojo::String& source, const mojo::String& sink,
196 const mojo::String& presentation_id, const mojo::String& origin, 199 const mojo::String& presentation_id, const mojo::String& origin,
197 int tab_id, 200 int tab_id,
198 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) { 201 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) {
199 cb.Run(std::move(route), mojo::String()); 202 cb.Run(std::move(route), mojo::String());
200 })); 203 }));
201
202 // MediaRouterMojoImpl will start observing local displayable routes as a 204 // MediaRouterMojoImpl will start observing local displayable routes as a
203 // result of having one created. 205 // result of having one created.
204 base::RunLoop run_loop; 206 base::RunLoop run_loop;
205 EXPECT_CALL(mock_media_route_provider_, StartObservingMediaRoutes()) 207 EXPECT_CALL(mock_media_route_provider_, StartObservingMediaRoutes(_))
206 .WillOnce(InvokeWithoutArgs([&run_loop]() { 208 .WillOnce(Invoke([&run_loop](const mojo::String& source) {
207 run_loop.Quit(); 209 run_loop.Quit();
208 })); 210 }));
209 211
210 RouteResponseCallbackHandler handler; 212 RouteResponseCallbackHandler handler;
211 EXPECT_CALL(handler, Invoke(Pointee(Equals(expected_route)), Not(""), "")); 213 EXPECT_CALL(handler, Invoke(Pointee(Equals(expected_route)), Not(""), ""));
212 std::vector<MediaRouteResponseCallback> route_response_callbacks; 214 std::vector<MediaRouteResponseCallback> route_response_callbacks;
213 route_response_callbacks.push_back(base::Bind( 215 route_response_callbacks.push_back(base::Bind(
214 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); 216 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
215 router()->CreateRoute(kSource, kSinkId, GURL(kOrigin), nullptr, 217 router()->CreateRoute(kSource, kSinkId, GURL(kOrigin), nullptr,
216 route_response_callbacks); 218 route_response_callbacks);
(...skipping 20 matching lines...) Expand all
237 })); 239 }));
238 std::vector<MediaRouteResponseCallback> route_response_callbacks; 240 std::vector<MediaRouteResponseCallback> route_response_callbacks;
239 route_response_callbacks.push_back(base::Bind( 241 route_response_callbacks.push_back(base::Bind(
240 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); 242 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
241 router()->CreateRoute(kSource, kSinkId, GURL(kOrigin), nullptr, 243 router()->CreateRoute(kSource, kSinkId, GURL(kOrigin), nullptr,
242 route_response_callbacks); 244 route_response_callbacks);
243 run_loop.Run(); 245 run_loop.Run();
244 } 246 }
245 247
246 TEST_F(MediaRouterMojoImplTest, JoinRoute) { 248 TEST_F(MediaRouterMojoImplTest, JoinRoute) {
247 MediaRoute expected_route(kRouteId, MediaSource(std::string(kSource)), 249 MediaSource media_source(kSource);
250 MediaRoute expected_route(kRouteId, media_source,
248 kSinkId, "", false, "", false); 251 kSinkId, "", false, "", false);
249 interfaces::MediaRoutePtr route = interfaces::MediaRoute::New(); 252 interfaces::MediaRoutePtr route = interfaces::MediaRoute::New();
250 route->media_source = kSource; 253 route->media_source = kSource;
251 route->media_sink_id = kSinkId; 254 route->media_sink_id = kSinkId;
252 route->media_route_id = kRouteId; 255 route->media_route_id = kRouteId;
253 route->description = kDescription; 256 route->description = kDescription;
254 route->is_local = true; 257 route->is_local = true;
255 route->for_display = true; 258 route->for_display = true;
256 259
257 // Use a lambda function as an invocation target here to work around 260 // Use a lambda function as an invocation target here to work around
258 // a limitation with GMock::Invoke that prevents it from using move-only types 261 // a limitation with GMock::Invoke that prevents it from using move-only types
259 // in runnable parameter lists. 262 // in runnable parameter lists.
260 EXPECT_CALL(mock_media_route_provider_, 263 EXPECT_CALL(mock_media_route_provider_,
261 JoinRoute(mojo::String(kSource), mojo::String(kPresentationId), 264 JoinRoute(mojo::String(kSource), mojo::String(kPresentationId),
262 mojo::String(kOrigin), kInvalidTabId, _)) 265 mojo::String(kOrigin), kInvalidTabId, _))
263 .WillOnce(Invoke([&route]( 266 .WillOnce(Invoke([&route](
264 const mojo::String& source, const mojo::String& presentation_id, 267 const mojo::String& source, const mojo::String& presentation_id,
265 const mojo::String& origin, int tab_id, 268 const mojo::String& origin, int tab_id,
266 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) { 269 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) {
267 cb.Run(std::move(route), mojo::String()); 270 cb.Run(std::move(route), mojo::String());
268 })); 271 }));
269 272
270 // MediaRouterMojoImpl will start observing local displayable routes as a 273 // MediaRouterMojoImpl will start observing local displayable routes as a
271 // result of having one created. 274 // result of having one created.
272 base::RunLoop run_loop; 275 base::RunLoop run_loop;
273 EXPECT_CALL(mock_media_route_provider_, StartObservingMediaRoutes()) 276 EXPECT_CALL(mock_media_route_provider_, StartObservingMediaRoutes(_))
274 .WillOnce(InvokeWithoutArgs([&run_loop]() { 277 .WillOnce(Invoke([&run_loop](const mojo::String& source) {
275 run_loop.Quit(); 278 run_loop.Quit();
276 })); 279 }));
277 280
278 RouteResponseCallbackHandler handler; 281 RouteResponseCallbackHandler handler;
279 EXPECT_CALL(handler, Invoke(Pointee(Equals(expected_route)), Not(""), "")); 282 EXPECT_CALL(handler, Invoke(Pointee(Equals(expected_route)), Not(""), ""));
280 std::vector<MediaRouteResponseCallback> route_response_callbacks; 283 std::vector<MediaRouteResponseCallback> route_response_callbacks;
281 route_response_callbacks.push_back(base::Bind( 284 route_response_callbacks.push_back(base::Bind(
282 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); 285 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
283 router()->JoinRoute(kSource, kPresentationId, GURL(kOrigin), nullptr, 286 router()->JoinRoute(kSource, kPresentationId, GURL(kOrigin), nullptr,
284 route_response_callbacks); 287 route_response_callbacks);
(...skipping 18 matching lines...) Expand all
303 run_loop.Quit(); 306 run_loop.Quit();
304 })); 307 }));
305 std::vector<MediaRouteResponseCallback> route_response_callbacks; 308 std::vector<MediaRouteResponseCallback> route_response_callbacks;
306 route_response_callbacks.push_back(base::Bind( 309 route_response_callbacks.push_back(base::Bind(
307 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); 310 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
308 router()->JoinRoute(kSource, kPresentationId, GURL(kOrigin), nullptr, 311 router()->JoinRoute(kSource, kPresentationId, GURL(kOrigin), nullptr,
309 route_response_callbacks); 312 route_response_callbacks);
310 run_loop.Run(); 313 run_loop.Run();
311 } 314 }
312 315
316 TEST_F(MediaRouterMojoImplTest, ConnectRouteByRouteId) {
317 MediaSource media_source(kSource);
318 MediaRoute expected_route(kRouteId, media_source,
319 kSinkId, "", false, "", false);
320 interfaces::MediaRoutePtr route = interfaces::MediaRoute::New();
321 route->media_source = kSource;
322 route->media_sink_id = kSinkId;
323 route->media_route_id = kRouteId;
324 route->description = kDescription;
325 route->is_local = true;
326 route->for_display = true;
327
328 // Use a lambda function as an invocation target here to work around
329 // a limitation with GMock::Invoke that prevents it from using move-only types
330 // in runnable parameter lists.
331 EXPECT_CALL(mock_media_route_provider_,
332 ConnectRouteByRouteId(mojo::String(kSource),
333 mojo::String(kRouteId), _,
334 mojo::String(kOrigin), kInvalidTabId, _))
335 .WillOnce(Invoke([&route](
336 const mojo::String& source, const mojo::String& route_id,
337 const mojo::String& presentation_id,
338 const mojo::String& origin, int tab_id,
339 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) {
340 cb.Run(std::move(route), mojo::String());
341 }));
342 EXPECT_CALL(mock_media_route_provider_,
343 StartObservingMediaRoutes(mojo::String("")));
344
345 RouteResponseCallbackHandler handler;
346 EXPECT_CALL(handler, Invoke(Pointee(Equals(expected_route)), Not(""), ""));
347 std::vector<MediaRouteResponseCallback> route_response_callbacks;
348 route_response_callbacks.push_back(base::Bind(
349 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
350 router()->ConnectRouteByRouteId(kSource, kRouteId, GURL(kOrigin), nullptr,
351 route_response_callbacks);
352 ProcessEventLoop();
353 }
354
355 TEST_F(MediaRouterMojoImplTest, ConnectRouteByRouteIdFails) {
356 EXPECT_CALL(mock_media_route_provider_,
357 ConnectRouteByRouteId(mojo::String(kSource),
358 mojo::String(kRouteId), _,
359 mojo::String(kOrigin), kInvalidTabId, _))
360 .WillOnce(Invoke(
361 [](const mojo::String& source,
362 const mojo::String& route_id,
363 const mojo::String& presentation_id,
364 const mojo::String& origin, int tab_id,
365 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) {
366 cb.Run(interfaces::MediaRoutePtr(), mojo::String(kError));
367 }));
368
369 RouteResponseCallbackHandler handler;
370 EXPECT_CALL(handler, Invoke(nullptr, "", kError));
371 std::vector<MediaRouteResponseCallback> route_response_callbacks;
372 route_response_callbacks.push_back(base::Bind(
373 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
374 router()->ConnectRouteByRouteId(kSource, kRouteId, GURL(kOrigin), nullptr,
375 route_response_callbacks);
376 ProcessEventLoop();
377 }
378
313 TEST_F(MediaRouterMojoImplTest, DetachRoute) { 379 TEST_F(MediaRouterMojoImplTest, DetachRoute) {
314 base::RunLoop run_loop; 380 base::RunLoop run_loop;
315 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId))) 381 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId)))
316 .WillOnce(InvokeWithoutArgs([&run_loop]() { 382 .WillOnce(InvokeWithoutArgs([&run_loop]() {
317 run_loop.Quit(); 383 run_loop.Quit();
318 })); 384 }));
319 router()->DetachRoute(kRouteId); 385 router()->DetachRoute(kRouteId);
320 run_loop.Run(); 386 run_loop.Run();
321 } 387 }
322 388
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
545 EXPECT_CALL(mock_media_route_provider_, 611 EXPECT_CALL(mock_media_route_provider_,
546 StopObservingMediaSinks(mojo::String(kSource2))) 612 StopObservingMediaSinks(mojo::String(kSource2)))
547 .Times(1); 613 .Times(1);
548 sinks_observer.reset(); // Unregisters kSource from router(). 614 sinks_observer.reset(); // Unregisters kSource from router().
549 sinks_observer2.reset(); // Unregisters kSource2 from router(). 615 sinks_observer2.reset(); // Unregisters kSource2 from router().
550 ProcessEventLoop(); 616 ProcessEventLoop();
551 } 617 }
552 618
553 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaRoutesObserver) { 619 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaRoutesObserver) {
554 MockMediaRouter mock_router; 620 MockMediaRouter mock_router;
555 EXPECT_CALL(mock_media_route_provider_, StartObservingMediaRoutes()).Times(2); 621 MediaSource media_source(kSource);
622 MediaSource different_media_source(kSource2);
623 EXPECT_CALL(mock_media_route_provider_,
624 StartObservingMediaRoutes(mojo::String(media_source.id()))).Times(2);
625 EXPECT_CALL(mock_media_route_provider_,
626 StartObservingMediaRoutes(
627 mojo::String(different_media_source.id()))).Times(1);
556 628
557 MediaRoutesObserver* observer_captured; 629 MediaRoutesObserver* observer_captured;
558 EXPECT_CALL(mock_router, RegisterMediaRoutesObserver(_)) 630 EXPECT_CALL(mock_router, RegisterMediaRoutesObserver(_))
559 .Times(2) 631 .Times(3)
560 .WillRepeatedly(SaveArg<0>(&observer_captured)); 632 .WillRepeatedly(SaveArg<0>(&observer_captured));
561 MockMediaRoutesObserver routes_observer(&mock_router); 633 MockMediaRoutesObserver routes_observer(&mock_router, media_source.id());
562 EXPECT_EQ(observer_captured, &routes_observer); 634 EXPECT_EQ(observer_captured, &routes_observer);
563 MockMediaRoutesObserver extra_routes_observer(&mock_router); 635 MockMediaRoutesObserver extra_routes_observer(&mock_router,
636 media_source.id());
564 EXPECT_EQ(observer_captured, &extra_routes_observer); 637 EXPECT_EQ(observer_captured, &extra_routes_observer);
638 MockMediaRoutesObserver different_routes_observer(&mock_router,
639 different_media_source.id());
640 EXPECT_EQ(observer_captured, &different_routes_observer);
565 router()->RegisterMediaRoutesObserver(&routes_observer); 641 router()->RegisterMediaRoutesObserver(&routes_observer);
566 router()->RegisterMediaRoutesObserver(&extra_routes_observer); 642 router()->RegisterMediaRoutesObserver(&extra_routes_observer);
643 router()->RegisterMediaRoutesObserver(&different_routes_observer);
567 644
568 std::vector<MediaRoute> expected_routes; 645 std::vector<MediaRoute> expected_routes;
569 expected_routes.push_back(MediaRoute(kRouteId, MediaSource(kSource), kSinkId, 646 expected_routes.push_back(MediaRoute(kRouteId, media_source, kSinkId,
570 kDescription, false, "", false)); 647 kDescription, false, "", false));
571 expected_routes.push_back(MediaRoute(kRouteId2, MediaSource(kSource), kSinkId, 648 expected_routes.push_back(MediaRoute(kRouteId2, media_source, kSinkId,
572 kDescription, false, "", false)); 649 kDescription, false, "", false));
650 std::vector<MediaRoute::Id> expected_joinable_route_ids;
651 expected_joinable_route_ids.push_back(kJoinableRouteId);
652 expected_joinable_route_ids.push_back(kJoinableRouteId2);
653
654 mojo::Array<mojo::String> mojo_joinable_routes(2);
655 mojo_joinable_routes[0] = kJoinableRouteId;
656 mojo_joinable_routes[1] = kJoinableRouteId2;
573 657
574 mojo::Array<interfaces::MediaRoutePtr> mojo_routes(2); 658 mojo::Array<interfaces::MediaRoutePtr> mojo_routes(2);
575 mojo_routes[0] = interfaces::MediaRoute::New(); 659 mojo_routes[0] = interfaces::MediaRoute::New();
576 mojo_routes[0]->media_route_id = kRouteId; 660 mojo_routes[0]->media_route_id = kRouteId;
577 mojo_routes[0]->media_source = kSource; 661 mojo_routes[0]->media_source = kSource;
578 mojo_routes[0]->media_sink_id = kSinkId; 662 mojo_routes[0]->media_sink_id = kSinkId;
579 mojo_routes[0]->description = kDescription; 663 mojo_routes[0]->description = kDescription;
580 mojo_routes[0]->is_local = false; 664 mojo_routes[0]->is_local = false;
581 mojo_routes[1] = interfaces::MediaRoute::New(); 665 mojo_routes[1] = interfaces::MediaRoute::New();
582 mojo_routes[1]->media_route_id = kRouteId2; 666 mojo_routes[1]->media_route_id = kRouteId2;
583 mojo_routes[1]->media_source = kSource; 667 mojo_routes[1]->media_source = kSource;
584 mojo_routes[1]->media_sink_id = kSinkId; 668 mojo_routes[1]->media_sink_id = kSinkId;
585 mojo_routes[1]->description = kDescription; 669 mojo_routes[1]->description = kDescription;
586 mojo_routes[1]->is_local = false; 670 mojo_routes[1]->is_local = false;
587 671
588 EXPECT_CALL(routes_observer, 672 EXPECT_CALL(routes_observer,
589 OnRoutesUpdated(SequenceEquals(expected_routes))); 673 OnRoutesUpdated(SequenceEquals(expected_routes),
674 expected_joinable_route_ids));
590 EXPECT_CALL(extra_routes_observer, 675 EXPECT_CALL(extra_routes_observer,
591 OnRoutesUpdated(SequenceEquals(expected_routes))); 676 OnRoutesUpdated(SequenceEquals(expected_routes),
592 media_router_proxy_->OnRoutesUpdated(std::move(mojo_routes)); 677 expected_joinable_route_ids));
678 EXPECT_CALL(different_routes_observer,
679 OnRoutesUpdated(SequenceEquals(expected_routes),
680 expected_joinable_route_ids)).Times(0);
681 media_router_proxy_->OnRoutesUpdated(std::move(mojo_routes),
682 media_source.id(),
683 std::move(mojo_joinable_routes));
593 ProcessEventLoop(); 684 ProcessEventLoop();
594 685
595 EXPECT_CALL(mock_router, UnregisterMediaRoutesObserver(&routes_observer)); 686 EXPECT_CALL(mock_router, UnregisterMediaRoutesObserver(&routes_observer));
596 EXPECT_CALL(mock_router, 687 EXPECT_CALL(mock_router,
597 UnregisterMediaRoutesObserver(&extra_routes_observer)); 688 UnregisterMediaRoutesObserver(&extra_routes_observer));
689 EXPECT_CALL(mock_router,
690 UnregisterMediaRoutesObserver(&different_routes_observer));
598 router()->UnregisterMediaRoutesObserver(&routes_observer); 691 router()->UnregisterMediaRoutesObserver(&routes_observer);
599 router()->UnregisterMediaRoutesObserver(&extra_routes_observer); 692 router()->UnregisterMediaRoutesObserver(&extra_routes_observer);
600 EXPECT_CALL(mock_media_route_provider_, StopObservingMediaRoutes()); 693 router()->UnregisterMediaRoutesObserver(&different_routes_observer);
694 EXPECT_CALL(mock_media_route_provider_,
695 StopObservingMediaRoutes(
696 mojo::String(media_source.id()))).Times(1);
697 EXPECT_CALL(mock_media_route_provider_,
698 StopObservingMediaRoutes(
699 mojo::String(different_media_source.id())));
601 ProcessEventLoop(); 700 ProcessEventLoop();
602 } 701 }
603 702
604 TEST_F(MediaRouterMojoImplTest, SendRouteMessage) { 703 TEST_F(MediaRouterMojoImplTest, SendRouteMessage) {
605 EXPECT_CALL( 704 EXPECT_CALL(
606 mock_media_route_provider_, 705 mock_media_route_provider_,
607 SendRouteMessage(mojo::String(kRouteId), mojo::String(kMessage), _)) 706 SendRouteMessage(mojo::String(kRouteId), mojo::String(kMessage), _))
608 .WillOnce(Invoke([]( 707 .WillOnce(Invoke([](
609 const MediaRoute::Id& route_id, const std::string& message, 708 const MediaRoute::Id& route_id, const std::string& message,
610 const interfaces::MediaRouteProvider::SendRouteMessageCallback& cb) { 709 const interfaces::MediaRouteProvider::SendRouteMessageCallback& cb) {
(...skipping 578 matching lines...) Expand 10 before | Expand all | Expand 10 after
1189 .WillRepeatedly(InvokeWithoutArgs([&run_loop2, &count]() { 1288 .WillRepeatedly(InvokeWithoutArgs([&run_loop2, &count]() {
1190 if (++count == MediaRouterMojoImpl::kMaxPendingRequests) 1289 if (++count == MediaRouterMojoImpl::kMaxPendingRequests)
1191 run_loop2.Quit(); 1290 run_loop2.Quit();
1192 })); 1291 }));
1193 RegisterMediaRouteProvider(); 1292 RegisterMediaRouteProvider();
1194 run_loop.Run(); 1293 run_loop.Run();
1195 run_loop2.Run(); 1294 run_loop2.Run();
1196 } 1295 }
1197 1296
1198 } // namespace media_router 1297 } // namespace media_router
OLDNEW
« no previous file with comments | « chrome/browser/media/router/media_router_mojo_impl.cc ('k') | chrome/browser/media/router/media_routes_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698