summaryrefslogtreecommitdiff
path: root/legacy/RDFManifestConverter.jsm
diff options
context:
space:
mode:
authorgirst <girst@users.noreply.github.com>2024-03-03 12:59:18 +0100
committergirst <girst@users.noreply.github.com>2024-03-03 13:18:04 +0100
commit88413358677fd59dc360076e0a62c2c559f50e38 (patch)
tree376d89eebbd27b452bc30ff7201b46047b32612a /legacy/RDFManifestConverter.jsm
parent25664f0b2c3238704c7509cc661d52b6b5763599 (diff)
downloadlegacywolf-88413358677fd59dc360076e0a62c2c559f50e38.tar.gz
legacywolf-88413358677fd59dc360076e0a62c2c559f50e38.zip
port legacyfox to ecmascript modules
mozilla calls this 'esm-ification'. the last relevant to us modules were ported in mozilla124[1], so this is our new minimum version. the old version will likely be compatible with firefox up to version 128esr[2]. static imports are not supported in autoconfig scripts. i tried to keep the diff as small as possible w.r.t comm-central's final JSMs. because of this, we don't lazy-load any modules any more, nor provide any lazy getters, as they would need to be loaded into a `lazy` object instead the global (`this`) namespace, causing more churn. other than that, the largest change was removing the now-useless Services.jsm workaround as well as removing globalGetters for objects already loaded automatically. [1]: https://hg.mozilla.org/mozilla-central/rev/68ba071ff6fb9978937496f9adc48e378957f594 [2]: bugzil.la/1881890
Diffstat (limited to 'legacy/RDFManifestConverter.jsm')
-rw-r--r--legacy/RDFManifestConverter.jsm110
1 files changed, 0 insertions, 110 deletions
diff --git a/legacy/RDFManifestConverter.jsm b/legacy/RDFManifestConverter.jsm
deleted file mode 100644
index cb01f6a..0000000
--- a/legacy/RDFManifestConverter.jsm
+++ /dev/null
@@ -1,110 +0,0 @@
- /* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-"use strict";
-
-var EXPORTED_SYMBOLS = ["InstallRDF"];
-
-ChromeUtils.defineModuleGetter(this, "RDFDataSource",
- "resource://legacy/RDFDataSource.jsm");
-
-const RDFURI_INSTALL_MANIFEST_ROOT = "urn:mozilla:install-manifest";
-
-function EM_R(aProperty) {
- return `http://www.mozilla.org/2004/em-rdf#${aProperty}`;
-}
-
-function getValue(literal) {
- return literal && literal.getValue();
-}
-
-function getProperty(resource, property) {
- return getValue(resource.getProperty(EM_R(property)));
-}
-
-class Manifest {
- constructor(ds) {
- this.ds = ds;
- }
-
- static loadFromString(text) {
- return new this(RDFDataSource.loadFromString(text));
- }
-
- static loadFromBuffer(buffer) {
- return new this(RDFDataSource.loadFromBuffer(buffer));
- }
-
- static async loadFromFile(uri) {
- return new this(await RDFDataSource.loadFromFile(uri));
- }
-}
-
-class InstallRDF extends Manifest {
- _readProps(source, obj, props) {
- for (let prop of props) {
- let val = getProperty(source, prop);
- if (val != null) {
- obj[prop] = val;
- }
- }
- }
-
- _readArrayProp(source, obj, prop, target, decode = getValue) {
- let result = Array.from(source.getObjects(EM_R(prop)),
- target => decode(target));
- if (result.length) {
- obj[target] = result;
- }
- }
-
- _readArrayProps(source, obj, props, decode = getValue) {
- for (let [prop, target] of Object.entries(props)) {
- this._readArrayProp(source, obj, prop, target, decode);
- }
- }
-
- _readLocaleStrings(source, obj) {
- this._readProps(source, obj, ["name", "description", "creator", "homepageURL"]);
- this._readArrayProps(source, obj, {
- locale: "locales",
- developer: "developers",
- translator: "translators",
- contributor: "contributors",
- });
- }
-
- decode() {
- let root = this.ds.getResource(RDFURI_INSTALL_MANIFEST_ROOT);
- let result = {};
-
- let props = ["id", "version", "type", "updateURL", "optionsURL",
- "optionsType", "aboutURL", "iconURL",
- "bootstrap", "unpack", "strictCompatibility"];
- this._readProps(root, result, props);
-
- let decodeTargetApplication = source => {
- let app = {};
- this._readProps(source, app, ["id", "minVersion", "maxVersion"]);
- return app;
- };
-
- let decodeLocale = source => {
- let localized = {};
- this._readLocaleStrings(source, localized);
- return localized;
- };
-
- this._readLocaleStrings(root, result);
-
- this._readArrayProps(root, result, {"targetPlatform": "targetPlatforms"});
- this._readArrayProps(root, result, {"targetApplication": "targetApplications"},
- decodeTargetApplication);
- this._readArrayProps(root, result, {"localized": "localized"},
- decodeLocale);
- this._readArrayProps(root, result, {"dependency": "dependencies"},
- source => getProperty(source, "id"));
-
- return result;
- }
-}