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

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

Issue 2627463003: Convert MediaRouter mojom apis to intake url::Origin objects instead of strings (Closed)
Patch Set: Add missing dependency for extensions_renderer_resources target Created 3 years, 10 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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/containers/hash_tables.h" 6 #include "base/containers/hash_tables.h"
7 #include "base/json/json_writer.h" 7 #include "base/json/json_writer.h"
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "chrome/browser/media/router/media_sinks_observer.h" 9 #include "chrome/browser/media/router/media_sinks_observer.h"
10 #include "chrome/browser/media/router/media_source_helper.h" 10 #include "chrome/browser/media/router/media_source_helper.h"
(...skipping 29 matching lines...) Expand all
40 public: 40 public:
41 QueryResultManagerTest() 41 QueryResultManagerTest()
42 : mock_router_(), query_result_manager_(&mock_router_) { 42 : mock_router_(), query_result_manager_(&mock_router_) {
43 } 43 }
44 44
45 void DiscoverSinks(MediaCastMode cast_mode, const MediaSource& source) { 45 void DiscoverSinks(MediaCastMode cast_mode, const MediaSource& source) {
46 EXPECT_CALL(mock_router_, RegisterMediaSinksObserver(_)) 46 EXPECT_CALL(mock_router_, RegisterMediaSinksObserver(_))
47 .WillOnce(Return(true)); 47 .WillOnce(Return(true));
48 EXPECT_CALL(mock_observer_, OnResultsUpdated(_)).Times(1); 48 EXPECT_CALL(mock_observer_, OnResultsUpdated(_)).Times(1);
49 query_result_manager_.SetSourcesForCastMode(cast_mode, {source}, 49 query_result_manager_.SetSourcesForCastMode(cast_mode, {source},
50 GURL(kOrigin)); 50 url::Origin(GURL(kOrigin)));
51 } 51 }
52 52
53 bool IsDefaultSourceForSink(const MediaSource* source, 53 bool IsDefaultSourceForSink(const MediaSource* source,
54 const MediaSink& sink) { 54 const MediaSink& sink) {
55 return IsPreferredSourceForSink(MediaCastMode::DEFAULT, source, sink); 55 return IsPreferredSourceForSink(MediaCastMode::DEFAULT, source, sink);
56 } 56 }
57 57
58 bool IsTabSourceForSink(const MediaSource* source, const MediaSink& sink) { 58 bool IsTabSourceForSink(const MediaSource* source, const MediaSink& sink) {
59 return IsPreferredSourceForSink(MediaCastMode::TAB_MIRROR, source, sink); 59 return IsPreferredSourceForSink(MediaCastMode::TAB_MIRROR, source, sink);
60 } 60 }
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 101
102 query_result_manager_.RemoveObserver(&ob2); 102 query_result_manager_.RemoveObserver(&ob2);
103 EXPECT_CALL(ob1, OnResultsUpdated(_)).Times(1); 103 EXPECT_CALL(ob1, OnResultsUpdated(_)).Times(1);
104 query_result_manager_.NotifyOnResultsUpdated(); 104 query_result_manager_.NotifyOnResultsUpdated();
105 105
106 query_result_manager_.RemoveObserver(&ob1); 106 query_result_manager_.RemoveObserver(&ob1);
107 query_result_manager_.NotifyOnResultsUpdated(); 107 query_result_manager_.NotifyOnResultsUpdated();
108 } 108 }
109 109
110 TEST_F(QueryResultManagerTest, StartStopSinksQuery) { 110 TEST_F(QueryResultManagerTest, StartStopSinksQuery) {
111 GURL origin(kOrigin);
112 CastModeSet cast_modes = query_result_manager_.GetSupportedCastModes(); 111 CastModeSet cast_modes = query_result_manager_.GetSupportedCastModes();
113 EXPECT_TRUE(cast_modes.empty()); 112 EXPECT_TRUE(cast_modes.empty());
114 std::vector<MediaSource> actual_sources = 113 std::vector<MediaSource> actual_sources =
115 query_result_manager_.GetSourcesForCastMode(MediaCastMode::DEFAULT); 114 query_result_manager_.GetSourcesForCastMode(MediaCastMode::DEFAULT);
116 EXPECT_EQ(0u, actual_sources.size()); 115 EXPECT_EQ(0u, actual_sources.size());
117 116
118 MediaSource source(MediaSourceForPresentationUrl(GURL("http://foo.com"))); 117 MediaSource source(MediaSourceForPresentationUrl(GURL("http://foo.com")));
119 EXPECT_CALL(mock_router_, RegisterMediaSinksObserver(_)) 118 EXPECT_CALL(mock_router_, RegisterMediaSinksObserver(_))
120 .WillOnce(Return(true)); 119 .WillOnce(Return(true));
121 query_result_manager_.SetSourcesForCastMode(MediaCastMode::DEFAULT, {source}, 120 query_result_manager_.SetSourcesForCastMode(MediaCastMode::DEFAULT, {source},
122 origin); 121 url::Origin(GURL(kOrigin)));
123 122
124 cast_modes = query_result_manager_.GetSupportedCastModes(); 123 cast_modes = query_result_manager_.GetSupportedCastModes();
125 EXPECT_EQ(1u, cast_modes.size()); 124 EXPECT_EQ(1u, cast_modes.size());
126 EXPECT_TRUE(base::ContainsKey(cast_modes, MediaCastMode::DEFAULT)); 125 EXPECT_TRUE(base::ContainsKey(cast_modes, MediaCastMode::DEFAULT));
127 actual_sources = 126 actual_sources =
128 query_result_manager_.GetSourcesForCastMode(MediaCastMode::DEFAULT); 127 query_result_manager_.GetSourcesForCastMode(MediaCastMode::DEFAULT);
129 EXPECT_EQ(1u, actual_sources.size()); 128 EXPECT_EQ(1u, actual_sources.size());
130 EXPECT_EQ(source, actual_sources[0]); 129 EXPECT_EQ(source, actual_sources[0]);
131 130
132 // Register a different set of sources for the same cast mode. 131 // Register a different set of sources for the same cast mode.
133 MediaSource another_source( 132 MediaSource another_source(
134 MediaSourceForPresentationUrl(GURL("http://bar.com"))); 133 MediaSourceForPresentationUrl(GURL("http://bar.com")));
135 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)).Times(1); 134 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)).Times(1);
136 EXPECT_CALL(mock_router_, RegisterMediaSinksObserver(_)) 135 EXPECT_CALL(mock_router_, RegisterMediaSinksObserver(_))
137 .WillOnce(Return(true)); 136 .WillOnce(Return(true));
138 query_result_manager_.SetSourcesForCastMode(MediaCastMode::DEFAULT, 137 query_result_manager_.SetSourcesForCastMode(
139 {another_source}, origin); 138 MediaCastMode::DEFAULT, {another_source}, url::Origin(GURL(kOrigin)));
140 139
141 cast_modes = query_result_manager_.GetSupportedCastModes(); 140 cast_modes = query_result_manager_.GetSupportedCastModes();
142 EXPECT_EQ(1u, cast_modes.size()); 141 EXPECT_EQ(1u, cast_modes.size());
143 EXPECT_TRUE(base::ContainsKey(cast_modes, MediaCastMode::DEFAULT)); 142 EXPECT_TRUE(base::ContainsKey(cast_modes, MediaCastMode::DEFAULT));
144 actual_sources = 143 actual_sources =
145 query_result_manager_.GetSourcesForCastMode(MediaCastMode::DEFAULT); 144 query_result_manager_.GetSourcesForCastMode(MediaCastMode::DEFAULT);
146 EXPECT_EQ(1u, actual_sources.size()); 145 EXPECT_EQ(1u, actual_sources.size());
147 EXPECT_EQ(another_source, actual_sources[0]); 146 EXPECT_EQ(another_source, actual_sources[0]);
148 147
149 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)).Times(1); 148 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)).Times(1);
(...skipping 10 matching lines...) Expand all
160 MediaSink sink1("sinkId1", "Sink 1", MediaSink::IconType::CAST); 159 MediaSink sink1("sinkId1", "Sink 1", MediaSink::IconType::CAST);
161 MediaSink sink2("sinkId2", "Sink 2", MediaSink::IconType::CAST); 160 MediaSink sink2("sinkId2", "Sink 2", MediaSink::IconType::CAST);
162 MediaSink sink3("sinkId3", "Sink 3", MediaSink::IconType::CAST); 161 MediaSink sink3("sinkId3", "Sink 3", MediaSink::IconType::CAST);
163 MediaSink sink4("sinkId4", "Sink 4", MediaSink::IconType::CAST); 162 MediaSink sink4("sinkId4", "Sink 4", MediaSink::IconType::CAST);
164 MediaSink sink5("sinkId5", "Sink 5", MediaSink::IconType::CAST); 163 MediaSink sink5("sinkId5", "Sink 5", MediaSink::IconType::CAST);
165 MediaSource default_source1 = 164 MediaSource default_source1 =
166 MediaSourceForPresentationUrl(GURL("http://bar.com")); 165 MediaSourceForPresentationUrl(GURL("http://bar.com"));
167 MediaSource default_source2 = 166 MediaSource default_source2 =
168 MediaSourceForPresentationUrl(GURL("http://baz.com")); 167 MediaSourceForPresentationUrl(GURL("http://baz.com"));
169 MediaSource tab_source = MediaSourceForTab(123); 168 MediaSource tab_source = MediaSourceForTab(123);
170 GURL origin(kOrigin);
171 169
172 query_result_manager_.AddObserver(&mock_observer_); 170 query_result_manager_.AddObserver(&mock_observer_);
173 DiscoverSinks(MediaCastMode::DEFAULT, default_source1); 171 DiscoverSinks(MediaCastMode::DEFAULT, default_source1);
174 DiscoverSinks(MediaCastMode::TAB_MIRROR, tab_source); 172 DiscoverSinks(MediaCastMode::TAB_MIRROR, tab_source);
175 173
176 // Scenario (results in this order): 174 // Scenario (results in this order):
177 // Action: DEFAULT -> [1, 2, 3] 175 // Action: DEFAULT -> [1, 2, 3]
178 // Expected result: 176 // Expected result:
179 // Sinks: [1 -> {DEFAULT}, 2 -> {DEFAULT}, 3 -> {DEFAULT}] 177 // Sinks: [1 -> {DEFAULT}, 2 -> {DEFAULT}, 3 -> {DEFAULT}]
180 std::vector<MediaSinkWithCastModes> expected_sinks; 178 std::vector<MediaSinkWithCastModes> expected_sinks;
181 expected_sinks.push_back(MediaSinkWithCastModes(sink1)); 179 expected_sinks.push_back(MediaSinkWithCastModes(sink1));
182 expected_sinks.back().cast_modes.insert(MediaCastMode::DEFAULT); 180 expected_sinks.back().cast_modes.insert(MediaCastMode::DEFAULT);
183 expected_sinks.push_back(MediaSinkWithCastModes(sink2)); 181 expected_sinks.push_back(MediaSinkWithCastModes(sink2));
184 expected_sinks.back().cast_modes.insert(MediaCastMode::DEFAULT); 182 expected_sinks.back().cast_modes.insert(MediaCastMode::DEFAULT);
185 expected_sinks.push_back(MediaSinkWithCastModes(sink3)); 183 expected_sinks.push_back(MediaSinkWithCastModes(sink3));
186 expected_sinks.back().cast_modes.insert(MediaCastMode::DEFAULT); 184 expected_sinks.back().cast_modes.insert(MediaCastMode::DEFAULT);
187 185
188 const auto& sinks_observers = query_result_manager_.sinks_observers_; 186 const auto& sinks_observers = query_result_manager_.sinks_observers_;
189 auto sinks_observer_it = sinks_observers.find(default_source1); 187 auto sinks_observer_it = sinks_observers.find(default_source1);
190 ASSERT_TRUE(sinks_observer_it != sinks_observers.end()); 188 ASSERT_TRUE(sinks_observer_it != sinks_observers.end());
191 ASSERT_TRUE(sinks_observer_it->second.get()); 189 ASSERT_TRUE(sinks_observer_it->second.get());
192 190
193 std::vector<MediaSink> sinks_query_result; 191 std::vector<MediaSink> sinks_query_result;
194 sinks_query_result.push_back(sink1); 192 sinks_query_result.push_back(sink1);
195 sinks_query_result.push_back(sink2); 193 sinks_query_result.push_back(sink2);
196 sinks_query_result.push_back(sink3); 194 sinks_query_result.push_back(sink3);
197 EXPECT_CALL(mock_observer_, 195 EXPECT_CALL(mock_observer_,
198 OnResultsUpdated(VectorEquals(expected_sinks))).Times(1); 196 OnResultsUpdated(VectorEquals(expected_sinks))).Times(1);
199 sinks_observer_it->second->OnSinksUpdated(sinks_query_result, 197 sinks_observer_it->second->OnSinksUpdated(sinks_query_result,
200 std::vector<GURL>()); 198 std::vector<url::Origin>());
201 199
202 // Action: TAB_MIRROR -> [2, 3, 4] 200 // Action: TAB_MIRROR -> [2, 3, 4]
203 // Expected result: 201 // Expected result:
204 // Sinks: [1 -> {DEFAULT}, 2 -> {DEFAULT, TAB_MIRROR}, 202 // Sinks: [1 -> {DEFAULT}, 2 -> {DEFAULT, TAB_MIRROR},
205 // 3 -> {DEFAULT, TAB_MIRROR}, 4 -> {TAB_MIRROR}] 203 // 3 -> {DEFAULT, TAB_MIRROR}, 4 -> {TAB_MIRROR}]
206 expected_sinks.clear(); 204 expected_sinks.clear();
207 expected_sinks.push_back(MediaSinkWithCastModes(sink1)); 205 expected_sinks.push_back(MediaSinkWithCastModes(sink1));
208 expected_sinks.back().cast_modes.insert(MediaCastMode::DEFAULT); 206 expected_sinks.back().cast_modes.insert(MediaCastMode::DEFAULT);
209 expected_sinks.push_back(MediaSinkWithCastModes(sink2)); 207 expected_sinks.push_back(MediaSinkWithCastModes(sink2));
210 expected_sinks.back().cast_modes.insert(MediaCastMode::DEFAULT); 208 expected_sinks.back().cast_modes.insert(MediaCastMode::DEFAULT);
211 expected_sinks.back().cast_modes.insert(MediaCastMode::TAB_MIRROR); 209 expected_sinks.back().cast_modes.insert(MediaCastMode::TAB_MIRROR);
212 expected_sinks.push_back(MediaSinkWithCastModes(sink3)); 210 expected_sinks.push_back(MediaSinkWithCastModes(sink3));
213 expected_sinks.back().cast_modes.insert(MediaCastMode::DEFAULT); 211 expected_sinks.back().cast_modes.insert(MediaCastMode::DEFAULT);
214 expected_sinks.back().cast_modes.insert(MediaCastMode::TAB_MIRROR); 212 expected_sinks.back().cast_modes.insert(MediaCastMode::TAB_MIRROR);
215 expected_sinks.push_back(MediaSinkWithCastModes(sink4)); 213 expected_sinks.push_back(MediaSinkWithCastModes(sink4));
216 expected_sinks.back().cast_modes.insert(MediaCastMode::TAB_MIRROR); 214 expected_sinks.back().cast_modes.insert(MediaCastMode::TAB_MIRROR);
217 215
218 sinks_query_result.clear(); 216 sinks_query_result.clear();
219 sinks_query_result.push_back(sink2); 217 sinks_query_result.push_back(sink2);
220 sinks_query_result.push_back(sink3); 218 sinks_query_result.push_back(sink3);
221 sinks_query_result.push_back(sink4); 219 sinks_query_result.push_back(sink4);
222 220
223 sinks_observer_it = sinks_observers.find(tab_source); 221 sinks_observer_it = sinks_observers.find(tab_source);
224 ASSERT_TRUE(sinks_observer_it != sinks_observers.end()); 222 ASSERT_TRUE(sinks_observer_it != sinks_observers.end());
225 ASSERT_TRUE(sinks_observer_it->second.get()); 223 ASSERT_TRUE(sinks_observer_it->second.get());
226 EXPECT_CALL(mock_observer_, 224 EXPECT_CALL(mock_observer_,
227 OnResultsUpdated(VectorEquals(expected_sinks))).Times(1); 225 OnResultsUpdated(VectorEquals(expected_sinks))).Times(1);
228 sinks_observer_it->second->OnSinksUpdated(sinks_query_result, 226 sinks_observer_it->second->OnSinksUpdated(sinks_query_result,
229 {GURL(kOrigin)}); 227 {url::Origin(GURL(kOrigin))});
230 228
231 // Action: Update default presentation URL 229 // Action: Update default presentation URL
232 // Expected result: 230 // Expected result:
233 // Sinks: [2 -> {TAB_MIRROR}, 3 -> {TAB_MIRROR}, 4 -> {TAB_MIRROR}] 231 // Sinks: [2 -> {TAB_MIRROR}, 3 -> {TAB_MIRROR}, 4 -> {TAB_MIRROR}]
234 expected_sinks.clear(); 232 expected_sinks.clear();
235 expected_sinks.push_back(MediaSinkWithCastModes(sink2)); 233 expected_sinks.push_back(MediaSinkWithCastModes(sink2));
236 expected_sinks.back().cast_modes.insert(MediaCastMode::TAB_MIRROR); 234 expected_sinks.back().cast_modes.insert(MediaCastMode::TAB_MIRROR);
237 expected_sinks.push_back(MediaSinkWithCastModes(sink3)); 235 expected_sinks.push_back(MediaSinkWithCastModes(sink3));
238 expected_sinks.back().cast_modes.insert(MediaCastMode::TAB_MIRROR); 236 expected_sinks.back().cast_modes.insert(MediaCastMode::TAB_MIRROR);
239 expected_sinks.push_back(MediaSinkWithCastModes(sink4)); 237 expected_sinks.push_back(MediaSinkWithCastModes(sink4));
240 expected_sinks.back().cast_modes.insert(MediaCastMode::TAB_MIRROR); 238 expected_sinks.back().cast_modes.insert(MediaCastMode::TAB_MIRROR);
241 239
242 // The observer for the old source will be unregistered. 240 // The observer for the old source will be unregistered.
243 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)).Times(1); 241 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)).Times(1);
244 // The observer for the new source will be registered. 242 // The observer for the new source will be registered.
245 EXPECT_CALL(mock_router_, RegisterMediaSinksObserver(_)) 243 EXPECT_CALL(mock_router_, RegisterMediaSinksObserver(_))
246 .WillOnce(Return(true)); 244 .WillOnce(Return(true));
247 EXPECT_CALL(mock_observer_, 245 EXPECT_CALL(mock_observer_,
248 OnResultsUpdated(VectorEquals(expected_sinks))).Times(1); 246 OnResultsUpdated(VectorEquals(expected_sinks))).Times(1);
249 query_result_manager_.SetSourcesForCastMode(MediaCastMode::DEFAULT, 247 query_result_manager_.SetSourcesForCastMode(
250 {default_source2}, origin); 248 MediaCastMode::DEFAULT, {default_source2}, url::Origin(GURL(kOrigin)));
251 249
252 // Action: DEFAULT -> [1], origins don't match 250 // Action: DEFAULT -> [1], origins don't match
253 // Expected result: [2 -> {TAB_MIRROR}, 3 -> {TAB_MIRROR}, 4 -> {TAB_MIRROR}] 251 // Expected result: [2 -> {TAB_MIRROR}, 3 -> {TAB_MIRROR}, 4 -> {TAB_MIRROR}]
254 // (No change) 252 // (No change)
255 sinks_query_result.clear(); 253 sinks_query_result.clear();
256 sinks_query_result.push_back(sink1); 254 sinks_query_result.push_back(sink1);
257 sinks_observer_it = sinks_observers.find(default_source2); 255 sinks_observer_it = sinks_observers.find(default_source2);
258 ASSERT_TRUE(sinks_observer_it != sinks_observers.end()); 256 ASSERT_TRUE(sinks_observer_it != sinks_observers.end());
259 ASSERT_TRUE(sinks_observer_it->second.get()); 257 ASSERT_TRUE(sinks_observer_it->second.get());
260 EXPECT_CALL(mock_observer_, OnResultsUpdated(VectorEquals(expected_sinks))) 258 EXPECT_CALL(mock_observer_, OnResultsUpdated(VectorEquals(expected_sinks)))
261 .Times(1); 259 .Times(1);
262 sinks_observer_it->second->OnSinksUpdated( 260 sinks_observer_it->second->OnSinksUpdated(
263 sinks_query_result, {GURL("https://differentOrigin.com")}); 261 sinks_query_result, {url::Origin(GURL("https://differentOrigin.com"))});
264 262
265 // Action: Remove TAB_MIRROR observer 263 // Action: Remove TAB_MIRROR observer
266 // Expected result: 264 // Expected result:
267 // Sinks: [] 265 // Sinks: []
268 expected_sinks.clear(); 266 expected_sinks.clear();
269 EXPECT_CALL(mock_observer_, 267 EXPECT_CALL(mock_observer_,
270 OnResultsUpdated(VectorEquals(expected_sinks))).Times(1); 268 OnResultsUpdated(VectorEquals(expected_sinks))).Times(1);
271 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)).Times(1); 269 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)).Times(1);
272 query_result_manager_.RemoveSourcesForCastMode(MediaCastMode::TAB_MIRROR); 270 query_result_manager_.RemoveSourcesForCastMode(MediaCastMode::TAB_MIRROR);
273 271
(...skipping 10 matching lines...) Expand all
284 MediaSourceForPresentationUrl(GURL("http://urlA.com"))); 282 MediaSourceForPresentationUrl(GURL("http://urlA.com")));
285 const MediaSource source_b( 283 const MediaSource source_b(
286 MediaSourceForPresentationUrl(GURL("http://urlB.com"))); 284 MediaSourceForPresentationUrl(GURL("http://urlB.com")));
287 const MediaSource source_c( 285 const MediaSource source_c(
288 MediaSourceForPresentationUrl(GURL("http://urlC.com"))); 286 MediaSourceForPresentationUrl(GURL("http://urlC.com")));
289 const MediaSource source_tab(MediaSourceForTab(1)); 287 const MediaSource source_tab(MediaSourceForTab(1));
290 // The sources are in decreasing order of priority. 288 // The sources are in decreasing order of priority.
291 const std::vector<MediaSource> default_sources = {source_a, source_b, 289 const std::vector<MediaSource> default_sources = {source_a, source_b,
292 source_c}; 290 source_c};
293 const std::vector<MediaSource> tab_sources = {source_tab}; 291 const std::vector<MediaSource> tab_sources = {source_tab};
294 const GURL origin(kOrigin);
295 const auto& sinks_observers = query_result_manager_.sinks_observers_; 292 const auto& sinks_observers = query_result_manager_.sinks_observers_;
296 293
297 // There should be one MediaSinksObserver per source. 294 // There should be one MediaSinksObserver per source.
298 EXPECT_CALL(mock_router_, RegisterMediaSinksObserver(_)) 295 EXPECT_CALL(mock_router_, RegisterMediaSinksObserver(_))
299 .Times(4) 296 .Times(4)
300 .WillRepeatedly(Return(true)); 297 .WillRepeatedly(Return(true));
301 query_result_manager_.SetSourcesForCastMode(MediaCastMode::DEFAULT, 298 query_result_manager_.SetSourcesForCastMode(
302 default_sources, origin); 299 MediaCastMode::DEFAULT, default_sources, url::Origin(GURL(kOrigin)));
303 query_result_manager_.SetSourcesForCastMode(MediaCastMode::TAB_MIRROR, 300 query_result_manager_.SetSourcesForCastMode(
304 tab_sources, origin); 301 MediaCastMode::TAB_MIRROR, tab_sources, url::Origin(GURL(kOrigin)));
305 302
306 // Scenario (results in this order): 303 // Scenario (results in this order):
307 // Action: URL_B -> [2, 4] 304 // Action: URL_B -> [2, 4]
308 // Expected result: 305 // Expected result:
309 // Sinks: [1 -> {}, 306 // Sinks: [1 -> {},
310 // 2 -> {URL_B}, 307 // 2 -> {URL_B},
311 // 3 -> {}, 308 // 3 -> {},
312 // 4 -> {URL_B}] 309 // 4 -> {URL_B}]
313 auto sinks_observer_it = sinks_observers.find(source_b); 310 auto sinks_observer_it = sinks_observers.find(source_b);
314 ASSERT_TRUE(sinks_observer_it != sinks_observers.end()); 311 ASSERT_TRUE(sinks_observer_it != sinks_observers.end());
315 ASSERT_TRUE(sinks_observer_it->second.get()); 312 ASSERT_TRUE(sinks_observer_it->second.get());
316 313
317 auto& source_b_observer = sinks_observer_it->second; 314 auto& source_b_observer = sinks_observer_it->second;
318 source_b_observer->OnSinksUpdated({sink2, sink4}, std::vector<GURL>()); 315 source_b_observer->OnSinksUpdated({sink2, sink4}, std::vector<url::Origin>());
319 EXPECT_TRUE(IsDefaultSourceForSink(nullptr, sink1)); 316 EXPECT_TRUE(IsDefaultSourceForSink(nullptr, sink1));
320 EXPECT_TRUE(IsDefaultSourceForSink(&source_b, sink2)); 317 EXPECT_TRUE(IsDefaultSourceForSink(&source_b, sink2));
321 EXPECT_TRUE(IsDefaultSourceForSink(nullptr, sink3)); 318 EXPECT_TRUE(IsDefaultSourceForSink(nullptr, sink3));
322 EXPECT_TRUE(IsDefaultSourceForSink(&source_b, sink4)); 319 EXPECT_TRUE(IsDefaultSourceForSink(&source_b, sink4));
323 320
324 // Action: URL_C -> [1, 2, 3] 321 // Action: URL_C -> [1, 2, 3]
325 // Expected result: 322 // Expected result:
326 // Sinks: [1 -> {URL_C}, 323 // Sinks: [1 -> {URL_C},
327 // 2 -> {URL_B, URL_C}, 324 // 2 -> {URL_B, URL_C},
328 // 3 -> {URL_C}, 325 // 3 -> {URL_C},
329 // 4 -> {URL_B}] 326 // 4 -> {URL_B}]
330 sinks_observer_it = sinks_observers.find(source_c); 327 sinks_observer_it = sinks_observers.find(source_c);
331 ASSERT_TRUE(sinks_observer_it != sinks_observers.end()); 328 ASSERT_TRUE(sinks_observer_it != sinks_observers.end());
332 ASSERT_TRUE(sinks_observer_it->second.get()); 329 ASSERT_TRUE(sinks_observer_it->second.get());
333 330
334 auto& source_c_observer = sinks_observer_it->second; 331 auto& source_c_observer = sinks_observer_it->second;
335 source_c_observer->OnSinksUpdated({sink1, sink2, sink3}, std::vector<GURL>()); 332 source_c_observer->OnSinksUpdated({sink1, sink2, sink3},
333 std::vector<url::Origin>());
336 EXPECT_TRUE(IsDefaultSourceForSink(&source_c, sink1)); 334 EXPECT_TRUE(IsDefaultSourceForSink(&source_c, sink1));
337 EXPECT_TRUE(IsDefaultSourceForSink(&source_b, sink2)); 335 EXPECT_TRUE(IsDefaultSourceForSink(&source_b, sink2));
338 EXPECT_TRUE(IsDefaultSourceForSink(&source_c, sink3)); 336 EXPECT_TRUE(IsDefaultSourceForSink(&source_c, sink3));
339 EXPECT_TRUE(IsDefaultSourceForSink(&source_b, sink4)); 337 EXPECT_TRUE(IsDefaultSourceForSink(&source_b, sink4));
340 338
341 // Action: URL_A -> [2, 3, 4] 339 // Action: URL_A -> [2, 3, 4]
342 // Expected result: 340 // Expected result:
343 // Sinks: [1 -> {URL_C}, 341 // Sinks: [1 -> {URL_C},
344 // 2 -> {URL_A, URL_B, URL_C}, 342 // 2 -> {URL_A, URL_B, URL_C},
345 // 3 -> {URL_A, URL_C}, 343 // 3 -> {URL_A, URL_C},
346 // 4 -> {URL_A, URL_B}] 344 // 4 -> {URL_A, URL_B}]
347 sinks_observer_it = sinks_observers.find(source_a); 345 sinks_observer_it = sinks_observers.find(source_a);
348 ASSERT_TRUE(sinks_observer_it != sinks_observers.end()); 346 ASSERT_TRUE(sinks_observer_it != sinks_observers.end());
349 ASSERT_TRUE(sinks_observer_it->second.get()); 347 ASSERT_TRUE(sinks_observer_it->second.get());
350 348
351 auto& source_a_observer = sinks_observer_it->second; 349 auto& source_a_observer = sinks_observer_it->second;
352 source_a_observer->OnSinksUpdated({sink2, sink3, sink4}, std::vector<GURL>()); 350 source_a_observer->OnSinksUpdated({sink2, sink3, sink4},
351 std::vector<url::Origin>());
353 EXPECT_TRUE(IsDefaultSourceForSink(&source_c, sink1)); 352 EXPECT_TRUE(IsDefaultSourceForSink(&source_c, sink1));
354 EXPECT_TRUE(IsDefaultSourceForSink(&source_a, sink2)); 353 EXPECT_TRUE(IsDefaultSourceForSink(&source_a, sink2));
355 EXPECT_TRUE(IsDefaultSourceForSink(&source_a, sink3)); 354 EXPECT_TRUE(IsDefaultSourceForSink(&source_a, sink3));
356 EXPECT_TRUE(IsDefaultSourceForSink(&source_a, sink4)); 355 EXPECT_TRUE(IsDefaultSourceForSink(&source_a, sink4));
357 356
358 // Action: TAB -> [1, 2] 357 // Action: TAB -> [1, 2]
359 // Expected result: 358 // Expected result:
360 // Sinks: [1 -> {URL_C, TAB}, 359 // Sinks: [1 -> {URL_C, TAB},
361 // 2 -> {URL_A, URL_B, URL_C, TAB}, 360 // 2 -> {URL_A, URL_B, URL_C, TAB},
362 // 3 -> {URL_A, URL_C}, 361 // 3 -> {URL_A, URL_C},
363 // 4 -> {URL_A, URL_B}] 362 // 4 -> {URL_A, URL_B}]
364 sinks_observer_it = sinks_observers.find(source_tab); 363 sinks_observer_it = sinks_observers.find(source_tab);
365 ASSERT_TRUE(sinks_observer_it != sinks_observers.end()); 364 ASSERT_TRUE(sinks_observer_it != sinks_observers.end());
366 ASSERT_TRUE(sinks_observer_it->second.get()); 365 ASSERT_TRUE(sinks_observer_it->second.get());
367 366
368 auto& source_tab_observer = sinks_observer_it->second; 367 auto& source_tab_observer = sinks_observer_it->second;
369 source_tab_observer->OnSinksUpdated({sink1, sink2}, std::vector<GURL>()); 368 source_tab_observer->OnSinksUpdated({sink1, sink2},
369 std::vector<url::Origin>());
370 EXPECT_TRUE(IsDefaultSourceForSink(&source_c, sink1)); 370 EXPECT_TRUE(IsDefaultSourceForSink(&source_c, sink1));
371 EXPECT_TRUE(IsDefaultSourceForSink(&source_a, sink2)); 371 EXPECT_TRUE(IsDefaultSourceForSink(&source_a, sink2));
372 EXPECT_TRUE(IsDefaultSourceForSink(&source_a, sink3)); 372 EXPECT_TRUE(IsDefaultSourceForSink(&source_a, sink3));
373 EXPECT_TRUE(IsDefaultSourceForSink(&source_a, sink4)); 373 EXPECT_TRUE(IsDefaultSourceForSink(&source_a, sink4));
374 EXPECT_TRUE(IsTabSourceForSink(&source_tab, sink1)); 374 EXPECT_TRUE(IsTabSourceForSink(&source_tab, sink1));
375 EXPECT_TRUE(IsTabSourceForSink(&source_tab, sink2)); 375 EXPECT_TRUE(IsTabSourceForSink(&source_tab, sink2));
376 EXPECT_TRUE(IsTabSourceForSink(nullptr, sink3)); 376 EXPECT_TRUE(IsTabSourceForSink(nullptr, sink3));
377 EXPECT_TRUE(IsTabSourceForSink(nullptr, sink4)); 377 EXPECT_TRUE(IsTabSourceForSink(nullptr, sink4));
378 378
379 // The observers for the four sources should get unregistered. 379 // The observers for the four sources should get unregistered.
380 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)).Times(4); 380 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)).Times(4);
381 query_result_manager_.RemoveSourcesForCastMode(MediaCastMode::DEFAULT); 381 query_result_manager_.RemoveSourcesForCastMode(MediaCastMode::DEFAULT);
382 query_result_manager_.RemoveSourcesForCastMode(MediaCastMode::TAB_MIRROR); 382 query_result_manager_.RemoveSourcesForCastMode(MediaCastMode::TAB_MIRROR);
383 } 383 }
384 384
385 TEST_F(QueryResultManagerTest, AddInvalidSource) { 385 TEST_F(QueryResultManagerTest, AddInvalidSource) {
386 const MediaSource source( 386 const MediaSource source(
387 MediaSourceForPresentationUrl(GURL("http://url.com"))); 387 MediaSourceForPresentationUrl(GURL("http://url.com")));
388 const GURL origin(kOrigin);
389 388
390 EXPECT_CALL(mock_router_, RegisterMediaSinksObserver(_)) 389 EXPECT_CALL(mock_router_, RegisterMediaSinksObserver(_))
391 .Times(1) 390 .Times(1)
392 .WillRepeatedly(Return(true)); 391 .WillRepeatedly(Return(true));
393 query_result_manager_.SetSourcesForCastMode(MediaCastMode::DEFAULT, {source}, 392 query_result_manager_.SetSourcesForCastMode(MediaCastMode::DEFAULT, {source},
394 origin); 393 url::Origin(GURL(kOrigin)));
395 // |source| has already been registered with the default cast mode, so it 394 // |source| has already been registered with the default cast mode, so it
396 // shouldn't get registered with tab mirroring. 395 // shouldn't get registered with tab mirroring.
397 query_result_manager_.SetSourcesForCastMode(MediaCastMode::TAB_MIRROR, 396 query_result_manager_.SetSourcesForCastMode(
398 {source}, origin); 397 MediaCastMode::TAB_MIRROR, {source}, url::Origin(GURL(kOrigin)));
399 398
400 const auto& cast_mode_sources = query_result_manager_.cast_mode_sources_; 399 const auto& cast_mode_sources = query_result_manager_.cast_mode_sources_;
401 const auto& default_sources = cast_mode_sources.at(MediaCastMode::DEFAULT); 400 const auto& default_sources = cast_mode_sources.at(MediaCastMode::DEFAULT);
402 EXPECT_TRUE(base::ContainsKey(cast_mode_sources, MediaCastMode::DEFAULT)); 401 EXPECT_TRUE(base::ContainsKey(cast_mode_sources, MediaCastMode::DEFAULT));
403 EXPECT_EQ(default_sources.size(), 1u); 402 EXPECT_EQ(default_sources.size(), 1u);
404 EXPECT_EQ(default_sources.at(0), source); 403 EXPECT_EQ(default_sources.at(0), source);
405 EXPECT_FALSE(base::ContainsKey(cast_mode_sources, MediaCastMode::TAB_MIRROR)); 404 EXPECT_FALSE(base::ContainsKey(cast_mode_sources, MediaCastMode::TAB_MIRROR));
406 } 405 }
407 406
408 } // namespace media_router 407 } // namespace media_router
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/media_router/query_result_manager.cc ('k') | chrome/test/media_router/media_router_e2e_browsertest.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698