Publish Vulpes Preview 15 sources for desktop, Android and Tundra

Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
OverSu 2026-09-30 23:13:03 +02:00
commit b38dea0597
25901 changed files with 9982925 additions and 369 deletions

View file

@ -0,0 +1,804 @@
/* globals ScreenManager, ScreenBrightnessTransition,
ScreenWakeLockManager, ScreenAutoBrightness, MockService,
MockAppWindow, MocksHelper, MockLockScreen, MockMozPower,
MockNavigatorMozTelephony, MockSettingsListener, MocksleepMenu */
'use strict';
require('/shared/test/unit/mocks/mock_settings_listener.js');
require('/shared/test/unit/mocks/mock_navigator_moz_power.js');
require('/shared/test/unit/mocks/mock_navigator_moz_telephony.js');
require('/shared/test/unit/mocks/mock_service.js');
require('/test/unit/mock_app_window.js');
require('/shared/test/unit/mocks/mock_lazy_loader.js');
require('/test/unit/mock_lock_screen.js');
require('/test/unit/mock_navigator_moz_power.js');
require('/test/unit/mock_sleep_menu.js');
require('/test/unit/mock_statusbar.js');
function switchProperty(originObject, prop, stub, reals, useDefineProperty) {
if (!useDefineProperty) {
reals[prop] = originObject[prop];
originObject[prop] = stub;
} else {
Object.defineProperty(originObject, prop, {
configurable: true,
get: function() { return stub; }
});
}
}
function restoreProperty(originObject, prop, reals, useDefineProperty) {
if (!useDefineProperty) {
originObject[prop] = reals[prop];
} else {
Object.defineProperty(originObject, prop, {
configurable: true,
get: function() { return reals[prop]; }
});
}
}
var mocksForScreenManager = new MocksHelper([
'SettingsListener', 'Service', 'LazyLoader'
]).init();
require('/js/screen_auto_brightness.js');
require('/js/screen_brightness_transition.js');
require('/js/wake_lock_manager.js');
suite('system/ScreenManager', function() {
var reals = {};
mocksForScreenManager.attachTestHelpers();
var realMozTelephony;
var stubScreenBrightnessTransition;
var stubScreenWakeLockManager;
var stubScreenAutoBrightness;
suiteSetup(function() {
realMozTelephony = navigator.mozTelephony;
navigator.mozTelephony = MockNavigatorMozTelephony;
});
suiteTeardown(function() {
MockNavigatorMozTelephony.mSuiteTeardown();
navigator.mozTelephony = realMozTelephony;
});
setup(function(done) {
window.lockScreen = MockLockScreen;
switchProperty(navigator, 'mozPower', MockMozPower, reals, true);
this.sinon.useFakeTimers();
stubScreenBrightnessTransition =
this.sinon.stub(ScreenBrightnessTransition.prototype);
this.sinon.stub(window, 'ScreenBrightnessTransition')
.returns(stubScreenBrightnessTransition);
stubScreenAutoBrightness =
this.sinon.stub(ScreenAutoBrightness.prototype);
this.sinon.stub(window, 'ScreenAutoBrightness')
.returns(stubScreenAutoBrightness);
stubScreenWakeLockManager =
this.sinon.stub(ScreenWakeLockManager.prototype);
this.sinon.stub(window, 'ScreenWakeLockManager')
.returns(stubScreenWakeLockManager);
// We make sure fake timers are in place before we require the app
requireApp('system/js/screen_manager.js', done);
});
teardown(function() {
MockNavigatorMozTelephony.mTeardown();
restoreProperty(navigator, 'mozPower', reals, true);
});
suite('init()', function() {
setup(function() {
var stubById = this.sinon.stub(document, 'getElementById');
stubById.withArgs('screen').returns(document.createElement('div'));
this.sinon.stub(MockSettingsListener, 'observe');
this.sinon.stub(ScreenManager, 'turnScreenOn');
this.sinon.stub(ScreenManager, '_reconfigScreenTimeout');
this.sinon.stub(ScreenManager, '_setIdleTimeout');
});
test('Event listener adding', function() {
var eventListenerStub = this.sinon.stub(window, 'addEventListener');
ScreenManager.start();
assert.isTrue(eventListenerStub.withArgs('sleep').calledOnce);
assert.isTrue(eventListenerStub.withArgs('wake').calledOnce);
assert.isTrue(eventListenerStub.withArgs('requestshutdown').calledOnce);
});
test('wake lock handling', function() {
ScreenManager.start();
assert.isTrue(stubScreenWakeLockManager.start.calledOnce);
stubScreenWakeLockManager.onwakelockchange(true);
assert.isTrue(ScreenManager._reconfigScreenTimeout.called);
});
test('Testing SettingsListener.observe for screen.timeout', function() {
ScreenManager._firstOn = false;
ScreenManager.turnScreenOn.reset();
MockSettingsListener.observe.withArgs('screen.timeout')
.callsArgWith(2, 50);
ScreenManager.start();
assert.isTrue(ScreenManager._firstOn);
assert.equal(MockMozPower.screenBrightness, 0.5);
assert.isTrue(ScreenManager.turnScreenOn.called);
});
test('Testing SettingsListener.observe for ' +
'screen.automatic-brightness', function() {
MockSettingsListener.observe.reset();
MockSettingsListener.observe.withArgs('screen.automatic-brightness')
.callsArgWith(2, true);
this.sinon.stub(ScreenManager, 'setDeviceLightEnabled');
ScreenManager.start();
assert.isTrue(ScreenManager.setDeviceLightEnabled.called);
});
test('Testing callback of telephony.addEventListener', function() {
this.sinon.spy(navigator.mozTelephony, 'addEventListener');
ScreenManager.start();
sinon.assert.calledWith(
navigator.mozTelephony.addEventListener, 'callschanged'
);
});
});
suite('handleEvent()', function() {
suite('Testing devicelight event', function() {
test('if _deviceLightEnabled is false', function() {
ScreenManager._deviceLightEnabled = false;
ScreenManager.handleEvent({'type': 'devicelight'});
assert.isFalse(stubScreenAutoBrightness.autoAdjust.called);
});
test('if screenEnabled is false', function() {
ScreenManager.screenEnabled = false;
ScreenManager.handleEvent({'type': 'devicelight'});
assert.isFalse(stubScreenAutoBrightness.autoAdjust.called);
});
test('if _inTransition is true', function() {
ScreenManager._inTransition = true;
ScreenManager.handleEvent({'type': 'devicelight'});
assert.isFalse(stubScreenAutoBrightness.autoAdjust.called);
});
test('put all together', function() {
ScreenManager._deviceLightEnabled = true;
ScreenManager.screenEnabled = true;
ScreenManager._inTransition = false;
ScreenManager.handleEvent({'type': 'devicelight'});
assert.isTrue(stubScreenAutoBrightness.autoAdjust.called);
});
});
test('Testing sleep event', function() {
this.sinon.spy(ScreenManager, 'turnScreenOff');
ScreenManager.handleEvent({'type': 'sleep'});
sinon.assert.calledWith(ScreenManager.turnScreenOff, true, 'powerkey');
});
test('Testing sleep event during a call', function() {
MockNavigatorMozTelephony.calls = [{}];
this.sinon.spy(ScreenManager, 'turnScreenOff');
ScreenManager.handleEvent({'type': 'sleep'});
sinon.assert.notCalled(ScreenManager.turnScreenOff);
});
test('Testing wake event', function() {
this.sinon.spy(ScreenManager, 'turnScreenOn');
ScreenManager.handleEvent({'type': 'wake'});
sinon.assert.calledWith(ScreenManager.turnScreenOn);
});
test('Testing wake event during a call', function() {
MockNavigatorMozTelephony.calls = [{}];
this.sinon.spy(ScreenManager, 'turnScreenOn');
ScreenManager.handleEvent({'type': 'wake'});
sinon.assert.notCalled(ScreenManager.turnScreenOn);
});
test('Testing accessibility action event', function() {
var stubReconfigScreenTimeout = this.sinon.stub(ScreenManager,
'_reconfigScreenTimeout');
ScreenManager.handleEvent({'type': 'accessibility-action'});
assert.isTrue(stubReconfigScreenTimeout.called);
});
suite('Test nfc-tech events', function() {
test('if _inTransition is true', function() {
var stubTurnScreenOn = this.sinon.stub(ScreenManager, 'turnScreenOn');
ScreenManager._inTransition = true;
ScreenManager.handleEvent({'type': 'nfc-tech-discovered'});
assert.isTrue(stubTurnScreenOn.calledOnce, 'nfc-tech-discovered');
ScreenManager.handleEvent({'type': 'nfc-tech-lost'});
assert.isTrue(stubTurnScreenOn.calledTwice, 'nfc-tech-lost');
});
test('if _intransition is false', function() {
var stubReconfigScreenTimeout = this.sinon.stub(
ScreenManager,
'_reconfigScreenTimeout');
ScreenManager.handleEvent({'type': 'nfc-tech-discovered'});
assert.isTrue(stubReconfigScreenTimeout.calledOnce,
'nfc-tech-discovered');
ScreenManager.handleEvent({'type': 'nfc-tech-lost'});
assert.isTrue(stubReconfigScreenTimeout.calledTwice, 'nfc-tech-lost');
});
});
suite('Testing userproximity event', function() {
var stubTurnOn, stubTurnOff;
setup(function() {
stubTurnOn = this.sinon.stub(ScreenManager, 'turnScreenOn');
stubTurnOff = this.sinon.stub(ScreenManager, 'turnScreenOff');
});
test('if Bluetooth SCO connected', function() {
this.sinon.stub(MockService, 'query').returns(true);
ScreenManager._screenOffBy = 'proximity';
ScreenManager.handleEvent({'type': 'userproximity'});
assert.isTrue(stubTurnOn.called);
assert.isFalse(stubTurnOff.called);
});
test('if Bluetooth SCO disconnected', function() {
this.sinon.stub(MockService, 'query').returns(false);
MockNavigatorMozTelephony.speakerEnabled = false;
MockService.mockQueryWith('isHeadsetConnected', false);
ScreenManager.handleEvent({'type': 'userproximity'});
assert.isTrue(stubTurnOn.called);
assert.isFalse(stubTurnOff.called);
});
test('if evt.near is yes', function() {
MockService.mockQueryWith('Bluetooth.isSCOProfileConnected', false);
MockService.mockQueryWith('isHeadsetConnected', false);
ScreenManager.handleEvent({'type': 'userproximity', 'near': 'yes'});
assert.isFalse(stubTurnOn.called);
assert.isTrue(stubTurnOff.calledWith(true, 'proximity'));
});
test('if earphone is connected', function() {
MockService.mockQueryWith('isHeadsetConnected', true);
ScreenManager._screenOffBy = 'proximity';
ScreenManager.handleEvent({'type': 'userproximity'});
assert.isTrue(stubTurnOn.called);
});
});
suite('Testing callschanged event', function() {
var stubCpuWakeLock, stubTurnOn, stubRemoveListener;
setup(function() {
stubCpuWakeLock = {};
stubTurnOn = this.sinon.stub(ScreenManager, 'turnScreenOn');
stubRemoveListener = this.sinon.stub(window, 'removeEventListener');
stubCpuWakeLock.unlock = this.sinon.stub();
ScreenManager._cpuWakeLock = stubCpuWakeLock;
});
teardown(function() {
restoreProperty(window, 'dialerAgent', reals);
});
test('with a call', function() {
var stubDispatchEvent = this.sinon.stub(window, 'dispatchEvent');
var stubAddListener = this.sinon.stub();
MockNavigatorMozTelephony.calls = [
{ 'addEventListener': stubAddListener }
];
ScreenManager.handleEvent({'type': 'callschanged'});
assert.isFalse(stubDispatchEvent.calledWith('open-callscreen'));
assert.isFalse(stubAddListener.called);
});
test('with a conference call', function() {
var stubDispatchEvent = this.sinon.stub(window, 'dispatchEvent');
var stubAddListener = this.sinon.stub();
MockNavigatorMozTelephony.conferenceGroup.calls = [
{ 'addEventListener': stubAddListener },
{ 'addEventListener': stubAddListener }
];
ScreenManager.handleEvent({'type': 'callschanged'});
assert.isFalse(stubDispatchEvent.calledWith('open-callscreen'));
assert.isFalse(stubAddListener.called);
});
suite('without a cpuWakeLock', function() {
teardown(function() {
ScreenManager._uninstallProximityListener();
});
test('for an incoming call', function() {
var stubDispatchEvent = this.sinon.stub(window, 'dispatchEvent');
var stubAddListener = this.sinon.stub();
MockNavigatorMozTelephony.calls = [{
addEventListener: stubAddListener,
state: 'incoming'
}];
ScreenManager._cpuWakeLock = null;
ScreenManager.handleEvent({'type': 'callschanged'});
assert.isFalse(stubDispatchEvent.calledWith('open-callscreen'));
assert.isTrue(stubAddListener.called);
});
test('for an outgoing call', function() {
var stubAddListener = this.sinon.stub(window, 'addEventListener');
var stubStateListener = this.sinon.stub();
MockNavigatorMozTelephony.calls = [{
addEventListener: stubStateListener,
state: 'dialing'
}];
ScreenManager._cpuWakeLock = null;
ScreenManager.handleEvent({'type': 'callschanged'});
assert.isTrue(stubStateListener.notCalled);
assert.isTrue(stubAddListener.calledOnce);
assert.isTrue(stubAddListener.calledWith('userproximity'));
});
});
});
suite('Testing statechange event', function() {
var stubReqWakeLock, stubAddListener, stubCallRemoveListener, evt;
setup(function() {
stubReqWakeLock = this.sinon.stub(navigator, 'requestWakeLock');
stubAddListener = this.sinon.stub(window, 'addEventListener');
stubCallRemoveListener = this.sinon.stub();
evt = {
'type': 'statechange',
'target': {
'removeEventListener': stubCallRemoveListener
}
};
});
test('state is disconnected', function() {
evt.target.state = 'disconnected';
ScreenManager.handleEvent(evt);
assert.isFalse(stubCallRemoveListener.called);
assert.isFalse(stubAddListener.called);
assert.isFalse(stubReqWakeLock.called);
});
test('state is connected', function() {
evt.target.state = 'connected';
ScreenManager.handleEvent(evt);
assert.isTrue(stubCallRemoveListener.called);
assert.isTrue(stubAddListener.calledOnce);
assert.isTrue(stubAddListener.calledWith('userproximity'));
assert.isTrue(stubReqWakeLock.called);
});
});
test('Testing shutdown event', function() {
var powerOffSpy = this.sinon.spy(MocksleepMenu, 'startPowerOff');
powerOffSpy.withArgs(false);
this.sinon.stub(ScreenManager, 'turnScreenOn');
ScreenManager.handleEvent({
type: 'requestshutdown',
detail: MocksleepMenu
});
assert.isTrue(ScreenManager.turnScreenOn.calledOnce);
assert.isTrue(powerOffSpy.withArgs(false).calledOnce);
});
suite('Testing logohidden event', function() {
var fakeAppConfig1 = {
url: 'app://www.fake/index.html',
manifest: {},
manifestURL: 'app://wwww.fake/ManifestURL',
origin: 'app://www.fake'
};
setup(function() {
MockService.mockQueryWith('locked', true);
MockService.mockQueryWith('getTopMostWindow', {
CLASS_NAME: 'LockScreenWindow'
});
this.sinon.spy(ScreenManager, '_setIdleTimeout');
this.sinon.stub(window, 'removeEventListener');
});
test('Lockscreen is displayed', function() {
MockService.mockQueryWith('locked', true);
window.dispatchEvent(new CustomEvent('logohidden'));
assert.ok(ScreenManager._setIdleTimeout
.withArgs(ScreenManager.LOCKING_TIMEOUT, true).calledOnce);
});
test('Lockscreen closing, it will check if there is a holding wakeLock',
function() {
var originalManager = ScreenManager._wakeLockManager;
ScreenManager._wakeLockManager = {
isHeld: true
};
var originalSetIdleTimeout = ScreenManager._setIdleTimeout;
var stubSetIdleTimeout = this.sinon.stub();
ScreenManager._setIdleTimeout = stubSetIdleTimeout;
ScreenManager.handleEvent(new CustomEvent('lockscreen-appclosing'));
assert.isFalse(stubSetIdleTimeout.called,
'it set the timeout even when the wake lock is being held');
stubSetIdleTimeout = this.sinon.stub();
ScreenManager._setIdleTimeout = stubSetIdleTimeout;
ScreenManager._wakeLockManager = {
isHeld: false
};
ScreenManager.handleEvent(new CustomEvent('lockscreen-appclosing'));
assert.isTrue(stubSetIdleTimeout.called,
'it DOESN\'T set the timeout even when there is no wake lock');
ScreenManager._wakeLockManager = originalManager;
ScreenManager._setIdleTimeout = originalSetIdleTimeout;
});
test('An app is displayed', function() {
MockService.mockQueryWith('getTopMostWindow',
new MockAppWindow(fakeAppConfig1));
window.dispatchEvent(new CustomEvent('logohidden'));
assert.ok(ScreenManager._setIdleTimeout
.withArgs(ScreenManager._idleTimeout, false).calledOnce);
});
test('Remove the event listener', function() {
window.dispatchEvent(new CustomEvent('logohidden'));
assert.ok(window.removeEventListener
.withArgs('logohidden', ScreenManager).calledOnce);
});
});
});
suite('turnScreenOff()', function() {
var stubSetIdle,
stubRemoveListener,
stubFireEvent,
stubUnlock,
stubSetBrightness;
setup(function() {
stubSetIdle = this.sinon.stub(ScreenManager, '_setIdleTimeout');
stubRemoveListener = this.sinon.stub(window, 'removeEventListener');
stubFireEvent = this.sinon.stub(ScreenManager, 'fireScreenChangeEvent');
stubUnlock = this.sinon.stub();
stubSetBrightness = this.sinon.stub(ScreenManager, 'setScreenBrightness');
ScreenManager._cpuWakeLock = {'unlock': stubUnlock};
});
test('when screen disabled', function() {
ScreenManager.screenEnabled = false;
assert.isFalse(ScreenManager.turnScreenOff());
});
test('turn off screen with instant argument', function() {
ScreenManager.screenEnabled = true;
assert.isTrue(ScreenManager.turnScreenOff(true, 'powerkey'));
this.sinon.clock.tick(20);
assert.equal(stubRemoveListener.callCount, 4);
assert.isTrue(stubSetIdle.calledWith(0));
assert.isFalse(ScreenManager.screenEnabled);
assert.isTrue(stubSetBrightness.calledWith(0, true));
assert.isFalse(MockMozPower.screenEnabled);
assert.isFalse(MockMozPower.keyLightEnabled);
assert.isTrue(ScreenManager.fireScreenChangeEvent.called);
});
test('turn off instantly then on again', function() {
ScreenManager.screenEnabled = true;
assert.isTrue(ScreenManager.turnScreenOff(true, 'powerkey'));
this.sinon.clock.tick(10);
assert.isTrue(ScreenManager.turnScreenOn(true));
this.sinon.clock.tick(10);
assert.isTrue(ScreenManager.screenEnabled);
assert.isTrue(MockMozPower.screenEnabled);
assert.isTrue(MockMozPower.keyLightEnabled);
});
test('turn off screen wihout instant argument', function() {
ScreenManager.screenEnabled = true;
assert.isTrue(ScreenManager.turnScreenOff(false));
assert.isFalse(stubSetIdle.called);
this.sinon.clock.tick(ScreenManager._dimNotice);
assert.isTrue(stubSetIdle.called);
});
test('turn off screen but not in transition', function() {
ScreenManager.screenEnabled = true;
assert.isTrue(ScreenManager.turnScreenOff(false));
ScreenManager._inTransition = false;
this.sinon.clock.tick(ScreenManager._dimNotice);
assert.isFalse(stubSetIdle.called);
});
});
suite('turnScreenOn()', function() {
var stubSetBrightness,
stubReconfTimeout,
stubTelephony = {},
stubReqWakeLock,
stubAddListener,
stubFireEvent;
setup(function() {
stubSetBrightness = this.sinon.stub(ScreenManager, 'setScreenBrightness');
stubReconfTimeout =
this.sinon.stub(ScreenManager, '_reconfigScreenTimeout');
switchProperty(navigator, 'mozTelephony', stubTelephony, reals);
stubReqWakeLock = this.sinon.stub(navigator, 'requestWakeLock');
stubAddListener = this.sinon.stub(window, 'addEventListener');
stubFireEvent = this.sinon.stub(ScreenManager, 'fireScreenChangeEvent');
});
teardown(function() {
restoreProperty(navigator, 'mozTelephony', reals);
});
test('screen enabled when _inTransition is false', function() {
ScreenManager.screenEnabled = true;
ScreenManager._inTransition = false;
assert.isFalse(ScreenManager.turnScreenOn(true));
assert.isFalse(stubReconfTimeout.called);
});
test('screen enabled when _inTransition is false', function() {
ScreenManager._inTransition = true;
assert.isFalse(ScreenManager.turnScreenOn(true));
assert.isTrue(stubSetBrightness.called);
assert.isTrue(stubReconfTimeout.called);
});
test('screen disabled when _deviceLightEnable is true', function() {
ScreenManager.screenEnabled = false;
stubTelephony.calls = [];
stubTelephony.conferenceGroup = {calls: []};
ScreenManager._deviceLightEnable = true;
ScreenManager.turnScreenOn(true);
assert.isTrue(stubAddListener.called);
assert.isTrue(stubReconfTimeout.called);
assert.isTrue(stubFireEvent.called);
});
test('screen disabled when _deviceLightEnable is false', function() {
ScreenManager._deviceLightEnable = false;
stubAddListener.reset();
ScreenManager.turnScreenOn(true);
assert.isFalse(stubAddListener.called);
});
test('screen disabled with a call', function() {
ScreenManager.screenEnabled = false;
stubTelephony.calls = [{'state': 'connected'}];
stubTelephony.conferenceGroup = {calls: []};
ScreenManager.turnScreenOn(true);
assert.isTrue(stubReqWakeLock.calledWith('cpu'));
assert.isTrue(stubAddListener.calledWith('userproximity'));
});
test('screen disabled with a conference call', function() {
ScreenManager.screenEnabled = false;
stubTelephony.calls = [];
stubTelephony.conferenceGroup = {
calls: [{'addEventListener': stubAddListener},
{'addEventListener': stubAddListener}]
};
ScreenManager.turnScreenOn(true);
assert.isTrue(stubReqWakeLock.calledWith('cpu'));
assert.isTrue(stubAddListener.calledWith('userproximity'));
});
});
suite('setScreenBrightness()', function() {
test('set brightness with instant argument', function() {
ScreenManager.setScreenBrightness(0.5, true);
assert.equal(MockMozPower.screenBrightness, 0.5);
});
test('set brightness without instant argument', function() {
ScreenManager.setScreenBrightness(0.5, false);
assert.isTrue(stubScreenBrightnessTransition.transitionTo.called);
});
});
suite('setDeviceLightEnabled()', function() {
var stubSetBrightness, stubAddListener, stubRemoveListener;
setup(function() {
stubSetBrightness = this.sinon.stub(ScreenManager, 'setScreenBrightness');
stubAddListener = this.sinon.stub(window, 'addEventListener');
stubRemoveListener = this.sinon.stub(window, 'removeEventListener');
});
test('if setDeviceLightEnabled(false) and ' +
'_deviceLightEnabled is true', function() {
ScreenManager._userBrightness = 0.5;
ScreenManager._deviceLightEnabled = true;
ScreenManager.setDeviceLightEnabled(false);
assert.isTrue(stubSetBrightness.calledWith(0.5, false));
});
test('if argument is true', function() {
ScreenManager.setDeviceLightEnabled(true);
assert.isFalse(stubSetBrightness.called);
});
test('if argument is false', function() {
ScreenManager.setDeviceLightEnabled(false);
assert.isFalse(stubAddListener.called);
assert.isTrue(stubRemoveListener.called);
});
test('if argument & screenEnabled are both true', function() {
ScreenManager.screenEnabled = true;
ScreenManager.setDeviceLightEnabled(true);
assert.isTrue(stubAddListener.called);
assert.isFalse(stubRemoveListener.called);
});
});
test('_setIdleTimeout()', function() {
var stubClearIdleTimeout, stubSetIdleTimeout;
setup(function() {
stubClearIdleTimeout = this.sinon.stub();
switchProperty(window, 'clearIdleTimeout', stubClearIdleTimeout, reals);
stubSetIdleTimeout = this.sinon.stub();
switchProperty(window, 'setIdleTimeout', stubSetIdleTimeout, reals);
});
teardown(function() {
restoreProperty(window, 'clearIdleTimeout', reals);
restoreProperty(window, 'setIdleTimeout', reals);
});
test('set idle timeout to 100', function() {
ScreenManager._setIdleTimeout(100, true);
assert.isTrue(stubClearIdleTimeout.called);
assert.isTrue(stubSetIdleTimeout.called);
});
test('set idle timeout to 0', function() {
ScreenManager._setIdleTimeout(0, true);
assert.isTrue(stubClearIdleTimeout.called);
assert.isFalse(stubSetIdleTimeout.called);
});
});
test('fireScreenChangeEvent()', function() {
var stubDispatchEvent = this.sinon.stub(window, 'dispatchEvent');
ScreenManager.fireScreenChangeEvent();
assert.isTrue(stubDispatchEvent.called);
});
suite('toggleScreen()', function() {
var stubTurnOff, stubTurnOn;
setup(function() {
stubTurnOff = this.sinon.stub(ScreenManager, 'turnScreenOff');
stubTurnOn = this.sinon.stub(ScreenManager, 'turnScreenOn');
});
test('if screenEnabled is true', function() {
ScreenManager.screenEnabled = true;
ScreenManager.toggleScreen();
assert.isTrue(stubTurnOff.calledWith(true, 'toggle'));
assert.isFalse(stubTurnOn.called);
});
test('if screenEnabled is false', function() {
ScreenManager.screenEnabled = false;
ScreenManager.toggleScreen();
assert.isTrue(stubTurnOn.called);
assert.isFalse(stubTurnOff.called);
});
});
suite('Attention window open events', function() {
test('handle attentionopening event', function() {
// The public interface is event, so we manually fire and forward it to
// the handler, to avoid the asynchronous part which is unnecessary in
// the test.
var stubDispatchEvent = this.sinon.stub(window, 'dispatchEvent',
function(e) {
ScreenManager.handleEvent(e);
});
var stubTurnOn = this.sinon.stub(ScreenManager, 'turnScreenOn');
ScreenManager.enabled = false;
window.dispatchEvent(new CustomEvent('attentionopening'));
assert.isTrue(stubTurnOn.called);
stubDispatchEvent.restore();
});
test('handle attentionopened event', function() {
// The public interface is event, so we manually fire and forward it to
// the handler, to avoid the asynchronous part which is unnecessary in
// the test.
var stubDispatchEvent = this.sinon.stub(window, 'dispatchEvent',
function(e) {
ScreenManager.handleEvent(e);
});
var stubTurnOn = this.sinon.stub(ScreenManager, 'turnScreenOn');
ScreenManager.enabled = false;
window.dispatchEvent(new CustomEvent('attentionopened'));
assert.isTrue(stubTurnOn.called);
stubDispatchEvent.restore();
});
});
suite('secureapp opened/terminated events', function() {
test('secur-appeopend', function() {
var evt = { 'type': 'secure-appopened' };
var stubReconfigScreenTimeout =
this.sinon.stub(ScreenManager, '_reconfigScreenTimeout');
ScreenManager.handleEvent(evt);
assert.isTrue(stubReconfigScreenTimeout.called,
'it doesn\'t reset the timeout while secure appcreated');
});
test('secur-appterminated', function() {
var evt = { 'type': 'secure-appterminated' };
var stubReconfigScreenTimeout =
this.sinon.stub(ScreenManager, '_reconfigScreenTimeout');
ScreenManager.handleEvent(evt);
assert.isTrue(stubReconfigScreenTimeout.called,
'it doesn\'t reset the timeout while secure appterminated');
});
});
suite('unlocking-start/stop events', function() {
test('handle unlocking-start event', function() {
// The public interface is event, so we manually fire and forward it to
// the handler, to avoid the asynchronous part which is unnecessary in
// the test.
var stubDispatchEvent = this.sinon.stub(window, 'dispatchEvent',
function(e) {
ScreenManager.handleEvent(e);
});
window.dispatchEvent(new CustomEvent('unlocking-start'));
assert.isTrue(ScreenManager._unlocking);
stubDispatchEvent.restore();
});
test('handle unlocking-stop event', function() {
var stubDispatchEvent = this.sinon.stub(window, 'dispatchEvent',
function(e) {
ScreenManager.handleEvent(e);
});
var stubReconfigScreenTimeout = this.sinon.stub(ScreenManager,
'_reconfigScreenTimeout');
window.dispatchEvent(new CustomEvent('unlocking-stop'));
assert.isFalse(ScreenManager._unlocking);
assert.isTrue(stubReconfigScreenTimeout.called);
stubDispatchEvent.restore();
stubReconfigScreenTimeout.restore();
});
});
});