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

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

Issue 2540773005: Add GetCurrentRoutes() to MediaRouter API, ensure dialog has routes at init (Closed)
Patch Set: Address Derek's comments 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 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698