| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "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 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 | 57 |
| 58 class MockRoutesUpdatedCallback { | 58 class MockRoutesUpdatedCallback { |
| 59 public: | 59 public: |
| 60 MOCK_METHOD2(OnRoutesUpdated, | 60 MOCK_METHOD2(OnRoutesUpdated, |
| 61 void(const std::vector<MediaRoute>& routes, | 61 void(const std::vector<MediaRoute>& routes, |
| 62 const std::vector<MediaRoute::Id>& joinable_route_ids)); | 62 const std::vector<MediaRoute::Id>& joinable_route_ids)); |
| 63 }; | 63 }; |
| 64 | 64 |
| 65 class MediaRouterUITest : public ::testing::Test { | 65 class MediaRouterUITest : public ::testing::Test { |
| 66 public: | 66 public: |
| 67 MediaRouterUITest() { |
| 68 ON_CALL(mock_router_, GetCurrentRoutes()) |
| 69 .WillByDefault(testing::ReturnRefOfCopy(std::vector<MediaRoute>())); |
| 70 } |
| 67 ~MediaRouterUITest() override { | 71 ~MediaRouterUITest() override { |
| 68 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)) | 72 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)) |
| 69 .Times(AnyNumber()); | 73 .Times(AnyNumber()); |
| 70 EXPECT_CALL(mock_router_, UnregisterMediaRoutesObserver(_)) | 74 EXPECT_CALL(mock_router_, UnregisterMediaRoutesObserver(_)) |
| 71 .Times(AnyNumber()); | 75 .Times(AnyNumber()); |
| 72 } | 76 } |
| 73 | 77 |
| 74 void CreateMediaRouterUI(Profile* profile) { | 78 void CreateMediaRouterUI(Profile* profile) { |
| 75 initiator_.reset(content::WebContents::Create( | 79 initiator_.reset(content::WebContents::Create( |
| 76 content::WebContents::CreateParams(profile))); | 80 content::WebContents::CreateParams(profile))); |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 263 media_router_ui_->OnResultsUpdated(unsorted_sinks); | 267 media_router_ui_->OnResultsUpdated(unsorted_sinks); |
| 264 const auto& sorted_sinks = media_router_ui_->sinks_; | 268 const auto& sorted_sinks = media_router_ui_->sinks_; |
| 265 EXPECT_EQ(sink6.sink.id(), sorted_sinks[0].sink.id()); | 269 EXPECT_EQ(sink6.sink.id(), sorted_sinks[0].sink.id()); |
| 266 EXPECT_EQ(sink4.sink.id(), sorted_sinks[1].sink.id()); | 270 EXPECT_EQ(sink4.sink.id(), sorted_sinks[1].sink.id()); |
| 267 EXPECT_EQ(sink2.sink.id(), sorted_sinks[2].sink.id()); | 271 EXPECT_EQ(sink2.sink.id(), sorted_sinks[2].sink.id()); |
| 268 EXPECT_EQ(sink5.sink.id(), sorted_sinks[3].sink.id()); | 272 EXPECT_EQ(sink5.sink.id(), sorted_sinks[3].sink.id()); |
| 269 EXPECT_EQ(sink1.sink.id(), sorted_sinks[4].sink.id()); | 273 EXPECT_EQ(sink1.sink.id(), sorted_sinks[4].sink.id()); |
| 270 EXPECT_EQ(sink3.sink.id(), sorted_sinks[5].sink.id()); | 274 EXPECT_EQ(sink3.sink.id(), sorted_sinks[5].sink.id()); |
| 271 } | 275 } |
| 272 | 276 |
| 273 TEST_F(MediaRouterUITest, UIMediaRoutesObserverFiltersNonDisplayRoutes) { | 277 TEST_F(MediaRouterUITest, FilterNonDisplayRoutes) { |
| 274 EXPECT_CALL(mock_router_, RegisterMediaRoutesObserver(_)).Times(1); | 278 CreateMediaRouterUI(&profile_); |
| 279 |
| 275 MediaSource media_source("mediaSource"); | 280 MediaSource media_source("mediaSource"); |
| 276 MockRoutesUpdatedCallback mock_callback; | |
| 277 std::unique_ptr<MediaRouterUI::UIMediaRoutesObserver> observer( | |
| 278 new MediaRouterUI::UIMediaRoutesObserver( | |
| 279 &mock_router_, media_source.id(), | |
| 280 base::Bind(&MockRoutesUpdatedCallback::OnRoutesUpdated, | |
| 281 base::Unretained(&mock_callback)))); | |
| 282 | |
| 283 MediaRoute display_route_1("routeId1", media_source, "sinkId1", "desc 1", | 281 MediaRoute display_route_1("routeId1", media_source, "sinkId1", "desc 1", |
| 284 true, "", true); | 282 true, "", true); |
| 285 MediaRoute non_display_route_1("routeId2", media_source, "sinkId2", "desc 2", | 283 MediaRoute non_display_route_1("routeId2", media_source, "sinkId2", "desc 2", |
| 286 true, "", false); | 284 true, "", false); |
| 287 MediaRoute display_route_2("routeId3", media_source, "sinkId2", "desc 2", | 285 MediaRoute display_route_2("routeId3", media_source, "sinkId2", "desc 2", |
| 288 true, "", true); | 286 true, "", true); |
| 289 std::vector<MediaRoute> routes; | 287 std::vector<MediaRoute> routes; |
| 290 routes.push_back(display_route_1); | 288 routes.push_back(display_route_1); |
| 291 routes.push_back(non_display_route_1); | 289 routes.push_back(non_display_route_1); |
| 292 routes.push_back(display_route_2); | 290 routes.push_back(display_route_2); |
| 293 | 291 |
| 294 std::vector<MediaRoute> filtered_routes; | 292 media_router_ui_->OnRoutesUpdated(routes, std::vector<MediaRoute::Id>()); |
| 295 EXPECT_CALL(mock_callback, OnRoutesUpdated(_, _)) | 293 ASSERT_EQ(2u, media_router_ui_->routes_.size()); |
| 296 .WillOnce(SaveArg<0>(&filtered_routes)); | 294 EXPECT_TRUE(display_route_1.Equals(media_router_ui_->routes_[0])); |
| 297 observer->OnRoutesUpdated(routes, std::vector<MediaRoute::Id>()); | 295 EXPECT_TRUE(media_router_ui_->routes_[0].for_display()); |
| 298 | 296 EXPECT_TRUE(display_route_2.Equals(media_router_ui_->routes_[1])); |
| 299 ASSERT_EQ(2u, filtered_routes.size()); | 297 EXPECT_TRUE(media_router_ui_->routes_[1].for_display()); |
| 300 EXPECT_TRUE(display_route_1.Equals(filtered_routes[0])); | |
| 301 EXPECT_TRUE(filtered_routes[0].for_display()); | |
| 302 EXPECT_TRUE(display_route_2.Equals(filtered_routes[1])); | |
| 303 EXPECT_TRUE(filtered_routes[1].for_display()); | |
| 304 | |
| 305 EXPECT_CALL(mock_router_, UnregisterMediaRoutesObserver(_)).Times(1); | |
| 306 observer.reset(); | |
| 307 } | 298 } |
| 308 | 299 |
| 309 TEST_F(MediaRouterUITest, | 300 TEST_F(MediaRouterUITest, FilterNonDisplayJoinableRoutes) { |
| 310 UIMediaRoutesObserverFiltersNonDisplayJoinableRoutes) { | 301 CreateMediaRouterUI(&profile_); |
| 311 EXPECT_CALL(mock_router_, RegisterMediaRoutesObserver(_)).Times(1); | 302 |
| 312 MediaSource media_source("mediaSource"); | 303 MediaSource media_source("mediaSource"); |
| 313 MockRoutesUpdatedCallback mock_callback; | |
| 314 std::unique_ptr<MediaRouterUI::UIMediaRoutesObserver> observer( | |
| 315 new MediaRouterUI::UIMediaRoutesObserver( | |
| 316 &mock_router_, media_source.id(), | |
| 317 base::Bind(&MockRoutesUpdatedCallback::OnRoutesUpdated, | |
| 318 base::Unretained(&mock_callback)))); | |
| 319 | |
| 320 MediaRoute display_route_1("routeId1", media_source, "sinkId1", "desc 1", | 304 MediaRoute display_route_1("routeId1", media_source, "sinkId1", "desc 1", |
| 321 true, "", true); | 305 true, "", true); |
| 322 MediaRoute non_display_route_1("routeId2", media_source, "sinkId2", "desc 2", | 306 MediaRoute non_display_route_1("routeId2", media_source, "sinkId2", "desc 2", |
| 323 true, "", false); | 307 true, "", false); |
| 324 MediaRoute display_route_2("routeId3", media_source, "sinkId2", "desc 2", | 308 MediaRoute display_route_2("routeId3", media_source, "sinkId2", "desc 2", |
| 325 true, "", true); | 309 true, "", true); |
| 326 std::vector<MediaRoute> routes; | 310 std::vector<MediaRoute> routes; |
| 327 routes.push_back(display_route_1); | 311 routes.push_back(display_route_1); |
| 328 routes.push_back(non_display_route_1); | 312 routes.push_back(non_display_route_1); |
| 329 routes.push_back(display_route_2); | 313 routes.push_back(display_route_2); |
| 330 | 314 |
| 331 std::vector<MediaRoute::Id> joinable_route_ids; | 315 std::vector<MediaRoute::Id> joinable_route_ids; |
| 332 joinable_route_ids.push_back("routeId1"); | 316 joinable_route_ids.push_back("routeId1"); |
| 333 joinable_route_ids.push_back("routeId2"); | 317 joinable_route_ids.push_back("routeId2"); |
| 334 joinable_route_ids.push_back("routeId3"); | 318 joinable_route_ids.push_back("routeId3"); |
| 335 | 319 |
| 336 std::vector<MediaRoute::Id> filtered_joinable_route_ids; | 320 media_router_ui_->OnRoutesUpdated(routes, joinable_route_ids); |
| 337 // Save the filtered joinable routes. | 321 ASSERT_EQ(2u, media_router_ui_->joinable_route_ids_.size()); |
| 338 EXPECT_CALL(mock_callback, OnRoutesUpdated(_, _)) | 322 EXPECT_EQ(display_route_1.media_route_id(), |
| 339 .WillOnce(SaveArg<1>(&filtered_joinable_route_ids)); | 323 media_router_ui_->joinable_route_ids_[0]); |
| 340 observer->OnRoutesUpdated(routes, joinable_route_ids); | 324 EXPECT_EQ(display_route_2.media_route_id(), |
| 341 | 325 media_router_ui_->joinable_route_ids_[1]); |
| 342 ASSERT_EQ(2u, filtered_joinable_route_ids.size()); | |
| 343 EXPECT_EQ(display_route_1.media_route_id(), filtered_joinable_route_ids[0]); | |
| 344 EXPECT_EQ(display_route_2.media_route_id(), filtered_joinable_route_ids[1]); | |
| 345 | |
| 346 EXPECT_CALL(mock_router_, UnregisterMediaRoutesObserver(_)).Times(1); | |
| 347 observer.reset(); | |
| 348 } | 326 } |
| 349 | 327 |
| 350 TEST_F(MediaRouterUITest, UIMediaRoutesObserverAssignsCurrentCastModes) { | 328 TEST_F(MediaRouterUITest, UIMediaRoutesObserverAssignsCurrentCastModes) { |
| 351 CreateMediaRouterUI(&profile_); | 329 CreateMediaRouterUI(&profile_); |
| 352 SessionID::id_type tab_id = SessionTabHelper::IdForTab(initiator_.get()); | 330 SessionID::id_type tab_id = SessionTabHelper::IdForTab(initiator_.get()); |
| 353 MediaSource media_source_1(MediaSourceForTab(tab_id)); | 331 MediaSource media_source_1(MediaSourceForTab(tab_id)); |
| 354 MediaSource media_source_2("mediaSource"); | 332 MediaSource media_source_2("mediaSource"); |
| 355 MediaSource media_source_3(MediaSourceForDesktop()); | 333 MediaSource media_source_3(MediaSourceForDesktop()); |
| 356 MockRoutesUpdatedCallback mock_callback; | 334 MockRoutesUpdatedCallback mock_callback; |
| 357 std::unique_ptr<MediaRouterUI::UIMediaRoutesObserver> observer( | 335 std::unique_ptr<MediaRouterUI::UIMediaRoutesObserver> observer( |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 553 for (auto* observer : media_sinks_observers_) { | 531 for (auto* observer : media_sinks_observers_) { |
| 554 if (observer->source().id() == presentation_source_id) { | 532 if (observer->source().id() == presentation_source_id) { |
| 555 observer->OnSinksUpdated(sinks, origins); | 533 observer->OnSinksUpdated(sinks, origins); |
| 556 } | 534 } |
| 557 } | 535 } |
| 558 // Destroying the UI should return the expected error from above to the error | 536 // Destroying the UI should return the expected error from above to the error |
| 559 // callback. | 537 // callback. |
| 560 media_router_ui_.reset(); | 538 media_router_ui_.reset(); |
| 561 } | 539 } |
| 562 } // namespace media_router | 540 } // namespace media_router |
| OLD | NEW |