blob: d56e5b621cb55ce209447060a824cab53c6e00a7 [file] [log] [blame]
// Copyright 2018 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.
GEN_INCLUDE(['switch_access_e2e_test_base.js']);
UNDEFINED_INTERVAL_DELAY = -1;
/** Test fixture for auto scan manager. */
SwitchAccessAutoScanManagerTest = class extends SwitchAccessE2ETest {
/** @override */
setUp() {
AutoScanManager.instance.primaryScanTime_ = 1000;
// Use intervalCount and intervalDelay to check how many intervals are
// currently running (should be no more than 1) and the current delay.
window.intervalCount = 0;
window.intervalDelay = UNDEFINED_INTERVAL_DELAY;
window.defaultSetInterval = window.setInterval;
window.defaultClearInterval = window.clearInterval;
NavigationManager.defaultMoveForward = NavigationManager.moveForward;
NavigationManager.moveForwardCount = 0;
window.setInterval = function(func, delay) {
window.intervalCount++;
window.intervalDelay = delay;
// Override the delay for testing.
return window.defaultSetInterval(func, 0);
};
window.clearInterval = function(intervalId) {
if (intervalId) {
window.intervalCount--;
}
window.defaultClearInterval(intervalId);
};
NavigationManager.moveForward = () => {
NavigationManager.moveForwardCount++;
this.onMoveForward_ && this.onMoveForward_();
NavigationManager.defaultMoveForward();
};
this.onMoveForward_ = null;
}
};
TEST_F('SwitchAccessAutoScanManagerTest', 'SetEnabled', function() {
this.runWithLoadedTree('', () => {
assertFalse(
AutoScanManager.instance.isRunning_(),
'Auto scan manager is running prematurely');
assertEquals(
0, NavigationManager.moveForwardCount,
'Incorrect initialization of moveForwardCount');
assertEquals(0, intervalCount, 'Incorrect initialization of intervalCount');
this.onMoveForward_ = this.newCallback(() => {
assertTrue(
AutoScanManager.instance.isRunning_(),
'Auto scan manager has stopped running');
assertGT(
NavigationManager.moveForwardCount, 0,
'Switch Access has not moved forward');
assertEquals(
1, intervalCount, 'The number of intervals is no longer exactly 1');
});
AutoScanManager.setEnabled(true);
assertTrue(
AutoScanManager.instance.isRunning_(),
'Auto scan manager is not running');
assertEquals(1, intervalCount, 'There is not exactly 1 interval');
});
});
TEST_F('SwitchAccessAutoScanManagerTest', 'SetEnabledMultiple', function() {
this.runWithLoadedDesktop(() => {
assertFalse(
AutoScanManager.instance.isRunning_(),
'Auto scan manager is running prematurely');
assertEquals(0, intervalCount, 'Incorrect initialization of intervalCount');
AutoScanManager.setEnabled(true);
AutoScanManager.setEnabled(true);
AutoScanManager.setEnabled(true);
assertTrue(
AutoScanManager.instance.isRunning_(),
'Auto scan manager is not running');
assertEquals(1, intervalCount, 'There is not exactly 1 interval');
});
});
TEST_F('SwitchAccessAutoScanManagerTest', 'EnableAndDisable', function() {
this.runWithLoadedDesktop(() => {
assertFalse(
AutoScanManager.instance.isRunning_(),
'Auto scan manager is running prematurely');
assertEquals(0, intervalCount, 'Incorrect initialization of intervalCount');
AutoScanManager.setEnabled(true);
assertTrue(
AutoScanManager.instance.isRunning_(),
'Auto scan manager is not running');
assertEquals(1, intervalCount, 'There is not exactly 1 interval');
AutoScanManager.setEnabled(false);
assertFalse(
AutoScanManager.instance.isRunning_(),
'Auto scan manager did not stop running');
assertEquals(0, intervalCount, 'Interval was not removed');
});
});
TEST_F(
'SwitchAccessAutoScanManagerTest', 'RestartIfRunningMultiple', function() {
this.runWithLoadedDesktop(() => {
assertFalse(
AutoScanManager.instance.isRunning_(),
'Auto scan manager is running prematurely');
assertEquals(
0, NavigationManager.moveForwardCount,
'Incorrect initialization of moveForwardCount');
assertEquals(
0, intervalCount, 'Incorrect initialization of intervalCount');
AutoScanManager.setEnabled(true);
AutoScanManager.restartIfRunning();
AutoScanManager.restartIfRunning();
AutoScanManager.restartIfRunning();
assertTrue(
AutoScanManager.instance.isRunning_(),
'Auto scan manager is not running');
assertEquals(1, intervalCount, 'There is not exactly 1 interval');
});
});
TEST_F(
'SwitchAccessAutoScanManagerTest', 'RestartIfRunningWhenOff', function() {
this.runWithLoadedDesktop(() => {
assertFalse(
AutoScanManager.instance.isRunning_(),
'Auto scan manager is running at start.');
AutoScanManager.restartIfRunning();
assertFalse(
AutoScanManager.instance.isRunning_(),
'Auto scan manager enabled by restartIfRunning');
});
});
TEST_F('SwitchAccessAutoScanManagerTest', 'SetPrimaryScanTime', function() {
this.runWithLoadedDesktop(() => {
assertFalse(
AutoScanManager.instance.isRunning_(),
'Auto scan manager is running prematurely');
assertEquals(
UNDEFINED_INTERVAL_DELAY, intervalDelay,
'Interval delay improperly initialized');
AutoScanManager.setPrimaryScanTime(2);
assertFalse(
AutoScanManager.instance.isRunning_(),
'Setting default scan time started auto-scanning');
assertEquals(
2, AutoScanManager.instance.primaryScanTime_,
'Default scan time set improperly');
assertEquals(
UNDEFINED_INTERVAL_DELAY, intervalDelay,
'Interval delay set prematurely');
AutoScanManager.setEnabled(true);
assertTrue(
AutoScanManager.instance.isRunning_(), 'Auto scan did not start');
assertEquals(
2, AutoScanManager.instance.primaryScanTime_,
'Default scan time has changed');
assertEquals(2, intervalDelay, 'Interval delay not set');
AutoScanManager.setPrimaryScanTime(5);
assertTrue(AutoScanManager.instance.isRunning_(), 'Auto scan stopped');
assertEquals(
5, AutoScanManager.instance.primaryScanTime_,
'Default scan time did not change when set a second time');
assertEquals(5, intervalDelay, 'Interval delay did not update');
});
});