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

Side by Side Diff: chrome/test/data/webui/media_router/media_router_container_search_tests.js

Issue 1962643005: [Media Router WebUI] Fix search input positioning when list scrolls. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: CSS attribute instead of JS binding Created 4 years, 7 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
« no previous file with comments | « chrome/browser/resources/media_router/elements/media_router_container/media_router_container.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 /** @fileoverview Suite of tests for media-router-container that focus on 5 /** @fileoverview Suite of tests for media-router-container that focus on
6 * the MRPM search feature. 6 * the MRPM search feature.
7 */ 7 */
8 cr.define('media_router_container_search', function() { 8 cr.define('media_router_container_search', function() {
9 function registerTests() { 9 function registerTests() {
10 suite('MediaRouterContainerSearch', function() { 10 suite('MediaRouterContainerSearch', function() {
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 }); 160 });
161 161
162 test('pseudo sink hidden without filter input', function(done) { 162 test('pseudo sink hidden without filter input', function(done) {
163 container.allSinks = fakeSinkListWithPseudoSink; 163 container.allSinks = fakeSinkListWithPseudoSink;
164 164
165 setTimeout(function() { 165 setTimeout(function() {
166 var sinkList = 166 var sinkList =
167 container.$$('#sink-list').querySelectorAll('paper-item'); 167 container.$$('#sink-list').querySelectorAll('paper-item');
168 assertEquals(fakeSinkList.length, sinkList.length); 168 assertEquals(fakeSinkList.length, sinkList.length);
169 MockInteractions.tap(container.$['sink-search-icon']); 169 MockInteractions.tap(container.$['sink-search-icon']);
170 setTimeout(function() { 170 chainOnAnimationPromise(function() {
171 var searchResults = 171 var searchResults =
172 container.$$('#search-results').querySelectorAll('paper-item'); 172 container.$$('#search-results').querySelectorAll('paper-item');
173 assertEquals(fakeSinkList.length, searchResults.length); 173 assertEquals(fakeSinkList.length, searchResults.length);
174 done(); 174 done();
175 }); 175 });
176 }); 176 });
177 }); 177 });
178 178
179 test('filter input adds pseudo sink', function(done) { 179 test('filter input adds pseudo sink', function(done) {
180 container.allSinks = fakeSinkListWithPseudoSink; 180 container.allSinks = fakeSinkListWithPseudoSink;
181 181
182 var searchInput = container.$['sink-search-input']; 182 var searchInput = container.$['sink-search-input'];
183 searchInput.value = 'no existing sink'; 183 searchInput.value = 'no existing sink';
184 setTimeout(function() { 184 chainOnAnimationPromise(function() {
185 var searchResults = 185 var searchResults =
186 container.$$('#search-results').querySelectorAll('paper-item'); 186 container.$$('#search-results').querySelectorAll('paper-item');
187 assertEquals(1, searchResults.length); 187 assertEquals(1, searchResults.length);
188 var item = 188 var item =
189 container.$$('#searchResults').itemForElement(searchResults[0]); 189 container.$$('#searchResults').itemForElement(searchResults[0]);
190 assertEquals(pseudoSink.id, item.sinkItem.id); 190 assertEquals(pseudoSink.id, item.sinkItem.id);
191 done(); 191 done();
192 }); 192 });
193 }); 193 });
194 194
195 test('filter exact match real sink hides pseudo sink', function(done) { 195 test('filter exact match real sink hides pseudo sink', function(done) {
196 container.allSinks = fakeSinkListWithPseudoSink; 196 container.allSinks = fakeSinkListWithPseudoSink;
197 197
198 var searchInput = container.$['sink-search-input']; 198 var searchInput = container.$['sink-search-input'];
199 searchInput.value = fakeSinkList[0].name; 199 searchInput.value = fakeSinkList[0].name;
200 setTimeout(function() { 200 chainOnAnimationPromise(function() {
201 var searchResults = 201 var searchResults =
202 container.$$('#search-results').querySelectorAll('paper-item'); 202 container.$$('#search-results').querySelectorAll('paper-item');
203 assertEquals(1, searchResults.length); 203 assertEquals(1, searchResults.length);
204 var item = 204 var item =
205 container.$$('#searchResults').itemForElement(searchResults[0]); 205 container.$$('#searchResults').itemForElement(searchResults[0]);
206 assertEquals(fakeSinkList[0].id, item.sinkItem.id); 206 assertEquals(fakeSinkList[0].id, item.sinkItem.id);
207 done(); 207 done();
208 }); 208 });
209 }); 209 });
210 210
211 test('clicking pseudo sink starts search', function(done) { 211 test('clicking pseudo sink starts search', function(done) {
212 container.allSinks = fakeSinkListWithPseudoSink; 212 container.allSinks = fakeSinkListWithPseudoSink;
213 213
214 var searchInput = container.$['sink-search-input']; 214 var searchInput = container.$['sink-search-input'];
215 searchInput.value = 'no existing sink'; 215 searchInput.value = 'no existing sink';
216 setTimeout(function() { 216 chainOnAnimationPromise(function() {
217 var searchResults = 217 var searchResults =
218 container.$$('#search-results').querySelectorAll('paper-item'); 218 container.$$('#search-results').querySelectorAll('paper-item');
219 container.addEventListener( 219 container.addEventListener(
220 'search-sinks-and-create-route', function(data) { 220 'search-sinks-and-create-route', function(data) {
221 assertEquals(pseudoSink.id, data.detail.id); 221 assertEquals(pseudoSink.id, data.detail.id);
222 assertEquals(pseudoSink.name, data.detail.name); 222 assertEquals(pseudoSink.name, data.detail.name);
223 assertEquals(pseudoSink.domain, data.detail.domain); 223 assertEquals(pseudoSink.domain, data.detail.domain);
224 done(); 224 done();
225 }); 225 });
226 MockInteractions.tap(searchResults[0]); 226 MockInteractions.tap(searchResults[0]);
227 }); 227 });
228 }); 228 });
229 229
230 test('spinner starts on pseudo sink', function(done) { 230 test('spinner starts on pseudo sink', function(done) {
231 container.allSinks = fakeSinkListWithPseudoSink; 231 container.allSinks = fakeSinkListWithPseudoSink;
232 232
233 var searchInput = container.$['sink-search-input']; 233 var searchInput = container.$['sink-search-input'];
234 searchInput.value = foundSink.name; 234 searchInput.value = foundSink.name;
235 setTimeout(function() { 235 chainOnAnimationPromise(function() {
236 var searchResults = 236 var searchResults =
237 container.$$('#search-results').querySelectorAll('paper-item'); 237 container.$$('#search-results').querySelectorAll('paper-item');
238 MockInteractions.tap(searchResults[0]); 238 MockInteractions.tap(searchResults[0]);
239 setTimeout(function() { 239 setTimeout(function() {
240 searchResults = 240 searchResults =
241 container.$$('#search-results').querySelectorAll('paper-item'); 241 container.$$('#search-results').querySelectorAll('paper-item');
242 assertEquals(1, searchResults.length); 242 assertEquals(1, searchResults.length);
243 checkSpinningSinkInFilter(pseudoSink); 243 checkSpinningSinkInFilter(pseudoSink);
244 244
245 searchInput.value = foundSink.name[0]; 245 searchInput.value = foundSink.name[0];
246 setTimeout(function() { 246 setTimeout(function() {
247 checkSpinningSinkInFilter(pseudoSink); 247 checkSpinningSinkInFilter(pseudoSink);
248 248
249 searchInput.value = ''; 249 searchInput.value = '';
250 setTimeout(function() { 250 setTimeout(function() {
251 checkSpinningSinkInFilter(pseudoSink); 251 checkSpinningSinkInFilter(pseudoSink);
252 done(); 252 done();
253 }); 253 });
254 }); 254 });
255 }); 255 });
256 }); 256 });
257 }); 257 });
258 258
259 test('pseudo sink shown in sink list before real sink', function(done) { 259 test('pseudo sink shown in sink list before real sink', function(done) {
260 container.allSinks = fakeSinkListWithPseudoSink; 260 container.allSinks = fakeSinkListWithPseudoSink;
261 261
262 var searchInput = container.$['sink-search-input']; 262 var searchInput = container.$['sink-search-input'];
263 searchInput.value = foundSink.name; 263 searchInput.value = foundSink.name;
264 setTimeout(function() { 264 chainOnAnimationPromise(function() {
265 var searchResults = 265 var searchResults =
266 container.$$('#search-results').querySelectorAll('paper-item'); 266 container.$$('#search-results').querySelectorAll('paper-item');
267 MockInteractions.tap(searchResults[0]); 267 MockInteractions.tap(searchResults[0]);
268 MockInteractions.tap( 268 MockInteractions.tap(
269 container.$['container-header'].$$('#back-button')); 269 container.$['container-header'].$$('#back-button'));
270 setTimeout(function() { 270 chainOnAnimationPromise(function() {
271 checkCurrentView(media_router.MediaRouterView.SINK_LIST); 271 checkCurrentView(media_router.MediaRouterView.SINK_LIST);
272 checkSpinningSinkInSinkList( 272 checkSpinningSinkInSinkList(
273 pseudoSink, fakeSinkListWithPseudoSink.length); 273 pseudoSink, fakeSinkListWithPseudoSink.length);
274 done(); 274 done();
275 }); 275 });
276 }); 276 });
277 }); 277 });
278 278
279 test('onReceiveSearchResult updates spinner', function(done) { 279 test('onReceiveSearchResult updates spinner', function(done) {
280 container.allSinks = fakeSinkListWithPseudoSink; 280 container.allSinks = fakeSinkListWithPseudoSink;
281 281
282 var searchInput = container.$['sink-search-input']; 282 var searchInput = container.$['sink-search-input'];
283 searchInput.value = foundSink.name; 283 searchInput.value = foundSink.name;
284 setTimeout(function() { 284 chainOnAnimationPromise(function() {
285 var searchResults = 285 var searchResults =
286 container.$$('#search-results').querySelectorAll('paper-item'); 286 container.$$('#search-results').querySelectorAll('paper-item');
287 MockInteractions.tap(searchResults[0]); 287 MockInteractions.tap(searchResults[0]);
288 container.allSinks = fakeSinkListWithPseudoSink.concat([foundSink]); 288 container.allSinks = fakeSinkListWithPseudoSink.concat([foundSink]);
289 container.onReceiveSearchResult(foundSink.id); 289 container.onReceiveSearchResult(foundSink.id);
290 setTimeout(function() { 290 setTimeout(function() {
291 searchResults = 291 searchResults =
292 container.$$('#search-results').querySelectorAll('paper-item'); 292 container.$$('#search-results').querySelectorAll('paper-item');
293 assertEquals(1, searchResults.length); 293 assertEquals(1, searchResults.length);
294 checkSpinningSinkInFilter(foundSink); 294 checkSpinningSinkInFilter(foundSink);
295 done(); 295 done();
296 }); 296 });
297 }); 297 });
298 }); 298 });
299 299
300 test('sink list updates spinner', function(done) { 300 test('sink list updates spinner', function(done) {
301 container.allSinks = fakeSinkListWithPseudoSink; 301 container.allSinks = fakeSinkListWithPseudoSink;
302 302
303 var searchInput = container.$['sink-search-input']; 303 var searchInput = container.$['sink-search-input'];
304 searchInput.value = foundSink.name; 304 searchInput.value = foundSink.name;
305 setTimeout(function() { 305 chainOnAnimationPromise(function() {
306 var searchResults = 306 var searchResults =
307 container.$$('#search-results').querySelectorAll('paper-item'); 307 container.$$('#search-results').querySelectorAll('paper-item');
308 MockInteractions.tap(searchResults[0]); 308 MockInteractions.tap(searchResults[0]);
309 setTimeout(function() { 309 setTimeout(function() {
310 container.onReceiveSearchResult(foundSink.id); 310 container.onReceiveSearchResult(foundSink.id);
311 container.allSinks = fakeSinkListWithPseudoSink.concat([foundSink]); 311 container.allSinks = fakeSinkListWithPseudoSink.concat([foundSink]);
312 setTimeout(function() { 312 setTimeout(function() {
313 searchResults = container.$$('#search-results') 313 searchResults = container.$$('#search-results')
314 .querySelectorAll('paper-item'); 314 .querySelectorAll('paper-item');
315 assertEquals(1, searchResults.length); 315 assertEquals(1, searchResults.length);
316 checkSpinningSinkInFilter(foundSink); 316 checkSpinningSinkInFilter(foundSink);
317 done(); 317 done();
318 }); 318 });
319 }); 319 });
320 }); 320 });
321 }); 321 });
322 322
323 test('route received clears spinner and search state', function(done) { 323 test('route received clears spinner and search state', function(done) {
324 var route = new media_router.Route( 324 var route = new media_router.Route(
325 'id 1', foundSink.id, 'Title 1', 0, true, false); 325 'id 1', foundSink.id, 'Title 1', 0, true, false);
326 container.allSinks = fakeSinkListWithPseudoSink; 326 container.allSinks = fakeSinkListWithPseudoSink;
327 327
328 var searchInput = container.$['sink-search-input']; 328 var searchInput = container.$['sink-search-input'];
329 searchInput.value = foundSink.name; 329 searchInput.value = foundSink.name;
330 setTimeout(function() { 330 chainOnAnimationPromise(function() {
331 var searchResults = 331 var searchResults =
332 container.$$('#search-results').querySelectorAll('paper-item'); 332 container.$$('#search-results').querySelectorAll('paper-item');
333 MockInteractions.tap(searchResults[0]); 333 MockInteractions.tap(searchResults[0]);
334 container.allSinks = fakeSinkListWithPseudoSink.concat([foundSink]); 334 container.allSinks = fakeSinkListWithPseudoSink.concat([foundSink]);
335 container.onReceiveSearchResult(foundSink.id); 335 container.onReceiveSearchResult(foundSink.id);
336 container.onCreateRouteResponseReceived(foundSink.id, route, true); 336 container.onCreateRouteResponseReceived(foundSink.id, route, true);
337 assertEquals(null, container.pseudoSinkSearchState_); 337 assertEquals(null, container.pseudoSinkSearchState_);
338 setTimeout(function() { 338 setTimeout(function() {
339 checkCurrentView(media_router.MediaRouterView.ROUTE_DETAILS); 339 checkCurrentView(media_router.MediaRouterView.ROUTE_DETAILS);
340 MockInteractions.tap( 340 MockInteractions.tap(
341 container.$['container-header'].$$('#back-button')); 341 container.$['container-header'].$$('#back-button'));
342 setTimeout(function() { 342 chainOnAnimationPromise(function() {
343 checkCurrentView(media_router.MediaRouterView.SINK_LIST); 343 checkCurrentView(media_router.MediaRouterView.SINK_LIST);
344 sinkList = 344 sinkList =
345 container.$$('#sink-list').querySelectorAll('paper-item'); 345 container.$$('#sink-list').querySelectorAll('paper-item');
346 sinkList.forEach(function(sink) { 346 sinkList.forEach(function(sink) {
347 var spinner = sink.querySelector('paper-spinner'); 347 var spinner = sink.querySelector('paper-spinner');
348 checkElementVisible(spinner, false); 348 checkElementVisible(spinner, false);
349 }); 349 });
350 done(); 350 done();
351 }); 351 });
352 }); 352 });
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 }); 403 });
404 }); 404 });
405 }); 405 });
406 }); 406 });
407 407
408 test('route creation failure clears spinner and search', function(done) { 408 test('route creation failure clears spinner and search', function(done) {
409 container.allSinks = fakeSinkListWithPseudoSink; 409 container.allSinks = fakeSinkListWithPseudoSink;
410 410
411 var searchInput = container.$['sink-search-input']; 411 var searchInput = container.$['sink-search-input'];
412 searchInput.value = foundSink.name; 412 searchInput.value = foundSink.name;
413 setTimeout(function() { 413 chainOnAnimationPromise(function() {
414 var searchResults = 414 var searchResults =
415 container.$$('#search-results').querySelectorAll('paper-item'); 415 container.$$('#search-results').querySelectorAll('paper-item');
416 MockInteractions.tap(searchResults[0]); 416 MockInteractions.tap(searchResults[0]);
417 container.allSinks = fakeSinkListWithPseudoSink.concat([foundSink]); 417 container.allSinks = fakeSinkListWithPseudoSink.concat([foundSink]);
418 container.onReceiveSearchResult(foundSink.id); 418 container.onReceiveSearchResult(foundSink.id);
419 container.onCreateRouteResponseReceived(pseudoSink.id, null, true); 419 container.onCreateRouteResponseReceived(pseudoSink.id, null, true);
420 assertEquals(null, container.pseudoSinkSearchState_); 420 assertEquals(null, container.pseudoSinkSearchState_);
421 setTimeout(function() { 421 setTimeout(function() {
422 checkCurrentView(media_router.MediaRouterView.FILTER); 422 checkCurrentView(media_router.MediaRouterView.FILTER);
423 searchResults = 423 searchResults =
424 container.$$('#search-results').querySelectorAll('paper-item'); 424 container.$$('#search-results').querySelectorAll('paper-item');
425 searchResults.forEach(function(sink) { 425 searchResults.forEach(function(sink) {
426 var spinner = sink.querySelector('paper-spinner'); 426 var spinner = sink.querySelector('paper-spinner');
427 checkElementVisible(spinner, false); 427 checkElementVisible(spinner, false);
428 }); 428 });
429 done(); 429 done();
430 }); 430 });
431 }); 431 });
432 }); 432 });
433 433
434 test('pseudo sink with empty domain is not shown', function(done) { 434 test('pseudo sink with empty domain is not shown', function(done) {
435 pseudoSink.domain = ''; 435 pseudoSink.domain = '';
436 container.allSinks = fakeSinkListWithPseudoSink; 436 container.allSinks = fakeSinkListWithPseudoSink;
437 437
438 var searchInput = container.$['sink-search-input']; 438 var searchInput = container.$['sink-search-input'];
439 searchInput.value = foundSink.name; 439 searchInput.value = foundSink.name;
440 setTimeout(function() { 440 chainOnAnimationPromise(function() {
441 var noMatches = container.$$('#no-search-matches'); 441 var noMatches = container.$$('#no-search-matches');
442 var searchResults = container.$$('#search-results'); 442 var searchResults = container.$$('#search-results');
443 checkElementVisible(noMatches, true); 443 checkElementVisible(noMatches, true);
444 checkElementVisible(searchResults, false); 444 checkElementVisible(searchResults, false);
445 done(); 445 done();
446 }); 446 });
447 }); 447 });
448 448
449 test('pseudo sink search state launching sink id', function() { 449 test('pseudo sink search state launching sink id', function() {
450 var searchState = new PseudoSinkSearchState(pseudoSink); 450 var searchState = new PseudoSinkSearchState(pseudoSink);
(...skipping 11 matching lines...) Expand all
462 searchState.checkForRealSink(fakeSinkList.concat([foundSink]))); 462 searchState.checkForRealSink(fakeSinkList.concat([foundSink])));
463 assertEquals(foundSink.id, searchState.checkForRealSink(fakeSinkList)); 463 assertEquals(foundSink.id, searchState.checkForRealSink(fakeSinkList));
464 }); 464 });
465 }); 465 });
466 } 466 }
467 467
468 return { 468 return {
469 registerTests: registerTests, 469 registerTests: registerTests,
470 }; 470 };
471 }); 471 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/media_router/elements/media_router_container/media_router_container.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698