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

96
gaia/shared/js/url_helper.js Executable file
View file

@ -0,0 +1,96 @@
'use strict';
var rscheme = /^(?:[a-z\u00a1-\uffff0-9-+]+)(?::(?:\/\/)?)/i;
var UrlHelper = {
// Placeholder anchor tag to format URLs.
a: null,
getUrlFromInput: function urlHelper_getUrlFromInput(input) {
this.a = this.a || document.createElement('a');
this.a.href = input;
return this.a.href;
},
_getScheme: function(input) {
// This function returns one of followings
// - scheme + ':' (ex. http:)
// - scheme + '://' (ex. http://)
// - null
return (rscheme.exec(input) || [])[0];
},
hasScheme: function(input) {
return !!this._getScheme(input);
},
isURL: function urlHelper_isURL(input) {
return !UrlHelper.isNotURL(input);
},
isNotURL: function urlHelper_isNotURL(input) {
// in bug 904731, we use <input type='url' value=''> to
// validate url. However, there're still some cases
// need extra validation. We'll remove it til bug fixed
// for native form validation.
//
// for cases, ?abc and "a? b" which should searching query
var case1Reg = /^(\?)|(\?.+\s)/;
// for cases, pure string
var case2Reg = /[\?\.\s\:]/;
// for cases, data:uri and view-source:uri
var case3Reg = /^(data|view-source)\:/;
var str = input.trim();
if (case1Reg.test(str) || !case2Reg.test(str) ||
this._getScheme(str) === str) {
return true;
}
if (case3Reg.test(str)) {
return false;
}
// require basic scheme before form validation
if (!this.hasScheme(str)) {
str = 'http://' + str;
}
if (!this.urlValidate) {
this.urlValidate = document.createElement('input');
this.urlValidate.setAttribute('type', 'url');
}
this.urlValidate.setAttribute('value', str);
return !this.urlValidate.validity.valid;
},
/**
* Resolve a URL against a base URL.
*
* @param url String URL to resolve.
* @param baseURL String Base URL to resolve against.
* @returns String resolved URL or null.
*/
resolveUrl: function urlHelper_resolveURL(url, baseUrl) {
if (!url) {
return null;
}
try {
return new URL(url, baseUrl).href;
} catch(e) {
return null;
}
},
/**
* Get the hostname from a URL.
*
* @param String URL to process.
* @returns String hostname of URL.
*/
getHostname: function urlHelper_getHostname(url) {
try {
return new URL(url).hostname;
} catch(e) {
return null;
}
}
};