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,100 @@
'use strict';
/* global Icon, eventSafety, Service */
(function(exports) {
exports.TaskManagerUtils = {
getDisplayUrlForApp(app) {
var url = '';
if (app.isBrowser()) {
url = app.config.url || app.origin;
// Do not display the URL when browsing an app page. This is
// encountered for use-cases like the private browser splash page.
if (url.startsWith('app://')) {
url = '';
}
} else {
var frame = app.getFrameForScreenshot();
if (frame && frame.src) {
var srcUrl = new URL(frame.src);
var originUrl = new URL(app.origin);
var isSameOrigin = (srcUrl.protocol === originUrl.protocol &&
srcUrl.hostname === originUrl.hostname &&
srcUrl.port === originUrl.port);
url = srcUrl.protocol + '//' + srcUrl.hostname;
if (srcUrl.protocol === 'app:' || isSameOrigin) {
url = '';
}
}
}
// Strip the protocol.
if (url) {
url = url.substring(url.indexOf(new URL(url, app.origin).host));
}
return url;
},
loadAppIcon(app, element, size) {
return app.getSiteIconUrl(size).then((iconObject) => {
if (iconObject && iconObject.originalUrl) {
var icon = new Icon(element, iconObject.originalUrl);
return new Promise(resolve => {
icon.renderBlob(iconObject.blob, { size: size, onLoad: resolve });
});
}
}, (err) => {
element.classList.remove('pending');
console.warn('getSiteIconUrl failed to resolve an icon:', err.message);
}).then(() => {
element.classList.remove('pending');
});
},
waitForAppToClose(app) {
if (!app) {
return Promise.resolve();
} else if (app.isHomescreen) {
return eventSafety(window, 'homescreenclosed', 400);
} else {
return eventSafety(window, 'appclosed', 400);
}
},
waitForScreenToBeReady() {
var defaultOrientation = Service.query('defaultOrientation');
var currentOrientation = Service.query('fetchCurrentOrientation');
screen.mozLockOrientation(defaultOrientation);
if (document.mozFullScreen) {
document.mozCancelFullScreen();
}
var promisesToWaitFor = [];
if (Service.query('keyboardEnabled')) {
promisesToWaitFor.push(eventSafety(window, 'keyboardhidden', 400));
}
if (defaultOrientation.split('-')[0] !==
currentOrientation.split('-')[0]) {
promisesToWaitFor.push(eventSafety(window, 'resize', 400));
}
return Promise.all(promisesToWaitFor).then(() => {
var app = Service.query('AppWindowManager.getActiveWindow');
if (app && !app.isHomescreen) {
return new Promise((resolve) => {
app.getScreenshot(resolve, 0, 0, 400);
});
}
});
},
};
})(window);