OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 }); |
OLD | NEW |