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

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

Issue 2264153002: [Presentation API] Add support for multiple URLs in PresentationRequest on Media Router UI side (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Modify MediaRouterDialogControllerAndroid, format Created 4 years, 3 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 "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>
8
7 #include "base/bind.h" 9 #include "base/bind.h"
8 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
9 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/browser/media/router/create_presentation_connection_request.h" 12 #include "chrome/browser/media/router/create_presentation_connection_request.h"
11 #include "chrome/browser/media/router/media_route.h" 13 #include "chrome/browser/media/router/media_route.h"
12 #include "chrome/browser/media/router/media_source_helper.h" 14 #include "chrome/browser/media/router/media_source_helper.h"
13 #include "chrome/browser/media/router/mock_media_router.h" 15 #include "chrome/browser/media/router/mock_media_router.h"
14 #include "chrome/browser/media/router/route_request_result.h" 16 #include "chrome/browser/media/router/route_request_result.h"
15 #include "chrome/browser/media/router/test_helper.h" 17 #include "chrome/browser/media/router/test_helper.h"
16 #include "chrome/browser/sessions/session_tab_helper.h" 18 #include "chrome/browser/sessions/session_tab_helper.h"
(...skipping 13 matching lines...) Expand all
30 32
31 using testing::_; 33 using testing::_;
32 using testing::AnyNumber; 34 using testing::AnyNumber;
33 using testing::Invoke; 35 using testing::Invoke;
34 using testing::SaveArg; 36 using testing::SaveArg;
35 using testing::Return; 37 using testing::Return;
36 38
37 namespace media_router { 39 namespace media_router {
38 40
39 class PresentationRequestCallbacks { 41 class PresentationRequestCallbacks {
40 public: 42 public:
41 explicit PresentationRequestCallbacks( 43 explicit PresentationRequestCallbacks(
42 const content::PresentationError& expected_error) 44 const content::PresentationError& expected_error)
43 : expected_error_(expected_error) {} 45 : expected_error_(expected_error) {}
44 46
45 void Success(const content::PresentationSessionInfo&, const MediaRoute::Id&) { 47 void Success(const content::PresentationSessionInfo&, const MediaRoute::Id&) {
46 } 48 }
47 49
48 void Error(const content::PresentationError& error) { 50 void Error(const content::PresentationError& error) {
49 EXPECT_EQ(expected_error_.error_type, error.error_type); 51 EXPECT_EQ(expected_error_.error_type, error.error_type);
50 EXPECT_EQ(expected_error_.message, error.message); 52 EXPECT_EQ(expected_error_.message, error.message);
51 } 53 }
52 54
53 private: 55 private:
54 content::PresentationError expected_error_; 56 content::PresentationError expected_error_;
55 }; 57 };
56 58
57 class MockRoutesUpdatedCallback { 59 class MockRoutesUpdatedCallback {
58 public: 60 public:
59 MOCK_METHOD2(OnRoutesUpdated, 61 MOCK_METHOD2(OnRoutesUpdated,
60 void(const std::vector<MediaRoute>& routes, 62 void(const std::vector<MediaRoute>& routes,
61 const std::vector<MediaRoute::Id>& joinable_route_ids)); 63 const std::vector<MediaRoute::Id>& joinable_route_ids));
62 }; 64 };
63 65
(...skipping 22 matching lines...) Expand all
86 return true; 88 return true;
87 })); 89 }));
88 EXPECT_CALL(mock_router_, RegisterMediaRoutesObserver(_)) 90 EXPECT_CALL(mock_router_, RegisterMediaRoutesObserver(_))
89 .Times(AnyNumber()); 91 .Times(AnyNumber());
90 media_router_ui_->InitForTest(&mock_router_, initiator_.get(), 92 media_router_ui_->InitForTest(&mock_router_, initiator_.get(),
91 message_handler_.get(), 93 message_handler_.get(),
92 std::move(create_session_request_)); 94 std::move(create_session_request_));
93 message_handler_->SetWebUIForTest(&web_ui_); 95 message_handler_->SetWebUIForTest(&web_ui_);
94 } 96 }
95 97
98 MediaSink CreateSinkCompatibleWithAllSources() {
99 MediaSink sink("sinkId", "sinkName", MediaSink::GENERIC);
100 for (auto* observer : media_sinks_observers_)
101 observer->OnSinksUpdated({sink}, std::vector<GURL>());
102 return sink;
103 }
104
96 protected: 105 protected:
97 MockMediaRouter mock_router_; 106 MockMediaRouter mock_router_;
98 content::TestBrowserThreadBundle thread_bundle_; 107 content::TestBrowserThreadBundle thread_bundle_;
99 TestingProfile profile_; 108 TestingProfile profile_;
100 std::unique_ptr<content::WebContents> initiator_; 109 std::unique_ptr<content::WebContents> initiator_;
101 content::TestWebUI web_ui_; 110 content::TestWebUI web_ui_;
102 std::unique_ptr<content::WebContents> web_contents_; 111 std::unique_ptr<content::WebContents> web_contents_;
103 std::unique_ptr<CreatePresentationConnectionRequest> create_session_request_; 112 std::unique_ptr<CreatePresentationConnectionRequest> create_session_request_;
104 std::unique_ptr<MediaRouterUI> media_router_ui_; 113 std::unique_ptr<MediaRouterUI> media_router_ui_;
105 std::unique_ptr<MediaRouterWebUIMessageHandler> message_handler_; 114 std::unique_ptr<MediaRouterWebUIMessageHandler> message_handler_;
106 std::vector<MediaSinksObserver*> media_sinks_observers_; 115 std::vector<MediaSinksObserver*> media_sinks_observers_;
107 }; 116 };
108 117
109 TEST_F(MediaRouterUITest, RouteCreationTimeoutForTab) { 118 TEST_F(MediaRouterUITest, RouteCreationTimeoutForTab) {
110 CreateMediaRouterUI(&profile_); 119 CreateMediaRouterUI(&profile_);
111 std::vector<MediaRouteResponseCallback> callbacks; 120 std::vector<MediaRouteResponseCallback> callbacks;
112 EXPECT_CALL( 121 EXPECT_CALL(
113 mock_router_, 122 mock_router_,
114 CreateRoute(_, _, _, _, _, base::TimeDelta::FromSeconds(60), false)) 123 CreateRoute(_, _, _, _, _, base::TimeDelta::FromSeconds(60), false))
115 .WillOnce(SaveArg<4>(&callbacks)); 124 .WillOnce(SaveArg<4>(&callbacks));
116 media_router_ui_->CreateRoute("sinkId", MediaCastMode::TAB_MIRROR); 125 media_router_ui_->CreateRoute(CreateSinkCompatibleWithAllSources().id(),
126 MediaCastMode::TAB_MIRROR);
117 127
118 std::string expected_title = l10n_util::GetStringUTF8( 128 std::string expected_title = l10n_util::GetStringUTF8(
119 IDS_MEDIA_ROUTER_ISSUE_CREATE_ROUTE_TIMEOUT_FOR_TAB); 129 IDS_MEDIA_ROUTER_ISSUE_CREATE_ROUTE_TIMEOUT_FOR_TAB);
120 EXPECT_CALL(mock_router_, AddIssue(IssueTitleEquals(expected_title))); 130 EXPECT_CALL(mock_router_, AddIssue(IssueTitleEquals(expected_title)));
121 std::unique_ptr<RouteRequestResult> result = 131 std::unique_ptr<RouteRequestResult> result =
122 RouteRequestResult::FromError("Timed out", RouteRequestResult::TIMED_OUT); 132 RouteRequestResult::FromError("Timed out", RouteRequestResult::TIMED_OUT);
123 for (const auto& callback : callbacks) 133 for (const auto& callback : callbacks)
124 callback.Run(*result); 134 callback.Run(*result);
125 } 135 }
126 136
127 TEST_F(MediaRouterUITest, RouteCreationTimeoutForDesktop) { 137 TEST_F(MediaRouterUITest, RouteCreationTimeoutForDesktop) {
128 CreateMediaRouterUI(&profile_); 138 CreateMediaRouterUI(&profile_);
129 std::vector<MediaRouteResponseCallback> callbacks; 139 std::vector<MediaRouteResponseCallback> callbacks;
130 EXPECT_CALL( 140 EXPECT_CALL(
131 mock_router_, 141 mock_router_,
132 CreateRoute(_, _, _, _, _, base::TimeDelta::FromSeconds(120), false)) 142 CreateRoute(_, _, _, _, _, base::TimeDelta::FromSeconds(120), false))
133 .WillOnce(SaveArg<4>(&callbacks)); 143 .WillOnce(SaveArg<4>(&callbacks));
134 media_router_ui_->CreateRoute("sinkId", MediaCastMode::DESKTOP_MIRROR); 144 media_router_ui_->CreateRoute(CreateSinkCompatibleWithAllSources().id(),
145 MediaCastMode::DESKTOP_MIRROR);
135 146
136 std::string expected_title = l10n_util::GetStringUTF8( 147 std::string expected_title = l10n_util::GetStringUTF8(
137 IDS_MEDIA_ROUTER_ISSUE_CREATE_ROUTE_TIMEOUT_FOR_DESKTOP); 148 IDS_MEDIA_ROUTER_ISSUE_CREATE_ROUTE_TIMEOUT_FOR_DESKTOP);
138 EXPECT_CALL(mock_router_, AddIssue(IssueTitleEquals(expected_title))); 149 EXPECT_CALL(mock_router_, AddIssue(IssueTitleEquals(expected_title)));
139 std::unique_ptr<RouteRequestResult> result = 150 std::unique_ptr<RouteRequestResult> result =
140 RouteRequestResult::FromError("Timed out", RouteRequestResult::TIMED_OUT); 151 RouteRequestResult::FromError("Timed out", RouteRequestResult::TIMED_OUT);
141 for (const auto& callback : callbacks) 152 for (const auto& callback : callbacks)
142 callback.Run(*result); 153 callback.Run(*result);
143 } 154 }
144 155
145 TEST_F(MediaRouterUITest, RouteCreationTimeoutForPresentation) { 156 TEST_F(MediaRouterUITest, RouteCreationTimeoutForPresentation) {
146 CreateMediaRouterUI(&profile_); 157 CreateMediaRouterUI(&profile_);
147 PresentationRequest presentation_request(RenderFrameHostId(0, 0), 158 PresentationRequest presentation_request(RenderFrameHostId(0, 0),
148 "https://presentationurl.fakeurl", 159 {"https://presentationurl.fakeurl"},
149 GURL("https://frameurl.fakeurl")); 160 GURL("https://frameurl.fakeurl"));
150 media_router_ui_->OnDefaultPresentationChanged(presentation_request); 161 media_router_ui_->OnDefaultPresentationChanged(presentation_request);
151 std::vector<MediaRouteResponseCallback> callbacks; 162 std::vector<MediaRouteResponseCallback> callbacks;
152 EXPECT_CALL( 163 EXPECT_CALL(
153 mock_router_, 164 mock_router_,
154 CreateRoute(_, _, _, _, _, base::TimeDelta::FromSeconds(20), false)) 165 CreateRoute(_, _, _, _, _, base::TimeDelta::FromSeconds(20), false))
155 .WillOnce(SaveArg<4>(&callbacks)); 166 .WillOnce(SaveArg<4>(&callbacks));
156 media_router_ui_->CreateRoute("sinkId", MediaCastMode::DEFAULT); 167 media_router_ui_->CreateRoute(CreateSinkCompatibleWithAllSources().id(),
168 MediaCastMode::DEFAULT);
157 169
158 std::string expected_title = 170 std::string expected_title =
159 l10n_util::GetStringFUTF8(IDS_MEDIA_ROUTER_ISSUE_CREATE_ROUTE_TIMEOUT, 171 l10n_util::GetStringFUTF8(IDS_MEDIA_ROUTER_ISSUE_CREATE_ROUTE_TIMEOUT,
160 base::UTF8ToUTF16("frameurl.fakeurl")); 172 base::UTF8ToUTF16("frameurl.fakeurl"));
161 EXPECT_CALL(mock_router_, AddIssue(IssueTitleEquals(expected_title))); 173 EXPECT_CALL(mock_router_, AddIssue(IssueTitleEquals(expected_title)));
162 std::unique_ptr<RouteRequestResult> result = 174 std::unique_ptr<RouteRequestResult> result =
163 RouteRequestResult::FromError("Timed out", RouteRequestResult::TIMED_OUT); 175 RouteRequestResult::FromError("Timed out", RouteRequestResult::TIMED_OUT);
164 for (const auto& callback : callbacks) 176 for (const auto& callback : callbacks)
165 callback.Run(*result); 177 callback.Run(*result);
166 } 178 }
(...skipping 10 matching lines...) Expand all
177 std::string expected_title = l10n_util::GetStringUTF8( 189 std::string expected_title = l10n_util::GetStringUTF8(
178 IDS_MEDIA_ROUTER_ISSUE_CREATE_ROUTE_TIMEOUT_FOR_TAB); 190 IDS_MEDIA_ROUTER_ISSUE_CREATE_ROUTE_TIMEOUT_FOR_TAB);
179 EXPECT_CALL(mock_router_, AddIssue(IssueTitleEquals(expected_title))); 191 EXPECT_CALL(mock_router_, AddIssue(IssueTitleEquals(expected_title)));
180 sink_callback.Run("foundSinkId"); 192 sink_callback.Run("foundSinkId");
181 } 193 }
182 194
183 TEST_F(MediaRouterUITest, RouteRequestFromIncognito) { 195 TEST_F(MediaRouterUITest, RouteRequestFromIncognito) {
184 CreateMediaRouterUI(profile_.GetOffTheRecordProfile()); 196 CreateMediaRouterUI(profile_.GetOffTheRecordProfile());
185 197
186 PresentationRequest presentation_request( 198 PresentationRequest presentation_request(
187 RenderFrameHostId(0, 0), "https://fooUrl", GURL("https://frameUrl")); 199 RenderFrameHostId(0, 0), {"https://fooUrl"}, GURL("https://frameUrl"));
188 media_router_ui_->OnDefaultPresentationChanged(presentation_request); 200 media_router_ui_->OnDefaultPresentationChanged(presentation_request);
189 201
190 EXPECT_CALL( 202 EXPECT_CALL(
191 mock_router_, 203 mock_router_,
192 CreateRoute(_, _, _, _, _, base::TimeDelta::FromSeconds(20), true)); 204 CreateRoute(_, _, _, _, _, base::TimeDelta::FromSeconds(20), true));
193 media_router_ui_->CreateRoute("sinkId", MediaCastMode::DEFAULT); 205 media_router_ui_->CreateRoute(CreateSinkCompatibleWithAllSources().id(),
206 MediaCastMode::DEFAULT);
194 } 207 }
195 208
196 TEST_F(MediaRouterUITest, SortedSinks) { 209 TEST_F(MediaRouterUITest, SortedSinks) {
197 CreateMediaRouterUI(&profile_); 210 CreateMediaRouterUI(&profile_);
198 std::vector<MediaSinkWithCastModes> unsorted_sinks; 211 std::vector<MediaSinkWithCastModes> unsorted_sinks;
199 std::string sink_id1("sink3"); 212 std::string sink_id1("sink3");
200 std::string sink_name1("B sink"); 213 std::string sink_name1("B sink");
201 MediaSinkWithCastModes sink1( 214 MediaSinkWithCastModes sink1(
202 MediaSink(sink_id1, sink_name1, MediaSink::IconType::CAST)); 215 MediaSink(sink_id1, sink_name1, MediaSink::IconType::CAST));
203 unsorted_sinks.push_back(sink1); 216 unsorted_sinks.push_back(sink1);
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 for (auto* observer : media_sinks_observers_) { 516 for (auto* observer : media_sinks_observers_) {
504 if (observer->source().id() == presentation_url) { 517 if (observer->source().id() == presentation_url) {
505 observer->OnSinksUpdated(sinks, origins); 518 observer->OnSinksUpdated(sinks, origins);
506 } 519 }
507 } 520 }
508 // Destroying the UI should return the expected error from above to the error 521 // Destroying the UI should return the expected error from above to the error
509 // callback. 522 // callback.
510 media_router_ui_.reset(); 523 media_router_ui_.reset();
511 } 524 }
512 } // namespace media_router 525 } // namespace media_router
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/media_router/media_router_ui.cc ('k') | chrome/browser/ui/webui/media_router/query_result_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698