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,181 @@
/**
* Handle support panel functionality with SIM and without SIM
*
* @module developer/developer
*/
define(function(require) {
'use strict';
var DialogService = require('modules/dialog_service');
var AppsCache = require('modules/apps_cache');
var ScreenLayout = require('shared/screen_layout');
var SettingsCache = require('modules/settings_cache');
var HomescreenSettings = require('shared/homescreens/homescreen_settings');
const DEVTOOLS_UNRESTRICTED_KEY = 'devtools.unrestricted';
/**
* @alias module:developer/developer
* @class Developer
* @returns {Developer}
*/
var Developer = function() {
this._elements = null;
};
Developer.prototype = {
/**
* Initialization.
*
* @access public
* @memberOf Developer.prototype
* @param {HTMLElement} elements
*/
init: function d_init(elements) {
this._elements = elements;
this._elements.ftuLauncher.addEventListener('click', this._launchFTU);
// hide software home button whenever the device has no hardware
// home button
if (!ScreenLayout.getCurrentLayout('hardwareHomeButton')) {
this._elements.softwareHomeButton.style.display = 'none';
// always set homegesture enabled on tablet, so hide the setting
if (!ScreenLayout.getCurrentLayout('tiny')) {
this._elements.homegesture.style.display = 'none';
}
}
if (navigator.mozPower) {
this._elements.resetSwitch.disabled = false;
this._elements.resetSwitch.addEventListener('click', event => {
this._resetDevice();
// The switch is updated based on the setting.
event.preventDefault();
});
} else {
// disable button if mozPower is undefined or can't be used
this._elements.resetSwitch.disabled = true;
}
// Listen to home screen paging setting
HomescreenSettings.addEventListener('updated', e => {
var prop = e.target;
if (prop.name === 'grid.paging') {
this._homescreenPagingEnabled = prop.value;
this._elements.homescreenPaging.checked = prop.value;
}
});
// Listen to checked/unchecked
this._elements.homescreenPaging.addEventListener('change', () => {
this._setHomescreenPaging(this._elements.homescreenPaging.checked);
});
// Set the default value.
HomescreenSettings.get('grid.paging').then(value => {
this._homescreenPagingEnabled = value;
this._elements.homescreenPaging.checked = value;
});
},
/**
* launch FTU app.
*
* @access private
* @memberOf Developer.prototype
*/
_launchFTU: function d__launchFTU() {
var key = 'ftu.manifestURL';
var req = navigator.mozSettings.createLock().get(key);
req.onsuccess = function ftuManifest() {
var ftuManifestURL = req.result[key];
// fallback if no settings present
if (!ftuManifestURL) {
ftuManifestURL = document.location.protocol +
'//ftu.gaiamobile.org' +
(location.port ? (':' + location.port) : '') +
'/manifest.webapp';
}
var ftuApp = null;
AppsCache.apps().then(function(apps) {
for (var i = 0; i < apps.length && ftuApp === null; i++) {
var app = apps[i];
if (app.manifestURL === ftuManifestURL) {
ftuApp = app;
}
}
if (ftuApp) {
ftuApp.launch();
} else {
DialogService.alert('no-ftu', {title: 'no-ftu'});
}
});
};
},
/**
* popup warning dialog.
*
* @access private
* @memberOf Developer.prototype
*/
_resetDevice: function d__resetDevice() {
SettingsCache.getSettings(results => {
var unrestricted = results[DEVTOOLS_UNRESTRICTED_KEY];
if (unrestricted) {
DialogService.confirm('reset-devtools-warning-body', {
title: 'reset-devtools-warning-title',
submitButton: 'factory-reset',
cancelButton: 'cancel'
}).then((result) => {
var type = result.type;
if (type === 'submit') {
this._wipe('normal');
}
});
} else {
DialogService.show('full-developer-mode-warning').then((result) => {
if (result.type === 'submit' &&
result.value === 'final_warning') {
DialogService.show('full-developer-mode-final-warning');
}
});
}
});
},
/**
* Reset and enable full DevTools access.
*
* @access private
* @memberOf Developer.prototype
*/
_wipe: function about__wipe(reason) {
var power = navigator.mozPower;
if (!power) {
console.error('Cannot get mozPower');
return;
}
if (!power.factoryReset) {
console.error('Cannot invoke mozPower.factoryReset()');
return;
}
power.factoryReset(reason);
},
_setHomescreenPaging: function d__setHomescrenPaging(paging) {
if (this._homescreenPagingEnabled === paging) {
return;
}
HomescreenSettings.put('grid.paging', paging);
}
};
return function ctor_developer_panel() {
return new Developer();
};
});

View file

@ -0,0 +1,26 @@
/**
* Used to show Device/developer panel
*/
define(function(require) {
'use strict';
var SettingsPanel = require('modules/settings_panel');
var Developer = require('panels/developer/developer');
return function ctor_developer_panel() {
var developer = Developer();
return SettingsPanel({
onInit: function(panel) {
var elements = {
resetSwitch: panel.querySelector('.reset-devtools'),
ftuLauncher: panel.querySelector('.ftuLauncher'),
softwareHomeButton: panel.querySelector('.software-home-button'),
homegesture: panel.querySelector('.homegesture'),
homescreenPaging: panel.querySelector('.homescreen-paging')
};
developer.init(elements);
}
});
};
});