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

Side by Side Diff: chrome/browser/ui/webui/media_router/media_router_ui_unittest.cc

Issue 2558963003: Add GetCurrentRoutes() to MediaRouter API, ensure dialog has routes at init (Closed)
Patch Set: Created 4 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 "chrome/browser/ui/webui/media_router/media_router_ui.h" 5 #include "chrome/browser/ui/webui/media_router/media_router_ui.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 58
59 class MockRoutesUpdatedCallback { 59 class MockRoutesUpdatedCallback {
60 public: 60 public:
61 MOCK_METHOD2(OnRoutesUpdated, 61 MOCK_METHOD2(OnRoutesUpdated,
62 void(const std::vector<MediaRoute>& routes, 62 void(const std::vector<MediaRoute>& routes,
63 const std::vector<MediaRoute::Id>& joinable_route_ids)); 63 const std::vector<MediaRoute::Id>& joinable_route_ids));
64 }; 64 };
65 65
66 class MediaRouterUITest : public ::testing::Test { 66 class MediaRouterUITest : public ::testing::Test {
67 public: 67 public:
68 MediaRouterUITest() {
69 ON_CALL(mock_router_, GetCurrentRoutes())
70 .WillByDefault(Return(std::vector<MediaRoute>()));
71 }
72
68 ~MediaRouterUITest() override { 73 ~MediaRouterUITest() override {
69 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)) 74 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_))
70 .Times(AnyNumber()); 75 .Times(AnyNumber());
71 EXPECT_CALL(mock_router_, UnregisterMediaRoutesObserver(_)) 76 EXPECT_CALL(mock_router_, UnregisterMediaRoutesObserver(_))
72 .Times(AnyNumber()); 77 .Times(AnyNumber());
73 } 78 }
74 79
75 void CreateMediaRouterUI(Profile* profile) { 80 void CreateMediaRouterUI(Profile* profile) {
76 initiator_.reset(content::WebContents::Create( 81 initiator_.reset(content::WebContents::Create(
77 content::WebContents::CreateParams(profile))); 82 content::WebContents::CreateParams(profile)));
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 media_router_ui_->OnResultsUpdated(unsorted_sinks); 269 media_router_ui_->OnResultsUpdated(unsorted_sinks);
265 const auto& sorted_sinks = media_router_ui_->sinks_; 270 const auto& sorted_sinks = media_router_ui_->sinks_;
266 EXPECT_EQ(sink6.sink.id(), sorted_sinks[0].sink.id()); 271 EXPECT_EQ(sink6.sink.id(), sorted_sinks[0].sink.id());
267 EXPECT_EQ(sink4.sink.id(), sorted_sinks[1].sink.id()); 272 EXPECT_EQ(sink4.sink.id(), sorted_sinks[1].sink.id());
268 EXPECT_EQ(sink2.sink.id(), sorted_sinks[2].sink.id()); 273 EXPECT_EQ(sink2.sink.id(), sorted_sinks[2].sink.id());
269 EXPECT_EQ(sink5.sink.id(), sorted_sinks[3].sink.id()); 274 EXPECT_EQ(sink5.sink.id(), sorted_sinks[3].sink.id());
270 EXPECT_EQ(sink1.sink.id(), sorted_sinks[4].sink.id()); 275 EXPECT_EQ(sink1.sink.id(), sorted_sinks[4].sink.id());
271 EXPECT_EQ(sink3.sink.id(), sorted_sinks[5].sink.id()); 276 EXPECT_EQ(sink3.sink.id(), sorted_sinks[5].sink.id());
272 } 277 }
273 278
274 TEST_F(MediaRouterUITest, UIMediaRoutesObserverFiltersNonDisplayRoutes) { 279 TEST_F(MediaRouterUITest, FilterNonDisplayRoutes) {
275 EXPECT_CALL(mock_router_, RegisterMediaRoutesObserver(_)).Times(1); 280 CreateMediaRouterUI(profile());
tapted 2016/12/08 05:09:23 This is causing a compile failure on go/betabuilde
281
276 MediaSource media_source("mediaSource"); 282 MediaSource media_source("mediaSource");
277 MockRoutesUpdatedCallback mock_callback;
278 std::unique_ptr<MediaRouterUI::UIMediaRoutesObserver> observer(
279 new MediaRouterUI::UIMediaRoutesObserver(
280 &mock_router_, media_source.id(),
281 base::Bind(&MockRoutesUpdatedCallback::OnRoutesUpdated,
282 base::Unretained(&mock_callback))));
283
284 MediaRoute display_route_1("routeId1", media_source, "sinkId1", "desc 1", 283 MediaRoute display_route_1("routeId1", media_source, "sinkId1", "desc 1",
285 true, "", true); 284 true, "", true);
286 MediaRoute non_display_route_1("routeId2", media_source, "sinkId2", "desc 2", 285 MediaRoute non_display_route_1("routeId2", media_source, "sinkId2", "desc 2",
287 true, "", false); 286 true, "", false);
288 MediaRoute display_route_2("routeId3", media_source, "sinkId2", "desc 2", 287 MediaRoute display_route_2("routeId3", media_source, "sinkId2", "desc 2",
289 true, "", true); 288 true, "", true);
290 std::vector<MediaRoute> routes; 289 std::vector<MediaRoute> routes;
291 routes.push_back(display_route_1); 290 routes.push_back(display_route_1);
292 routes.push_back(non_display_route_1); 291 routes.push_back(non_display_route_1);
293 routes.push_back(display_route_2); 292 routes.push_back(display_route_2);
294 293
295 std::vector<MediaRoute> filtered_routes; 294 media_router_ui_->OnRoutesUpdated(routes, std::vector<MediaRoute::Id>());
296 EXPECT_CALL(mock_callback, OnRoutesUpdated(_, _)) 295 ASSERT_EQ(2u, media_router_ui_->routes_.size());
297 .WillOnce(SaveArg<0>(&filtered_routes)); 296 EXPECT_TRUE(display_route_1.Equals(media_router_ui_->routes_[0]));
298 observer->OnRoutesUpdated(routes, std::vector<MediaRoute::Id>()); 297 EXPECT_TRUE(media_router_ui_->routes_[0].for_display());
299 298 EXPECT_TRUE(display_route_2.Equals(media_router_ui_->routes_[1]));
300 ASSERT_EQ(2u, filtered_routes.size()); 299 EXPECT_TRUE(media_router_ui_->routes_[1].for_display());
301 EXPECT_TRUE(display_route_1.Equals(filtered_routes[0]));
302 EXPECT_TRUE(filtered_routes[0].for_display());
303 EXPECT_TRUE(display_route_2.Equals(filtered_routes[1]));
304 EXPECT_TRUE(filtered_routes[1].for_display());
305
306 EXPECT_CALL(mock_router_, UnregisterMediaRoutesObserver(_)).Times(1);
307 observer.reset();
308 } 300 }
309 301
310 TEST_F(MediaRouterUITest, 302 TEST_F(MediaRouterUITest, FilterNonDisplayJoinableRoutes) {
311 UIMediaRoutesObserverFiltersNonDisplayJoinableRoutes) { 303 CreateMediaRouterUI(profile());
312 EXPECT_CALL(mock_router_, RegisterMediaRoutesObserver(_)).Times(1); 304
313 MediaSource media_source("mediaSource"); 305 MediaSource media_source("mediaSource");
314 MockRoutesUpdatedCallback mock_callback;
315 std::unique_ptr<MediaRouterUI::UIMediaRoutesObserver> observer(
316 new MediaRouterUI::UIMediaRoutesObserver(
317 &mock_router_, media_source.id(),
318 base::Bind(&MockRoutesUpdatedCallback::OnRoutesUpdated,
319 base::Unretained(&mock_callback))));
320
321 MediaRoute display_route_1("routeId1", media_source, "sinkId1", "desc 1", 306 MediaRoute display_route_1("routeId1", media_source, "sinkId1", "desc 1",
322 true, "", true); 307 true, "", true);
323 MediaRoute non_display_route_1("routeId2", media_source, "sinkId2", "desc 2", 308 MediaRoute non_display_route_1("routeId2", media_source, "sinkId2", "desc 2",
324 true, "", false); 309 true, "", false);
325 MediaRoute display_route_2("routeId3", media_source, "sinkId2", "desc 2", 310 MediaRoute display_route_2("routeId3", media_source, "sinkId2", "desc 2",
326 true, "", true); 311 true, "", true);
327 std::vector<MediaRoute> routes; 312 std::vector<MediaRoute> routes;
328 routes.push_back(display_route_1); 313 routes.push_back(display_route_1);
329 routes.push_back(non_display_route_1); 314 routes.push_back(non_display_route_1);
330 routes.push_back(display_route_2); 315 routes.push_back(display_route_2);
331 316
332 std::vector<MediaRoute::Id> joinable_route_ids; 317 std::vector<MediaRoute::Id> joinable_route_ids;
333 joinable_route_ids.push_back("routeId1"); 318 joinable_route_ids.push_back("routeId1");
334 joinable_route_ids.push_back("routeId2"); 319 joinable_route_ids.push_back("routeId2");
335 joinable_route_ids.push_back("routeId3"); 320 joinable_route_ids.push_back("routeId3");
336 321
337 std::vector<MediaRoute::Id> filtered_joinable_route_ids; 322 media_router_ui_->OnRoutesUpdated(routes, joinable_route_ids);
338 // Save the filtered joinable routes. 323 ASSERT_EQ(2u, media_router_ui_->joinable_route_ids_.size());
339 EXPECT_CALL(mock_callback, OnRoutesUpdated(_, _)) 324 EXPECT_EQ(display_route_1.media_route_id(),
340 .WillOnce(SaveArg<1>(&filtered_joinable_route_ids)); 325 media_router_ui_->joinable_route_ids_[0]);
341 observer->OnRoutesUpdated(routes, joinable_route_ids); 326 EXPECT_EQ(display_route_2.media_route_id(),
342 327 media_router_ui_->joinable_route_ids_[1]);
343 ASSERT_EQ(2u, filtered_joinable_route_ids.size());
344 EXPECT_EQ(display_route_1.media_route_id(), filtered_joinable_route_ids[0]);
345 EXPECT_EQ(display_route_2.media_route_id(), filtered_joinable_route_ids[1]);
346
347 EXPECT_CALL(mock_router_, UnregisterMediaRoutesObserver(_)).Times(1);
348 observer.reset();
349 } 328 }
350 329
351 TEST_F(MediaRouterUITest, UIMediaRoutesObserverAssignsCurrentCastModes) { 330 TEST_F(MediaRouterUITest, UIMediaRoutesObserverAssignsCurrentCastModes) {
352 CreateMediaRouterUI(&profile_); 331 CreateMediaRouterUI(&profile_);
353 SessionID::id_type tab_id = SessionTabHelper::IdForTab(initiator_.get()); 332 SessionID::id_type tab_id = SessionTabHelper::IdForTab(initiator_.get());
354 MediaSource media_source_1(MediaSourceForTab(tab_id)); 333 MediaSource media_source_1(MediaSourceForTab(tab_id));
355 MediaSource media_source_2("mediaSource"); 334 MediaSource media_source_2("mediaSource");
356 MediaSource media_source_3(MediaSourceForDesktop()); 335 MediaSource media_source_3(MediaSourceForDesktop());
357 MockRoutesUpdatedCallback mock_callback; 336 MockRoutesUpdatedCallback mock_callback;
358 std::unique_ptr<MediaRouterUI::UIMediaRoutesObserver> observer( 337 std::unique_ptr<MediaRouterUI::UIMediaRoutesObserver> observer(
(...skipping 15 matching lines...) Expand all
374 353
375 observer->OnRoutesUpdated(routes, std::vector<MediaRoute::Id>()); 354 observer->OnRoutesUpdated(routes, std::vector<MediaRoute::Id>());
376 355
377 const auto& filtered_routes = media_router_ui_->routes(); 356 const auto& filtered_routes = media_router_ui_->routes();
378 ASSERT_EQ(2u, filtered_routes.size()); 357 ASSERT_EQ(2u, filtered_routes.size());
379 EXPECT_TRUE(display_route_1.Equals(filtered_routes[0])); 358 EXPECT_TRUE(display_route_1.Equals(filtered_routes[0]));
380 EXPECT_TRUE(filtered_routes[0].for_display()); 359 EXPECT_TRUE(filtered_routes[0].for_display());
381 EXPECT_TRUE(display_route_2.Equals(filtered_routes[1])); 360 EXPECT_TRUE(display_route_2.Equals(filtered_routes[1]));
382 EXPECT_TRUE(filtered_routes[1].for_display()); 361 EXPECT_TRUE(filtered_routes[1].for_display());
383 362
384 const auto& current_cast_modes = media_router_ui_->current_cast_modes(); 363 const auto& current_cast_modes = media_router_ui_->routes_and_cast_modes();
385 ASSERT_EQ(2u, current_cast_modes.size()); 364 ASSERT_EQ(2u, current_cast_modes.size());
386 auto cast_mode_entry = 365 auto cast_mode_entry =
387 current_cast_modes.find(display_route_1.media_route_id()); 366 current_cast_modes.find(display_route_1.media_route_id());
388 EXPECT_NE(end(current_cast_modes), cast_mode_entry); 367 EXPECT_NE(end(current_cast_modes), cast_mode_entry);
389 EXPECT_EQ(MediaCastMode::TAB_MIRROR, cast_mode_entry->second); 368 EXPECT_EQ(MediaCastMode::TAB_MIRROR, cast_mode_entry->second);
390 cast_mode_entry = 369 cast_mode_entry =
391 current_cast_modes.find(non_display_route_1.media_route_id()); 370 current_cast_modes.find(non_display_route_1.media_route_id());
392 EXPECT_EQ(end(current_cast_modes), cast_mode_entry); 371 EXPECT_EQ(end(current_cast_modes), cast_mode_entry);
393 cast_mode_entry = current_cast_modes.find(display_route_2.media_route_id()); 372 cast_mode_entry = current_cast_modes.find(display_route_2.media_route_id());
394 EXPECT_NE(end(current_cast_modes), cast_mode_entry); 373 EXPECT_NE(end(current_cast_modes), cast_mode_entry);
(...skipping 28 matching lines...) Expand all
423 402
424 observer->OnRoutesUpdated(routes, std::vector<MediaRoute::Id>()); 403 observer->OnRoutesUpdated(routes, std::vector<MediaRoute::Id>());
425 404
426 const auto& filtered_routes = media_router_ui_->routes(); 405 const auto& filtered_routes = media_router_ui_->routes();
427 ASSERT_EQ(2u, filtered_routes.size()); 406 ASSERT_EQ(2u, filtered_routes.size());
428 EXPECT_TRUE(display_route_1.Equals(filtered_routes[0])); 407 EXPECT_TRUE(display_route_1.Equals(filtered_routes[0]));
429 EXPECT_TRUE(filtered_routes[0].for_display()); 408 EXPECT_TRUE(filtered_routes[0].for_display());
430 EXPECT_TRUE(display_route_2.Equals(filtered_routes[1])); 409 EXPECT_TRUE(display_route_2.Equals(filtered_routes[1]));
431 EXPECT_TRUE(filtered_routes[1].for_display()); 410 EXPECT_TRUE(filtered_routes[1].for_display());
432 411
433 const auto& current_cast_modes = media_router_ui_->current_cast_modes(); 412 const auto& current_cast_modes = media_router_ui_->routes_and_cast_modes();
434 ASSERT_EQ(1u, current_cast_modes.size()); 413 ASSERT_EQ(1u, current_cast_modes.size());
435 auto cast_mode_entry = 414 auto cast_mode_entry =
436 current_cast_modes.find(display_route_1.media_route_id()); 415 current_cast_modes.find(display_route_1.media_route_id());
437 // No observer for source "mediaSource1" means no cast mode for this route. 416 // No observer for source "mediaSource1" means no cast mode for this route.
438 EXPECT_EQ(end(current_cast_modes), cast_mode_entry); 417 EXPECT_EQ(end(current_cast_modes), cast_mode_entry);
439 cast_mode_entry = 418 cast_mode_entry =
440 current_cast_modes.find(non_display_route_1.media_route_id()); 419 current_cast_modes.find(non_display_route_1.media_route_id());
441 EXPECT_EQ(end(current_cast_modes), cast_mode_entry); 420 EXPECT_EQ(end(current_cast_modes), cast_mode_entry);
442 cast_mode_entry = current_cast_modes.find(display_route_2.media_route_id()); 421 cast_mode_entry = current_cast_modes.find(display_route_2.media_route_id());
443 EXPECT_NE(end(current_cast_modes), cast_mode_entry); 422 EXPECT_NE(end(current_cast_modes), cast_mode_entry);
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
554 for (auto* observer : media_sinks_observers_) { 533 for (auto* observer : media_sinks_observers_) {
555 if (observer->source().id() == presentation_source_id) { 534 if (observer->source().id() == presentation_source_id) {
556 observer->OnSinksUpdated(sinks, origins); 535 observer->OnSinksUpdated(sinks, origins);
557 } 536 }
558 } 537 }
559 // Destroying the UI should return the expected error from above to the error 538 // Destroying the UI should return the expected error from above to the error
560 // callback. 539 // callback.
561 media_router_ui_.reset(); 540 media_router_ui_.reset();
562 } 541 }
563 } // namespace media_router 542 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698