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 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 // Fails on Win/Mac. https://crbug.com/676227 | 221 // Fails on Win/Mac. https://crbug.com/676227 |
222 GEN('#if defined(OS_MACOSX) || defined(OS_WIN)'); | 222 GEN('#if defined(OS_MACOSX) || defined(OS_WIN)'); |
223 GEN('#define MAYBE_Startup_BluetoothInternals \\'); | 223 GEN('#define MAYBE_Startup_BluetoothInternals \\'); |
224 GEN(' DISABLED_Startup_BluetoothInternals'); | 224 GEN(' DISABLED_Startup_BluetoothInternals'); |
225 GEN('#else'); | 225 GEN('#else'); |
226 GEN('#define MAYBE_Startup_BluetoothInternals Startup_BluetoothInternals'); | 226 GEN('#define MAYBE_Startup_BluetoothInternals Startup_BluetoothInternals'); |
227 GEN('#endif'); | 227 GEN('#endif'); |
228 | 228 |
229 TEST_F('BluetoothInternalsTest', | 229 TEST_F('BluetoothInternalsTest', |
230 'MAYBE_Startup_BluetoothInternals', function() { | 230 'MAYBE_Startup_BluetoothInternals', function() { |
| 231 /** @const */ var PageManager = cr.ui.pageManager.PageManager; |
| 232 |
231 var adapterFactory = null; | 233 var adapterFactory = null; |
| 234 var adapterFieldSet = null; |
232 var deviceTable = null; | 235 var deviceTable = null; |
233 var sidebarNode = null; | 236 var sidebarNode = null; |
234 | 237 |
| 238 var fakeAdapterInfo = this.fakeAdapterInfo; |
235 var fakeDeviceInfo1 = this.fakeDeviceInfo1; | 239 var fakeDeviceInfo1 = this.fakeDeviceInfo1; |
236 var fakeDeviceInfo2 = this.fakeDeviceInfo2; | 240 var fakeDeviceInfo2 = this.fakeDeviceInfo2; |
237 var fakeDeviceInfo3 = this.fakeDeviceInfo3; | 241 var fakeDeviceInfo3 = this.fakeDeviceInfo3; |
238 | 242 |
239 // Before tests are run, make sure setup completes. | 243 // Before tests are run, make sure setup completes. |
240 var setupPromise = this.setupResolver.promise.then(function() { | 244 var setupPromise = this.setupResolver.promise.then(function() { |
241 adapterFactory = this.adapterFactory; | 245 adapterFactory = this.adapterFactory; |
242 }.bind(this)); | 246 }.bind(this)); |
243 | 247 |
244 suite('BluetoothInternalsUITest', function() { | 248 suite('BluetoothInternalsUITest', function() { |
245 var EXPECTED_DEVICES = 2; | 249 var EXPECTED_DEVICES = 2; |
246 | 250 |
247 suiteSetup(function() { | 251 suiteSetup(function() { |
248 return setupPromise.then(function() { | 252 return setupPromise.then(function() { |
249 return Promise.all([ | 253 return Promise.all([ |
250 adapterFactory.whenCalled('getAdapter'), | 254 adapterFactory.whenCalled('getAdapter'), |
251 adapterFactory.adapter.proxy.whenCalled('getInfo'), | 255 adapterFactory.adapter.proxy.whenCalled('getInfo'), |
252 adapterFactory.adapter.proxy.whenCalled('getDevices'), | 256 adapterFactory.adapter.proxy.whenCalled('getDevices'), |
253 adapterFactory.adapter.proxy.whenCalled('setClient'), | 257 adapterFactory.adapter.proxy.whenCalled('setClient'), |
254 ]); | 258 ]); |
255 }); | 259 }); |
256 }); | 260 }); |
257 | 261 |
258 setup(function() { | 262 setup(function() { |
| 263 adapterFieldSet = document.querySelector('#adapter fieldset'); |
259 deviceTable = document.querySelector('#devices table'); | 264 deviceTable = document.querySelector('#devices table'); |
260 sidebarNode = document.querySelector('#sidebar'); | 265 sidebarNode = document.querySelector('#sidebar'); |
261 devices.splice(0, devices.length); | 266 devices.splice(0, devices.length); |
262 adapterBroker.adapterClient_.deviceAdded(fakeDeviceInfo1()); | 267 adapterBroker.adapterClient_.deviceAdded(fakeDeviceInfo1()); |
263 adapterBroker.adapterClient_.deviceAdded(fakeDeviceInfo2()); | 268 adapterBroker.adapterClient_.deviceAdded(fakeDeviceInfo2()); |
264 }); | 269 }); |
265 | 270 |
266 teardown(function() { | 271 teardown(function() { |
267 adapterFactory.reset(); | 272 adapterFactory.reset(); |
268 sidebarObj.close(); | 273 sidebarObj.close(); |
269 snackbar.Snackbar.dismiss(true); | 274 snackbar.Snackbar.dismiss(true); |
| 275 PageManager.registeredPages['adapter'].setAdapterInfo(fakeAdapterInfo()); |
270 }); | 276 }); |
271 | 277 |
272 /** | 278 /** |
273 * Updates device info and verifies the contents of the device table. | 279 * Updates device info and verifies the contents of the device table. |
274 * @param {!device_collection.DeviceInfo} deviceInfo | 280 * @param {!device_collection.DeviceInfo} deviceInfo |
275 */ | 281 */ |
276 function changeDevice(deviceInfo) { | 282 function changeDevice(deviceInfo) { |
277 var deviceRow = deviceTable.querySelector('#' + escapeDeviceAddress( | 283 var deviceRow = deviceTable.querySelector('#' + escapeDeviceAddress( |
278 deviceInfo.address)); | 284 deviceInfo.address)); |
279 var nameForDisplayColumn = deviceRow.children[0]; | 285 var nameForDisplayColumn = deviceRow.children[0]; |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
429 newDeviceInfo3.rssi = {value: -17}; | 435 newDeviceInfo3.rssi = {value: -17}; |
430 adapterBroker.adapterClient_.deviceChanged(newDeviceInfo3); | 436 adapterBroker.adapterClient_.deviceChanged(newDeviceInfo3); |
431 expectEquals('-17', rssiColumn.textContent); | 437 expectEquals('-17', rssiColumn.textContent); |
432 }); | 438 }); |
433 | 439 |
434 /* Sidebar Tests */ | 440 /* Sidebar Tests */ |
435 test('Sidebar_Setup', function() { | 441 test('Sidebar_Setup', function() { |
436 var sidebarItems = Array.from( | 442 var sidebarItems = Array.from( |
437 sidebarNode.querySelectorAll('.sidebar-content li')); | 443 sidebarNode.querySelectorAll('.sidebar-content li')); |
438 | 444 |
439 ['devices'].forEach(function(pageName) { | 445 ['adapter', 'devices'].forEach(function(pageName) { |
440 expectTrue(sidebarItems.some(function(item) { | 446 expectTrue(sidebarItems.some(function(item) { |
441 return item.dataset.pageName === pageName; | 447 return item.dataset.pageName === pageName; |
442 })); | 448 })); |
443 }); | 449 }); |
444 }); | 450 }); |
445 | 451 |
446 test('Sidebar_DefaultState', function() { | 452 test('Sidebar_DefaultState', function() { |
447 // Sidebar should be closed by default. | 453 // Sidebar should be closed by default. |
448 expectFalse(sidebarNode.classList.contains('open')); | 454 expectFalse(sidebarNode.classList.contains('open')); |
449 }); | 455 }); |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
545 expectFalse(!!snackbar.Snackbar.current_); | 551 expectFalse(!!snackbar.Snackbar.current_); |
546 snackbar.Snackbar.dismiss(); | 552 snackbar.Snackbar.dismiss(); |
547 | 553 |
548 finishSnackbarTest(done); | 554 finishSnackbarTest(done); |
549 }); | 555 }); |
550 snackbar2.addEventListener('dismissed', next); | 556 snackbar2.addEventListener('dismissed', next); |
551 snackbar3.addEventListener('dismissed', next); | 557 snackbar3.addEventListener('dismissed', next); |
552 | 558 |
553 snackbar.Snackbar.dismiss(true); | 559 snackbar.Snackbar.dismiss(true); |
554 }); | 560 }); |
| 561 |
| 562 /* AdapterPage Tests */ |
| 563 function checkAdapterFieldSet(adapterInfo) { |
| 564 for (var propName in adapterInfo) { |
| 565 var valueCell = adapterFieldSet.querySelector( |
| 566 '[data-field="' + propName + '"]'); |
| 567 var value = adapterInfo[propName]; |
| 568 |
| 569 if (typeof(value) === 'boolean') { |
| 570 expectEquals(value, valueCell.classList.contains('checked')); |
| 571 } else if (typeof(value) === 'string') { |
| 572 expectEquals(value, valueCell.textContent); |
| 573 } else { |
| 574 assert('boolean or string type expected but got ' + typeof(value)); |
| 575 } |
| 576 } |
| 577 } |
| 578 |
| 579 test('AdapterPage_DefaultState', function() { |
| 580 checkAdapterFieldSet(adapterFieldSet.value); |
| 581 }); |
| 582 |
| 583 test('AdapterPage_AdapterChanged', function() { |
| 584 var adapterInfo = adapterFieldSet.value; |
| 585 |
| 586 adapterInfo.present = !adapterInfo.present; |
| 587 adapterBroker.adapterClient_.presentChanged(adapterInfo.present); |
| 588 checkAdapterFieldSet(adapterInfo); |
| 589 |
| 590 adapterInfo.discovering = !adapterInfo.discovering; |
| 591 adapterBroker.adapterClient_.discoveringChanged(adapterInfo.discovering); |
| 592 checkAdapterFieldSet(adapterInfo); |
| 593 }); |
| 594 |
| 595 test('AdapterPage_AdapterChanged_RepeatTwice', function() { |
| 596 var adapterInfo = adapterFieldSet.value; |
| 597 |
| 598 adapterInfo.present = !adapterInfo.present; |
| 599 adapterBroker.adapterClient_.presentChanged(adapterInfo.present); |
| 600 checkAdapterFieldSet(adapterInfo); |
| 601 adapterBroker.adapterClient_.presentChanged(adapterInfo.present); |
| 602 checkAdapterFieldSet(adapterInfo); |
| 603 |
| 604 adapterInfo.discovering = !adapterInfo.discovering; |
| 605 adapterBroker.adapterClient_.discoveringChanged(adapterInfo.discovering); |
| 606 checkAdapterFieldSet(adapterInfo); |
| 607 adapterBroker.adapterClient_.discoveringChanged(adapterInfo.discovering); |
| 608 checkAdapterFieldSet(adapterInfo); |
| 609 }); |
555 }); | 610 }); |
556 | 611 |
557 | |
558 // Run all registered tests. | 612 // Run all registered tests. |
559 mocha.run(); | 613 mocha.run(); |
560 }); | 614 }); |
OLD | NEW |