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,58 @@
suite('Addons List >', function() {
'use strict';
var addonsList;
suiteSetup(function(done) {
var map = {
'*': {
'modules/settings_service': 'unit/mock_settings_service',
'modules/mvvm/list_view': 'unit/mock_list_view'
}
};
var modules = [
'panels/addons/addons_list',
'MockAddonManager'
];
define('MockAddonManager', function() {
return {
addons: {
addEventListener: function() {},
array: []
}
};
});
testRequire(modules, map, function(AddonsList, MockAddonManager) {
addonsList = AddonsList(document.body, MockAddonManager);
done();
});
});
suite('_sortByName >', function() {
test('addons should be in alphabetical order (case insensitive)',
function() {
var addons = [
{ _app: { manifest: { name: 'second' } } },
{ _app: { manifest: { name: 'X Last' } } },
{ _app: { manifest: { name: 'Third' } } },
{ _app: { manifest: { name: '1st' } } },
];
var sortedAddons = [
{ _app: { manifest: { name: '1st' } } },
{ _app: { manifest: { name: 'second' } } },
{ _app: { manifest: { name: 'Third' } } },
{ _app: { manifest: { name: 'X Last' } } }
];
assert.deepEqual(
addonsList._sortByName(addons),
sortedAddons,
'addons should be in the right order'
);
}
);
});
});

View file

@ -0,0 +1,82 @@
/* globals loadBodyHTML*/
'use strict';
require('/shared/test/unit/load_body_html_helper.js');
suite('Addons Panel > ', function() {
var modules = [
'panels/addons/panel',
'panels/addons/addons_list',
'unit/mock_addon_manager',
'unit/mock_settings_panel'
];
var map = {
'*': {
'modules/settings_panel': 'unit/mock_settings_panel',
'panels/addons/addons_list': 'MockAddonsList',
'modules/addon_manager': 'unit/mock_addon_manager'
}
};
suiteSetup(function(done) {
loadBodyHTML('_addons.html');
// Create a new requirejs context
var requireCtx = testRequire([], map, function() {});
var that = this;
var MockAddonsList = {
setFilter: sinon.stub().returns({
then: function(callback) { callback(); }
}),
unsetFilter: sinon.stub().returns({
then: function(callback) { callback(); }
}),
set enabled(value) { this._enabled = value; },
get enabled() { return this._enabled; }
};
define('MockAddonsList', function() {
return function() {
return MockAddonsList;
};
});
requireCtx(modules, function(AddonsPanel, MockAddonsList,
MockAddonManager, MockSettingsPanel) {
MockSettingsPanel.mInnerFunction = options => Object.assign({}, options);
that.panel = AddonsPanel();
that.addonsList = MockAddonsList();
done();
});
});
suite('panel initialized', function() {
setup(function() {
this.panel.onInit(document.body);
assert.notOk(this.addonsList.enabled);
this.panel.onBeforeShow();
});
test('no filter should be set', function() {
assert(this.addonsList.setFilter.notCalled);
assert.isTrue(this.addonsList.enabled);
});
});
suite('panel initialized with filter', function() {
setup(function() {
this.panel.onInit(document.body);
this.panel.onBeforeShow(document.body, { manifestURL: 'test' });
});
test('filter should be set', function() {
assert(this.addonsList.setFilter.calledOnce);
assert.isTrue(this.addonsList.enabled);
});
test('filter should be unset', function() {
this.panel.onBeforeHide();
assert(this.addonsList.unsetFilter.calledOnce);
assert.isFalse(this.addonsList.enabled);
});
});
});