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

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

Issue 2518083002: Deprecated: [Media Router] Ensure dialog shows route details view if there is one local route (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 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 content::PresentationError expected_error_; 56 content::PresentationError expected_error_;
57 }; 57 };
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 MockMediaRouterWebUIMessageHandler
67 : public MediaRouterWebUIMessageHandler {
68 public:
69 explicit MockMediaRouterWebUIMessageHandler(MediaRouterUI* media_router_ui)
70 : MediaRouterWebUIMessageHandler(media_router_ui) {}
71 ~MockMediaRouterWebUIMessageHandler() override {}
72
73 MOCK_METHOD3(UpdateRoutes,
74 void(const std::vector<MediaRoute>& routes,
75 const std::vector<MediaRoute::Id>& joinable_route_ids,
76 const std::unordered_map<MediaRoute::Id, MediaCastMode>&
77 current_cast_modes));
78 };
79
66 class MediaRouterUITest : public ::testing::Test { 80 class MediaRouterUITest : public ::testing::Test {
67 public: 81 public:
68 ~MediaRouterUITest() override { 82 ~MediaRouterUITest() override {
69 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)) 83 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_))
70 .Times(AnyNumber()); 84 .Times(AnyNumber());
71 EXPECT_CALL(mock_router_, UnregisterMediaRoutesObserver(_)) 85 EXPECT_CALL(mock_router_, UnregisterMediaRoutesObserver(_))
72 .Times(AnyNumber()); 86 .Times(AnyNumber());
73 } 87 }
74 88
75 void CreateMediaRouterUI(Profile* profile) { 89 void CreateMediaRouterUI(Profile* profile) {
76 initiator_.reset(content::WebContents::Create( 90 initiator_.reset(content::WebContents::Create(
77 content::WebContents::CreateParams(profile))); 91 content::WebContents::CreateParams(profile)));
78 SessionTabHelper::CreateForWebContents(initiator_.get()); 92 SessionTabHelper::CreateForWebContents(initiator_.get());
79 web_contents_.reset(content::WebContents::Create( 93 web_contents_.reset(content::WebContents::Create(
80 content::WebContents::CreateParams(profile))); 94 content::WebContents::CreateParams(profile)));
81 web_ui_.set_web_contents(web_contents_.get()); 95 web_ui_.set_web_contents(web_contents_.get());
82 media_router_ui_.reset(new MediaRouterUI(&web_ui_)); 96 media_router_ui_ = base::MakeUnique<MediaRouterUI>(&web_ui_);
83 message_handler_.reset( 97 message_handler_ = base::MakeUnique<MockMediaRouterWebUIMessageHandler>(
84 new MediaRouterWebUIMessageHandler(media_router_ui_.get())); 98 media_router_ui_.get());
85 EXPECT_CALL(mock_router_, RegisterMediaSinksObserver(_)) 99 EXPECT_CALL(mock_router_, RegisterMediaSinksObserver(_))
86 .WillRepeatedly(Invoke([this](MediaSinksObserver* observer) { 100 .WillRepeatedly(Invoke([this](MediaSinksObserver* observer) {
87 this->media_sinks_observers_.push_back(observer); 101 this->media_sinks_observers_.push_back(observer);
88 return true; 102 return true;
89 })); 103 }));
90 EXPECT_CALL(mock_router_, RegisterMediaRoutesObserver(_)) 104 EXPECT_CALL(mock_router_, RegisterMediaRoutesObserver(_))
91 .Times(AnyNumber()); 105 .Times(AnyNumber());
92 media_router_ui_->InitForTest(&mock_router_, initiator_.get(), 106 media_router_ui_->InitForTest(&mock_router_, initiator_.get(),
93 message_handler_.get(), 107 message_handler_.get(),
94 std::move(create_session_request_)); 108 std::move(create_session_request_));
95 message_handler_->SetWebUIForTest(&web_ui_); 109 message_handler_->SetWebUIForTest(&web_ui_);
96 } 110 }
97 111
98 MediaSink CreateSinkCompatibleWithAllSources() { 112 MediaSink CreateSinkCompatibleWithAllSources() {
99 MediaSink sink("sinkId", "sinkName", MediaSink::GENERIC); 113 MediaSink sink("sinkId", "sinkName", MediaSink::GENERIC);
100 for (auto* observer : media_sinks_observers_) 114 for (auto* observer : media_sinks_observers_)
101 observer->OnSinksUpdated({sink}, std::vector<GURL>()); 115 observer->OnSinksUpdated({sink}, std::vector<GURL>());
102 return sink; 116 return sink;
103 } 117 }
104 118
105 protected: 119 protected:
106 MockMediaRouter mock_router_; 120 MockMediaRouter mock_router_;
107 content::TestBrowserThreadBundle thread_bundle_; 121 content::TestBrowserThreadBundle thread_bundle_;
108 TestingProfile profile_; 122 TestingProfile profile_;
109 std::unique_ptr<content::WebContents> initiator_; 123 std::unique_ptr<content::WebContents> initiator_;
110 content::TestWebUI web_ui_; 124 content::TestWebUI web_ui_;
111 std::unique_ptr<content::WebContents> web_contents_; 125 std::unique_ptr<content::WebContents> web_contents_;
112 std::unique_ptr<CreatePresentationConnectionRequest> create_session_request_; 126 std::unique_ptr<CreatePresentationConnectionRequest> create_session_request_;
113 std::unique_ptr<MediaRouterUI> media_router_ui_; 127 std::unique_ptr<MediaRouterUI> media_router_ui_;
114 std::unique_ptr<MediaRouterWebUIMessageHandler> message_handler_; 128 std::unique_ptr<MockMediaRouterWebUIMessageHandler> message_handler_;
115 std::vector<MediaSinksObserver*> media_sinks_observers_; 129 std::vector<MediaSinksObserver*> media_sinks_observers_;
116 }; 130 };
117 131
118 TEST_F(MediaRouterUITest, RouteCreationTimeoutForTab) { 132 TEST_F(MediaRouterUITest, RouteCreationTimeoutForTab) {
119 CreateMediaRouterUI(&profile_); 133 CreateMediaRouterUI(&profile_);
120 std::vector<MediaRouteResponseCallback> callbacks; 134 std::vector<MediaRouteResponseCallback> callbacks;
121 EXPECT_CALL( 135 EXPECT_CALL(
122 mock_router_, 136 mock_router_,
123 CreateRoute(_, _, _, _, _, base::TimeDelta::FromSeconds(60), false)) 137 CreateRoute(_, _, _, _, _, base::TimeDelta::FromSeconds(60), false))
124 .WillOnce(SaveArg<4>(&callbacks)); 138 .WillOnce(SaveArg<4>(&callbacks));
(...skipping 428 matching lines...) Expand 10 before | Expand all | Expand 10 after
553 MediaSourceForPresentationUrl(presentation_url).id(); 567 MediaSourceForPresentationUrl(presentation_url).id();
554 for (auto* observer : media_sinks_observers_) { 568 for (auto* observer : media_sinks_observers_) {
555 if (observer->source().id() == presentation_source_id) { 569 if (observer->source().id() == presentation_source_id) {
556 observer->OnSinksUpdated(sinks, origins); 570 observer->OnSinksUpdated(sinks, origins);
557 } 571 }
558 } 572 }
559 // Destroying the UI should return the expected error from above to the error 573 // Destroying the UI should return the expected error from above to the error
560 // callback. 574 // callback.
561 media_router_ui_.reset(); 575 media_router_ui_.reset();
562 } 576 }
577
578 TEST_F(MediaRouterUITest, UpdateRoutesOnUIInitialized) {
579 std::vector<MediaRoute> routes;
580 std::vector<MediaRoute::Id> joinable_route_ids1;
581 std::vector<MediaRoute::Id> joinable_route_ids2;
582 routes.push_back(MediaRoute("routeId1", MediaSource("sourceId"), "sinkId1",
583 "desc 1", true, "", true));
584 routes.push_back(MediaRoute("routeId2", MediaSource("sourceId"), "sinkId2",
585 "desc 2", true, "", false));
586 joinable_route_ids1.push_back("routeId1");
587
588 // If UIInitialized() is called before OnRoutesUpdated() is called for the
589 // first time, then UpdateRoutes() should be called from OnRoutesUpdated().
590 CreateMediaRouterUI(&profile_);
591 EXPECT_CALL(*message_handler_.get(), UpdateRoutes(_, _, _)).Times(0);
592 media_router_ui_->UIInitialized();
593 EXPECT_CALL(*message_handler_.get(),
594 UpdateRoutes(SequenceEquals(routes), joinable_route_ids1, _))
595 .Times(1);
596 media_router_ui_->OnRoutesUpdated(routes, joinable_route_ids1);
597 // Subsequent OnRoutesUpdated() calls should call UpdateRoutes().
598 EXPECT_CALL(*message_handler_.get(),
599 UpdateRoutes(SequenceEquals(routes), joinable_route_ids2, _))
600 .Times(1);
601 media_router_ui_->OnRoutesUpdated(routes, joinable_route_ids2);
602
603 // If UIInitialized() is called after OnRoutesUpdated() is called for the
604 // first time, then UpdateRoutes() should be called from UIInitialized().
605 CreateMediaRouterUI(&profile_);
mark a. foltz 2016/11/29 22:24:10 Nit: Calling this twice in the same test re-uses t
606 EXPECT_CALL(*message_handler_.get(), UpdateRoutes(_, _, _)).Times(0);
607 media_router_ui_->OnRoutesUpdated(routes, joinable_route_ids1);
608 EXPECT_CALL(*message_handler_.get(),
609 UpdateRoutes(SequenceEquals(routes), joinable_route_ids1, _))
610 .Times(1);
611 media_router_ui_->UIInitialized();
612 // Subsequent OnRoutesUpdated() calls should call UpdateRoutes().
613 EXPECT_CALL(*message_handler_.get(),
614 UpdateRoutes(SequenceEquals(routes), joinable_route_ids2, _))
615 .Times(1);
616 media_router_ui_->OnRoutesUpdated(routes, joinable_route_ids2);
617 }
563 } // namespace media_router 618 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698