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

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

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