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,99 @@
'use strict';
suite('Languages > ', function() {
var mockKeyboardHelper;
var languages;
var realL10n;
var realMozActivity;
var OSVersion = '' + Math.random();
var modules = [
'shared_mocks/mock_l20n',
'shared_mocks/mock_keyboard_helper',
'shared_mocks/mock_moz_activity',
'unit/mock_settings_cache',
'panels/languages/languages'
];
var maps = {
'panels/languages/languages': {
'shared/keyboard_helper': 'shared_mocks/mock_keyboard_helper',
'modules/settings_cache': 'unit/mock_settings_cache',
'modules/date_time': 'MockDateTime'
}
};
suiteSetup(function(done) {
// Create a new requirejs context
var requireCtx = testRequire([], maps, function() {});
var that = this;
// Define MockDateTime
this.MockDateTime = {};
define('MockDateTime', function() {
return that.MockDateTime;
});
requireCtx(modules, function(
MockL10n, MockKeyboardHelper, MockMozActivity, MockSettingsCache,
Languages) {
// mock l10n
realL10n = document.l10n;
document.l10n = MockL10n;
// mock keyboard helper
mockKeyboardHelper = MockKeyboardHelper;
// mock MozActivity
realMozActivity = window.MozActivity;
window.MozActivity = MockMozActivity;
// mock SettingsCache
that.MockSettingsCache = MockSettingsCache;
MockSettingsCache.mockSettings({
'langpack.channel': OSVersion
});
languages = Languages();
languages.onInit({}, {
moreLanguages: document.createElement('a'),
langSel: document.createElement('select')
});
done();
});
});
suiteTeardown(function() {
this.MockSettingsCache.mTeardown();
document.l10n = realL10n;
window.MozActivity = realMozActivity;
});
suite('when localized change', function() {
setup(function() {
this.sinon.stub(mockKeyboardHelper, 'changeDefaultLayouts');
this.sinon.stub(languages, 'updateDateTime');
});
test('we would call update() and changeDefaultLayouts()', function() {
languages.onLocalized();
assert.ok(languages.updateDateTime.called);
assert.ok(mockKeyboardHelper.changeDefaultLayouts.called);
});
});
suite('when get more languages is activated', function() {
setup(function() {
window.MozActivity.mSetup();
});
teardown(function() {
window.MozActivity.mTeardown();
});
test('we launch a MozActivity', function() {
languages.showMoreLanguages();
assert.equal(window.MozActivity.calls[0].name, 'marketplace-category');
assert.equal(window.MozActivity.calls[0].data.slug, 'langpacks');
assert.equal(window.MozActivity.calls[0].data.fxos_version, OSVersion);
});
});
});

View file

@ -0,0 +1,130 @@
'use strict';
suite('Languages Panel > ', function() {
var realSettings;
var modules = [
'panels/languages/panel',
'shared_mocks/mock_navigator_moz_settings',
];
var map = {
'*': {
'panels/languages/languages': 'MockLanguages',
'modules/settings_panel': 'MockSettingsPanel'
}
};
suiteSetup(function(done) {
// Create a new requirejs context
var requireCtx = testRequire([], map, function() {});
var that = this;
// Define MockSettingsPanel
define('MockSettingsPanel', function() {
return function(options) {
return {
onBeforeShow: options.onBeforeShow,
onBeforeHide: options.onBeforeHide
};
};
});
// Define MockLanguages
this.mockLanguages = {
onLocalized: sinon.spy(),
buildList: sinon.spy(),
updateDateTime: sinon.spy(),
};
define('MockLanguages', function() {
return function MockLanguages() {
return that.mockLanguages;
};
});
requireCtx(modules, function(LanguagePanel, MockNavigatorSettings) {
realSettings = window.navigator.mozSettings;
window.navigator.mozSettings = MockNavigatorSettings;
that.panel = LanguagePanel();
done();
});
});
suiteTeardown(function() {
window.navigator.mozSettings = realSettings;
});
suite('panel has not been opened yet', function() {
setup(function() {
// spies are not sandboxed in order to make them available early for
// LanguagePanel to bind them; reset them manually here.
this.mockLanguages.onLocalized.reset();
this.mockLanguages.buildList.reset();
});
test('DOMRetranslated fires', function() {
document.dispatchEvent(new CustomEvent('DOMRetranslated'));
assert.isFalse(
this.mockLanguages.onLocalized.called, 'onLocalized was never called');
});
test('additionallanguageschange fires', function() {
document.dispatchEvent(new CustomEvent('additionallanguageschange'));
assert.isFalse(
this.mockLanguages.buildList.called, 'buildList was never called');
});
});
suite('panel is open', function() {
setup(function() {
this.panel.onBeforeShow();
this.mockLanguages.onLocalized.reset();
this.mockLanguages.buildList.reset();
});
teardown(function() {
this.panel.onBeforeHide();
});
test('localized fires', function() {
document.dispatchEvent(new CustomEvent('DOMRetranslated'));
assert.ok(
this.mockLanguages.onLocalized.called, 'onLocalized was called');
});
test('additionallanguageschange fires', function() {
document.dispatchEvent(new CustomEvent('additionallanguageschange'));
assert.ok(
this.mockLanguages.buildList.called, 'buildList was called');
});
});
suite('screen reader was started', function() {
setup(function() {
this.panel.onBeforeShow();
});
test('language list updated', function() {
this.mockLanguages.buildList.reset();
navigator.mozSettings.mTriggerObservers(
'accessibility.screenreader', { settingValue: true });
assert.isTrue(
this.mockLanguages.buildList.called, 'buildList was never called');
});
});
suite('panel was closed', function() {
setup(function() {
this.panel.onBeforeShow();
this.panel.onBeforeHide();
this.mockLanguages.onLocalized.reset();
this.mockLanguages.buildList.reset();
});
test('localized fires', function() {
window.dispatchEvent(new CustomEvent('localized'));
assert.isFalse(
this.mockLanguages.onLocalized.called, 'onLocalized was never called');
});
test('additionallanguageschange fires', function() {
document.dispatchEvent(new CustomEvent('additionallanguageschange'));
assert.isFalse(
this.mockLanguages.buildList.called, 'buildList was never called');
});
});
});