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

Side by Side Diff: chrome/test/data/webui/bluetooth_internals_browsertest.js

Issue 2567983007: bluetooth: Add adapter page to internals page. (Closed)
Patch Set: Merge upstream Created 3 years, 11 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 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 /** 5 /**
6 * @fileoverview Tests for chrome://bluetooth-internals 6 * @fileoverview Tests for chrome://bluetooth-internals
7 */ 7 */
8 8
9 /** @const {string} Path to source root. */ 9 /** @const {string} Path to source root. */
10 var ROOT_PATH = '../../../../'; 10 var ROOT_PATH = '../../../../';
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 fakeDeviceInfo3: function() { 212 fakeDeviceInfo3: function() {
213 return { 213 return {
214 address: "CC:CC:84:96:92:84", 214 address: "CC:CC:84:96:92:84",
215 name: "CCC", 215 name: "CCC",
216 name_for_display: "CCC", 216 name_for_display: "CCC",
217 }; 217 };
218 }, 218 },
219 }; 219 };
220 220
221 TEST_F('BluetoothInternalsTest', 'Startup_BluetoothInternals', function() { 221 TEST_F('BluetoothInternalsTest', 'Startup_BluetoothInternals', function() {
222 /** @const */ var PageManager = cr.ui.pageManager.PageManager;
223
222 var adapterFactory = null; 224 var adapterFactory = null;
225 var adapterFieldSet = null;
223 var deviceTable = null; 226 var deviceTable = null;
224 var sidebarNode = null; 227 var sidebarNode = null;
225 228
229 var fakeAdapterInfo = this.fakeAdapterInfo;
226 var fakeDeviceInfo1 = this.fakeDeviceInfo1; 230 var fakeDeviceInfo1 = this.fakeDeviceInfo1;
227 var fakeDeviceInfo2 = this.fakeDeviceInfo2; 231 var fakeDeviceInfo2 = this.fakeDeviceInfo2;
228 var fakeDeviceInfo3 = this.fakeDeviceInfo3; 232 var fakeDeviceInfo3 = this.fakeDeviceInfo3;
229 233
230 // Before tests are run, make sure setup completes. 234 // Before tests are run, make sure setup completes.
231 var setupPromise = this.setupResolver.promise.then(function() { 235 var setupPromise = this.setupResolver.promise.then(function() {
232 adapterFactory = this.adapterFactory; 236 adapterFactory = this.adapterFactory;
233 }.bind(this)); 237 }.bind(this));
234 238
235 suite('BluetoothInternalsUITest', function() { 239 suite('BluetoothInternalsUITest', function() {
236 var EXPECTED_DEVICES = 2; 240 var EXPECTED_DEVICES = 2;
237 241
238 suiteSetup(function() { 242 suiteSetup(function() {
239 return setupPromise.then(function() { 243 return setupPromise.then(function() {
240 return Promise.all([ 244 return Promise.all([
241 adapterFactory.whenCalled('getAdapter'), 245 adapterFactory.whenCalled('getAdapter'),
242 adapterFactory.adapter.proxy.whenCalled('getInfo'), 246 adapterFactory.adapter.proxy.whenCalled('getInfo'),
243 adapterFactory.adapter.proxy.whenCalled('getDevices'), 247 adapterFactory.adapter.proxy.whenCalled('getDevices'),
244 adapterFactory.adapter.proxy.whenCalled('setClient'), 248 adapterFactory.adapter.proxy.whenCalled('setClient'),
245 ]); 249 ]);
246 }); 250 });
247 }); 251 });
248 252
249 setup(function() { 253 setup(function() {
254 adapterFieldSet = document.querySelector('#adapter fieldset');
250 deviceTable = document.querySelector('#devices table'); 255 deviceTable = document.querySelector('#devices table');
251 sidebarNode = document.querySelector('#sidebar'); 256 sidebarNode = document.querySelector('#sidebar');
252 devices.splice(0, devices.length); 257 devices.splice(0, devices.length);
253 adapterBroker.adapterClient_.deviceAdded(fakeDeviceInfo1()); 258 adapterBroker.adapterClient_.deviceAdded(fakeDeviceInfo1());
254 adapterBroker.adapterClient_.deviceAdded(fakeDeviceInfo2()); 259 adapterBroker.adapterClient_.deviceAdded(fakeDeviceInfo2());
255 }); 260 });
256 261
257 teardown(function() { 262 teardown(function() {
258 adapterFactory.reset(); 263 adapterFactory.reset();
259 sidebarObj.close(); 264 sidebarObj.close();
260 snackbar.Snackbar.dismiss(true); 265 snackbar.Snackbar.dismiss(true);
266 PageManager.registeredPages['adapter'].setAdapterInfo(fakeAdapterInfo());
261 }); 267 });
262 268
263 /** 269 /**
264 * Updates device info and verifies the contents of the device table. 270 * Updates device info and verifies the contents of the device table.
265 * @param {!device_collection.DeviceInfo} deviceInfo 271 * @param {!device_collection.DeviceInfo} deviceInfo
266 */ 272 */
267 function changeDevice(deviceInfo) { 273 function changeDevice(deviceInfo) {
268 var deviceRow = deviceTable.querySelector('#' + escapeDeviceAddress( 274 var deviceRow = deviceTable.querySelector('#' + escapeDeviceAddress(
269 deviceInfo.address)); 275 deviceInfo.address));
270 var nameForDisplayColumn = deviceRow.children[0]; 276 var nameForDisplayColumn = deviceRow.children[0];
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 newDeviceInfo3.rssi = {value: -17}; 426 newDeviceInfo3.rssi = {value: -17};
421 adapterBroker.adapterClient_.deviceChanged(newDeviceInfo3); 427 adapterBroker.adapterClient_.deviceChanged(newDeviceInfo3);
422 expectEquals('-17', rssiColumn.textContent); 428 expectEquals('-17', rssiColumn.textContent);
423 }); 429 });
424 430
425 /* Sidebar Tests */ 431 /* Sidebar Tests */
426 test('Sidebar_Setup', function() { 432 test('Sidebar_Setup', function() {
427 var sidebarItems = Array.from( 433 var sidebarItems = Array.from(
428 sidebarNode.querySelectorAll('.sidebar-content li')); 434 sidebarNode.querySelectorAll('.sidebar-content li'));
429 435
430 ['devices'].forEach(function(pageName) { 436 ['adapter', 'devices'].forEach(function(pageName) {
431 expectTrue(sidebarItems.some(function(item) { 437 expectTrue(sidebarItems.some(function(item) {
432 return item.dataset.pageName === pageName; 438 return item.dataset.pageName === pageName;
433 })); 439 }));
434 }); 440 });
435 }); 441 });
436 442
437 test('Sidebar_DefaultState', function() { 443 test('Sidebar_DefaultState', function() {
438 // Sidebar should be closed by default. 444 // Sidebar should be closed by default.
439 expectFalse(sidebarNode.classList.contains('open')); 445 expectFalse(sidebarNode.classList.contains('open'));
440 }); 446 });
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
554 whenSnackbarShows(snackbar3).then(next); 560 whenSnackbarShows(snackbar3).then(next);
555 snackbar3.addEventListener('dismissed', next); 561 snackbar3.addEventListener('dismissed', next);
556 562
557 whenSnackbarShows(snackbar1).then(function() { 563 whenSnackbarShows(snackbar1).then(function() {
558 return snackbar.Snackbar.dismiss(true); 564 return snackbar.Snackbar.dismiss(true);
559 }).then(function() { 565 }).then(function() {
560 expectEquals(0, snackbar.Snackbar.queue_.length); 566 expectEquals(0, snackbar.Snackbar.queue_.length);
561 expectFalse(!!snackbar.Snackbar.current_); 567 expectFalse(!!snackbar.Snackbar.current_);
562 }).then(finishSnackbarTest); 568 }).then(finishSnackbarTest);
563 }); 569 });
570
571 /* AdapterPage Tests */
572 function checkAdapterFieldSet(adapterInfo) {
573 for (var propName in adapterInfo) {
574 var valueCell = adapterFieldSet.querySelector(
575 '[data-field="' + propName + '"]');
576 var value = adapterInfo[propName];
577
578 if (typeof(value) === 'boolean') {
579 expectEquals(value, valueCell.classList.contains('checked'));
580 } else if (typeof(value) === 'string') {
581 expectEquals(value, valueCell.textContent);
582 } else {
583 assert('boolean or string type expected but got ' + typeof(value));
584 }
585 }
586 }
587
588 test('AdapterPage_DefaultState', function() {
589 checkAdapterFieldSet(adapterFieldSet.value);
590 });
591
592 test('AdapterPage_AdapterChanged', function() {
593 var adapterInfo = adapterFieldSet.value;
594
595 adapterInfo.present = !adapterInfo.present;
596 adapterBroker.adapterClient_.presentChanged(adapterInfo.present);
597 checkAdapterFieldSet(adapterInfo);
598
599 adapterInfo.discovering = !adapterInfo.discovering;
600 adapterBroker.adapterClient_.discoveringChanged(adapterInfo.discovering);
601 checkAdapterFieldSet(adapterInfo);
602 });
603
604 test('AdapterPage_AdapterChanged_RepeatTwice', function() {
605 var adapterInfo = adapterFieldSet.value;
606
607 adapterInfo.present = !adapterInfo.present;
608 adapterBroker.adapterClient_.presentChanged(adapterInfo.present);
609 checkAdapterFieldSet(adapterInfo);
610 adapterBroker.adapterClient_.presentChanged(adapterInfo.present);
611 checkAdapterFieldSet(adapterInfo);
612
613 adapterInfo.discovering = !adapterInfo.discovering;
614 adapterBroker.adapterClient_.discoveringChanged(adapterInfo.discovering);
615 checkAdapterFieldSet(adapterInfo);
616 adapterBroker.adapterClient_.discoveringChanged(adapterInfo.discovering);
617 checkAdapterFieldSet(adapterInfo);
618 });
564 }); 619 });
565 620
566
567 // Run all registered tests. 621 // Run all registered tests.
568 mocha.run(); 622 mocha.run();
569 }); 623 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698