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,269 @@
/* global MocksHelper, BaseModule, MockNavigatorSettings, asyncStorage,
Service, Deferred */
'use strict';
requireApp('system/shared/test/unit/mocks/mock_navigator_moz_settings.js');
require('/shared/test/unit/mocks/mock_lazy_loader.js');
requireApp('system/test/unit/mock_asyncStorage.js');
requireApp('system/test/unit/deferred.js');
requireApp('system/js/service.js');
requireApp('system/js/base_module.js');
requireApp('system/js/settings_core.js');
requireApp('system/js/launcher.js');
var mocksForLauncher = new MocksHelper([
'NavigatorSettings', 'asyncStorage', 'LazyLoader'
]).init();
suite('system/launcher', function() {
var subject, settingsCore;
var realMozSettings;
mocksForLauncher.attachTestHelpers();
var fakeFtuLauncher, fakeHomescreenLauncher, fakeLockscreenLauncher;
var fakeWallpaperManager, fakeCoverScreen;
var fakeLockScreen;
var deferreds = {};
suiteSetup(function() {
realMozSettings = navigator.mozSettings;
navigator.mozSettings = MockNavigatorSettings;
MockNavigatorSettings.mSyncRepliesOnly = true;
});
suiteTeardown(function() {
navigator.mozSettings = realMozSettings;
});
setup(function() {
deferreds.setPassCodeEnabled = new Deferred();
deferreds.onPasscodeEnabledChanged = new Deferred();
deferreds['FtuLauncher:launch'] = new Deferred();
deferreds['FtuLauncher:skip'] = new Deferred();
deferreds['FtuLauncher:stepReady'] = new Deferred();
deferreds['HomescreenLauncher:launch'] = new Deferred();
deferreds['LockScreenLauncher:launch'] = new Deferred();
deferreds['LockScreenLauncher:standby'] = new Deferred();
deferreds['WallpaperManager:initializeWallpaper'] = new Deferred();
deferreds['CoverScreen:animatePoweronLogo'] = new Deferred();
settingsCore = BaseModule.instantiate('SettingsCore');
settingsCore.start();
fakeFtuLauncher = {
name: 'FtuLauncher',
launch: sinon.spy(function() {
return deferreds['FtuLauncher:launch'].promise;
}),
skip: sinon.spy(function() {
return deferreds['FtuLauncher:skip'].promise;
}),
stepReady: sinon.spy(function() {
return deferreds['FtuLauncher:stepReady'].promise;
})
};
fakeHomescreenLauncher = {
name: 'HomescreenLauncher',
launch: sinon.spy(function() {
return deferreds['HomescreenLauncher:launch'].promise;
})
};
fakeLockscreenLauncher = {
name: 'LockScreenLauncher',
launch: sinon.spy(function() {
return deferreds['LockScreenLauncher:launch'].promise;
}),
standby: sinon.spy(function() {
return deferreds['LockScreenLauncher:standby'].promise;
})
};
fakeWallpaperManager = {
name: 'WallpaperManager',
initializeWallpaper: sinon.spy(function() {
return deferreds['WallpaperManager:initializeWallpaper'].promise;
})
};
fakeCoverScreen = {
name: 'CoverScreen',
animatePoweronLogo: sinon.spy(function() {
return deferreds['CoverScreen:animatePoweronLogo'].promise;
})
};
fakeLockScreen = {
name: 'LockScreen',
setPassCodeEnabled: sinon.spy(function() {
return deferreds.setPassCodeEnabled.promise;
}),
onPasscodeEnabledChanged: sinon.spy(function() {
return deferreds.onPasscodeEnabledChanged.promise;
})
};
Service.register('launch', fakeFtuLauncher);
Service.register('stepReady', fakeFtuLauncher);
Service.register('skip', fakeFtuLauncher);
Service.register('launch', fakeHomescreenLauncher);
Service.register('initializeWallpaper', fakeWallpaperManager);
Service.register('launch', fakeLockscreenLauncher);
Service.register('standby', fakeLockscreenLauncher);
Service.register('animatePoweronLogo', fakeCoverScreen);
Service.register('setPassCodeEnabled', fakeLockScreen);
Service.register('onPasscodeEnabledChanged', fakeLockScreen);
subject = BaseModule.instantiate('Launcher');
});
teardown(function() {
settingsCore.stop();
subject.stop();
});
function setLaunchConfig(shouldFtu, ftuManifest,
osVersion, preOsVersion, homeManifest, enableLockscreen,
wallpaper, valid, bPasscode) {
asyncStorage.mItems['ftu.enabled'] = shouldFtu;
MockNavigatorSettings.mSettings['lockscreen.enabled'] = enableLockscreen;
MockNavigatorSettings.mSettings['ftu.manifestURL'] = ftuManifest;
MockNavigatorSettings.mSettings['homescreen.manifestURL'] = homeManifest;
MockNavigatorSettings.mSettings['deviceinfo.os'] = osVersion;
MockNavigatorSettings.mSettings['deviceinfo.previous_os'] = preOsVersion;
MockNavigatorSettings.mSettings['wallpaper.image'] = wallpaper;
MockNavigatorSettings.mSettings['wallpaper.image.valid'] = valid;
MockNavigatorSettings.mSettings['lockscreen.passcode-lock.enabled'] =
bPasscode;
}
test('Should launch homescreen after ftu is launched', function(done) {
subject.scheduler = {
release: this.sinon.spy()
};
subject.launchFtuThenHomescreen('ftu', 'home').then(function() {
assert.isTrue(subject.scheduler.release.called);
done();
});
deferreds['FtuLauncher:launch'].resolve();
deferreds['WallpaperManager:initializeWallpaper'].resolve();
deferreds['HomescreenLauncher:launch'].resolve();
deferreds['CoverScreen:animatePoweronLogo'].resolve();
deferreds['FtuLauncher:stepReady'].resolve();
deferreds['LockScreenLauncher:standby'].resolve();
});
test('LaunchLockscreenThenHomescreen', function(done) {
subject.scheduler = {
release: this.sinon.spy()
};
subject.launchLockscreenThenHomescreen('home').then(function() {
assert.isTrue(subject.scheduler.release.called);
done();
});
deferreds['FtuLauncher:skip'].resolve();
deferreds['WallpaperManager:initializeWallpaper'].resolve();
deferreds['LockScreenLauncher:launch'].resolve();
deferreds.onPasscodeEnabledChanged.resolve();
deferreds.setPassCodeEnabled.resolve();
deferreds['CoverScreen:animatePoweronLogo'].resolve();
deferreds['HomescreenLauncher:launch'].resolve();
});
test('launchHomescreenAndStandbyLockscreen', function(done) {
subject.scheduler = {
release: this.sinon.spy()
};
subject.launchHomescreenAndStandbyLockscreen('home').then(function() {
assert.isTrue(subject.scheduler.release.called);
done();
});
deferreds['FtuLauncher:skip'].resolve();
deferreds['WallpaperManager:initializeWallpaper'].resolve();
deferreds['LockScreenLauncher:standby'].resolve();
deferreds['HomescreenLauncher:launch'].resolve();
deferreds['CoverScreen:animatePoweronLogo'].resolve();
});
test('should read settings', function(done) {
setLaunchConfig();
subject.start().then(function() {
done();
});
});
suite('launch config', function() {
test('Should launch ftu if ftu is enabled and ftu manifestURL found',
function(done) {
this.sinon.spy(subject.service, 'request');
setLaunchConfig(true, 'ftu');
subject.start().then(function() {
assert.isTrue(
subject.service.request.calledWith('FtuLauncher:launch', 'ftu'));
assert.isTrue(
subject.service.request.calledWith('stepReady', 'done'));
done();
});
});
test('Should launch homescreen if lockscreen is disabled',
function(done) {
this.sinon.spy(subject.service, 'request');
setLaunchConfig(false, 'ftu', null, null, 'home', false);
subject.start().then(function() {
assert.isTrue(
subject.service.request.calledWith('FtuLauncher:skip'));
assert.isTrue(
subject.service.request.calledWith(
'HomescreenLauncher:launch', 'home'));
assert.isTrue(
subject.service.request.calledWith('LockScreenLauncher:standby'));
done();
});
});
test('Should launch lockscreen if lockscreen is enabled',
function(done) {
this.sinon.spy(subject.service, 'request');
setLaunchConfig(false, 'ftu', null, null, 'home', true);
subject.start().then(function() {
assert.isTrue(
subject.service.request.calledWith(
'WallpaperManager:initializeWallpaper'));
// Not able to test the promise chain here.
done();
});
});
test('Should trigger Ftu if we are upgrading now',
function(done) {
this.sinon.spy(subject.service, 'request');
setLaunchConfig(false, 'ftu',
'3.0.0-release', '2.2.0-release', 'home', true);
this.sinon.spy(subject, 'checkUpgrading');
subject.start().then(function() {
assert.isTrue(subject.checkUpgrading.calledOnce);
assert.ok(subject.checkUpgrading.firstCall.returnValue);
assert.isTrue(
subject.service.request.calledWith('FtuLauncher:launch', 'ftu'));
assert.isTrue(subject.justUpgraded());
}).then(done, function(ex) { done(ex); });
});
});
suite('checkUpgrading', function() {
test('no previous version', function() {
var isUpgrading = subject.checkUpgrading('3.0.0-release', null);
assert.isFalse(isUpgrading);
});
test('sub-point upgrade', function() {
var isUpgrading = subject.checkUpgrading(
'3.0.1-release', '3.0.0-release');
assert.isFalse(isUpgrading);
});
test('point upgrade', function() {
var isUpgrading = subject.checkUpgrading(
'3.1.1-release', '3.0.0-release');
assert.isTrue(isUpgrading);
});
test('major version upgrade', function() {
var isUpgrading = subject.checkUpgrading(
'3.1.1-release', '2.2.0-release');
assert.isTrue(isUpgrading);
});
});
});