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,200 @@
/* global MockNavigatorSettings, MocksHelper,
MockNavigatorMozMobileConnections, MockAirplaneModeServiceHelper,
MockLazyLoader, BaseModule, AirplaneModeIcon */
'use strict';
requireApp(
'system/shared/test/unit/mocks/mock_navigator_moz_mobile_connections.js');
requireApp('system/test/unit/mock_lazy_loader.js');
requireApp('system/shared/test/unit/mocks/mock_navigator_moz_settings.js');
requireApp('system/test/unit/mock_wifi_manager.js');
requireApp('system/test/unit/mock_airplane_mode_service_helper.js');
requireApp('system/js/service.js');
requireApp('system/js/base_module.js');
requireApp('system/js/base_ui.js');
requireApp('system/js/base_icon.js');
requireApp('system/js/airplane_mode_icon.js');
requireApp('system/js/airplane_mode.js');
var mocksForAirplaneMode = new MocksHelper([
'WifiManager',
'NavigatorMozMobileConnections',
'LazyLoader'
]).init();
suite('system/airplane_mode.js', function() {
var realSettings;
var realMobileConnections;
var subject;
mocksForAirplaneMode.attachTestHelpers();
suiteSetup(function() {
sinon.spy(MockLazyLoader, 'load');
realSettings = window.navigator.mozSettings;
window.navigator.mozSettings = MockNavigatorSettings;
realMobileConnections = window.navigator.mozMobileConnections;
window.navigator.mozMobileConnections = MockNavigatorMozMobileConnections;
});
suiteTeardown(function() {
window.navigator.mozSettings = realSettings;
MockNavigatorMozMobileConnections.mTeardown();
window.navigator.mozMobileConnections = realMobileConnections;
});
setup(function() {
subject = BaseModule.instantiate('AirplaneMode');
window.AirplaneModeServiceHelper = MockAirplaneModeServiceHelper;
subject.start();
subject.airplaneModeServiceHelper = new MockAirplaneModeServiceHelper();
subject.icon = new AirplaneModeIcon(subject);
this.sinon.stub(subject.icon, 'update');
});
teardown(function() {
subject.stop();
});
test('should lazy load icon', function() {
assert.isTrue(MockLazyLoader.load.calledWith(['js/airplane_mode_icon.js']));
});
suite('set enabled to true', function() {
suite('but _enabled is true already, do nothing', function() {
setup(function() {
this.sinon.spy(subject.airplaneModeServiceHelper, 'updateStatus');
subject._enabled = true;
subject.enabled = true;
});
test('nothing happend', function() {
assert.isFalse(subject.airplaneModeServiceHelper.updateStatus.called);
});
});
suite('_enabled is false, keep running', function() {
setup(function() {
this.sinon.stub(subject.airplaneModeServiceHelper, 'updateStatus');
subject._enabled = false;
// we have to make eventListeners to the newest state
MockNavigatorMozMobileConnections.mAddMobileConnection();
});
teardown(function() {
// we have to make eventListeners to the newest state
MockNavigatorMozMobileConnections.mTeardown();
});
suite('conn0 is enabling, conn1 is enabling', function() {
setup(function() {
this.sinon.stub(subject, '_updateAirplaneModeStatus');
setConnection(0, 'enabling');
setConnection(1, 'enabling');
subject.enabled = true;
});
test('no further steps because we are waiting for other events',
function() {
assert.isTrue(subject._updateAirplaneModeStatus.called);
});
});
suite('conn0 is enabling, conn1 is enabled', function() {
setup(function() {
this.sinon.stub(subject, '_updateAirplaneModeStatus');
setConnection(0, 'enabling');
setConnection(1, 'enabled');
subject.enabled = true;
});
test('no further steps because we are waiting for other events',
function() {
assert.isTrue(subject._updateAirplaneModeStatus.called);
});
});
suite('conn0 is enabled, conn1 is enabled', function() {
// we will wait for these two services
suiteSetup(function() {
setSettingOnServiceHelper('wifi.enabled', true);
setSettingOnServiceHelper('bluetooth.enabled', true);
});
suiteTeardown(function() {
setSettingOnServiceHelper('wifi.enabled', false);
setSettingOnServiceHelper('bluetooth.enabled', false);
});
setup(function() {
setConnection(0, 'enabled');
setConnection(1, 'enabled');
subject.enabled = true;
});
test('no further steps because we are waiting for other events',
function() {
// but because we are still waiting for the other window event,
// we we will not execute further steps
var checkedActions = subject._getCheckedActions(true);
assert.isFalse(
subject._areCheckedActionsAllDone(checkedActions));
});
});
suite('conn0 is enabled, conn1 is enabled', function() {
setup(function() {
setConnection(0, 'enabled');
setConnection(1, 'enabled');
this.sinon.stub(subject, 'writeSetting');
subject.enabled = true;
});
test('all other services are also done, we are in airplaneMode',
function() {
emitEvent('wifi-disabled');
emitEvent('bluetooth-disabled');
emitEvent('radio-disabled');
assert.deepEqual(subject.writeSetting.getCall(0).args[0], {
'airplaneMode.status': 'enabled',
'airplaneMode.enabled': true,
'ril.radio.disabled': true
});
assert.isTrue(subject.icon.update.called);
});
});
});
});
suite('AirplaneMode is enabled now', function() {
suite('but users want to dial out an emergency call', function() {
setup(function() {
subject._enabled = true;
setConnection(0, 'enabled');
setConnection(1, 'enabled');
});
test('we will leave airplane mode', function() {
emitEvent('radiostatechange', 'enabled');
emitEvent('wifi-enabled');
emitEvent('bluetooth-enabled');
emitEvent('radio-enabled');
assert.isTrue(subject.enabled);
});
});
});
// test helpers
function setSettingOnServiceHelper(key, value) {
subject.airplaneModeServiceHelper._settings[key] = value;
}
function setConnection(connIndex, status) {
MockNavigatorMozMobileConnections[connIndex].radioState = status;
}
function emitEvent(eventName, detail) {
var evt = new CustomEvent(eventName, {
detail: detail || null
});
window.dispatchEvent(evt);
}
});