| Index: chrome/browser/resources/chromeos/switch_access/auto_scan_manager_unittest.gtestjs
 | 
| diff --git a/chrome/browser/resources/chromeos/switch_access/auto_scan_manager_unittest.gtestjs b/chrome/browser/resources/chromeos/switch_access/auto_scan_manager_unittest.gtestjs
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..d2b79fa36eebc1156423fc686b2c5b2b926f25a1
 | 
| --- /dev/null
 | 
| +++ b/chrome/browser/resources/chromeos/switch_access/auto_scan_manager_unittest.gtestjs
 | 
| @@ -0,0 +1,176 @@
 | 
| +// Copyright 2017 The Chromium Authors. All rights reserved.
 | 
| +// Use of this source code is governed by a BSD-style license that can be
 | 
| +// found in the LICENSE file.
 | 
| +
 | 
| +/**
 | 
| + * @constructor
 | 
| + * @implements {SwitchAccessInterface}
 | 
| + */
 | 
| +function FakeSwitchAccess() {
 | 
| +  this.moveToNextCount = 0;
 | 
| +  this.switchAccessPrefs = {};
 | 
| +  this.switchAccessPrefs.getNumberPref = function(key) {
 | 
| +    if (key === 'autoScanTime')
 | 
| +      return 1;
 | 
| +  };
 | 
| +  this.switchAccessPrefs.getBooleanPref = function(key) {
 | 
| +    if (key === 'enableAutoScan')
 | 
| +      return false;
 | 
| +  };
 | 
| +};
 | 
| +
 | 
| +FakeSwitchAccess.prototype = {
 | 
| +  /** @override */
 | 
| +  moveToNode: function(doNext) {
 | 
| +    if (doNext)
 | 
| +      this.moveToNextCount += 1;
 | 
| +  },
 | 
| +};
 | 
| +
 | 
| +/**
 | 
| + * Test fixture for auto_scan_manager.js.
 | 
| + * @constructor
 | 
| + * @extends {testing.Test}
 | 
| + */
 | 
| +function AutoScanManagerUnitTest() {
 | 
| +  testing.Test.call(this);
 | 
| +};
 | 
| +
 | 
| +AutoScanManagerUnitTest.prototype = {
 | 
| +  __proto__: testing.Test.prototype,
 | 
| +
 | 
| +  /** @override */
 | 
| +  extraLibraries: [
 | 
| +    'auto_scan_manager.js',
 | 
| +  ],
 | 
| +
 | 
| +  /** @override */
 | 
| +  isAsync: true,
 | 
| +
 | 
| +  /** @override */
 | 
| +  browsePreload: DUMMY_URL,
 | 
| +
 | 
| +  /** @override */
 | 
| +  setUp: function() {
 | 
| +    // Use intervalCount and intervalDelay to check how many intervals are
 | 
| +    // currently running (should be 1 at most) and what the current delay is.
 | 
| +    window.intervalCount = 0;
 | 
| +    window.intervalDelay = undefined;
 | 
| +    window.realSetInterval = window.setInterval;
 | 
| +    window.realClearInterval = window.clearInterval;
 | 
| +
 | 
| +    window.setInterval = function(func, delay) {
 | 
| +      window.intervalCount += 1;
 | 
| +      window.intervalDelay = delay;
 | 
| +
 | 
| +      // Set the actual delay to 1 ms to speed up the test.
 | 
| +      return window.realSetInterval(func, 1);
 | 
| +    };
 | 
| +
 | 
| +    window.clearInterval = function(intervalID) {
 | 
| +      if (intervalID)
 | 
| +        window.intervalCount -= 1;
 | 
| +      window.realClearInterval(intervalID);
 | 
| +    };
 | 
| +  }
 | 
| +};
 | 
| +
 | 
| +TEST_F('AutoScanManagerUnitTest', 'SetEnabled', function() {
 | 
| +  let switchAccess = new FakeSwitchAccess();
 | 
| +  let autoScanManager = new AutoScanManager(switchAccess);
 | 
| +  assertFalse(autoScanManager.isRunning());
 | 
| +  assertEquals(0, switchAccess.moveToNextCount);
 | 
| +  assertEquals(0, window.intervalCount);
 | 
| +
 | 
| +  autoScanManager.setEnabled(true);
 | 
| +  window.setTimeout(function() {
 | 
| +    assertTrue(autoScanManager.isRunning());
 | 
| +    assertGT(switchAccess.moveToNextCount, 1);
 | 
| +    assertEquals(1, window.intervalCount);
 | 
| +    testDone();
 | 
| +  }, 10);
 | 
| +});
 | 
| +
 | 
| +TEST_F('AutoScanManagerUnitTest', 'EnableMultiple', function() {
 | 
| +  let switchAccess = new FakeSwitchAccess();
 | 
| +  let autoScanManager = new AutoScanManager(switchAccess);
 | 
| +  assertFalse(autoScanManager.isRunning());
 | 
| +  assertEquals(0, switchAccess.moveToNextCount);
 | 
| +  assertEquals(0, window.intervalCount);
 | 
| +
 | 
| +  autoScanManager.setEnabled(true);
 | 
| +  autoScanManager.setEnabled(true);
 | 
| +  autoScanManager.setEnabled(true);
 | 
| +  window.setTimeout(function() {
 | 
| +    assertTrue(autoScanManager.isRunning());
 | 
| +    assertGT(switchAccess.moveToNextCount, 1);
 | 
| +    assertEquals(1, window.intervalCount);
 | 
| +    testDone();
 | 
| +  }, 10);
 | 
| +});
 | 
| +
 | 
| +TEST_F('AutoScanManagerUnitTest', 'EnableAndDisable', function() {
 | 
| +  let switchAccess = new FakeSwitchAccess();
 | 
| +  let autoScanManager = new AutoScanManager(switchAccess);
 | 
| +  assertFalse(autoScanManager.isRunning());
 | 
| +
 | 
| +  autoScanManager.setEnabled(true);
 | 
| +  assertTrue(autoScanManager.isRunning());
 | 
| +
 | 
| +  autoScanManager.setEnabled(false);
 | 
| +  assertFalse(autoScanManager.isRunning());
 | 
| +  testDone();
 | 
| +});
 | 
| +
 | 
| +TEST_F('AutoScanManagerUnitTest', 'RestartMultiple', function() {
 | 
| +  let switchAccess = new FakeSwitchAccess();
 | 
| +  let autoScanManager = new AutoScanManager(switchAccess);
 | 
| +  assertFalse(autoScanManager.isRunning());
 | 
| +  assertEquals(0, switchAccess.moveToNextCount);
 | 
| +  assertEquals(0, window.intervalCount);
 | 
| +
 | 
| +  autoScanManager.setEnabled(true);
 | 
| +  autoScanManager.restartIfRunning();
 | 
| +  autoScanManager.restartIfRunning();
 | 
| +  autoScanManager.restartIfRunning();
 | 
| +  window.setTimeout(function() {
 | 
| +    assertTrue(autoScanManager.isRunning());
 | 
| +    assertGT(switchAccess.moveToNextCount, 1);
 | 
| +    assertEquals(1, window.intervalCount);
 | 
| +    testDone();
 | 
| +  }, 10);
 | 
| +});
 | 
| +
 | 
| +TEST_F('AutoScanManagerUnitTest', 'RestartWhenOff', function() {
 | 
| +  let switchAccess = new FakeSwitchAccess();
 | 
| +  let autoScanManager = new AutoScanManager(switchAccess);
 | 
| +  assertFalse(autoScanManager.isRunning());
 | 
| +
 | 
| +  autoScanManager.restartIfRunning();
 | 
| +  assertFalse(autoScanManager.isRunning());
 | 
| +  testDone();
 | 
| +});
 | 
| +
 | 
| +TEST_F('AutoScanManagerUnitTest', 'SetScanTime', function() {
 | 
| +  let switchAccess = new FakeSwitchAccess();
 | 
| +  let autoScanManager = new AutoScanManager(switchAccess);
 | 
| +  assertFalse(autoScanManager.isRunning());
 | 
| +  assertEquals(1, autoScanManager.scanTime_);
 | 
| +  assertEquals(undefined, window.intervalDelay);
 | 
| +
 | 
| +  autoScanManager.setScanTime(2);
 | 
| +  assertFalse(autoScanManager.isRunning());
 | 
| +  assertEquals(2, autoScanManager.scanTime_);
 | 
| +  assertEquals(undefined, window.intervalDelay);
 | 
| +
 | 
| +  autoScanManager.setEnabled(true);
 | 
| +  assertTrue(autoScanManager.isRunning());
 | 
| +  assertEquals(2, autoScanManager.scanTime_);
 | 
| +  assertEquals(2, window.intervalDelay);
 | 
| +
 | 
| +  autoScanManager.setScanTime(5);
 | 
| +  assertTrue(autoScanManager.isRunning());
 | 
| +  assertEquals(5, autoScanManager.scanTime_);
 | 
| +  assertEquals(5, window.intervalDelay);
 | 
| +  testDone();
 | 
| +});
 | 
| 
 |