forked from mirrors/gecko-dev
***
Bug 1514594: Part 3a - Change ChromeUtils.import to return an exports object; not pollute global. r=mccr8
This changes the behavior of ChromeUtils.import() to return an exports object,
rather than a module global, in all cases except when `null` is passed as a
second argument, and changes the default behavior not to pollute the global
scope with the module's exports. Thus, the following code written for the old
model:
ChromeUtils.import("resource://gre/modules/Services.jsm");
is approximately the same as the following, in the new model:
var {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
Since the two behaviors are mutually incompatible, this patch will land with a
scripted rewrite to update all existing callers to use the new model rather
than the old.
***
Bug 1514594: Part 3b - Mass rewrite all JS code to use the new ChromeUtils.import API. rs=Gijs
This was done using the followng script:
https://bitbucket.org/kmaglione/m-c-rewrites/src/tip/processors/cu-import-exports.jsm
***
Bug 1514594: Part 3c - Update ESLint plugin for ChromeUtils.import API changes. r=Standard8
Differential Revision: https://phabricator.services.mozilla.com/D16747
***
Bug 1514594: Part 3d - Remove/fix hundreds of duplicate imports from sync tests. r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D16748
***
Bug 1514594: Part 3e - Remove no-op ChromeUtils.import() calls. r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D16749
***
Bug 1514594: Part 3f.1 - Cleanup various test corner cases after mass rewrite. r=Gijs
***
Bug 1514594: Part 3f.2 - Cleanup various non-test corner cases after mass rewrite. r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D16750
--HG--
extra : rebase_source : 359574ee3064c90f33bf36c2ebe3159a24cc8895
extra : histedit_source : b93c8f42808b1599f9122d7842d2c0b3e656a594%2C64a3a4e3359dc889e2ab2b49461bab9e27fc10a7
95 lines
3.4 KiB
JavaScript
95 lines
3.4 KiB
JavaScript
/* 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";
|
|
|
|
/* import-globals-from aboutDialog-appUpdater.js */
|
|
|
|
// Services = object with smart getters for common XPCOM services
|
|
const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
|
|
const {AppConstants} = ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
|
|
|
|
async function init(aEvent) {
|
|
if (aEvent.target != document)
|
|
return;
|
|
|
|
var distroId = Services.prefs.getCharPref("distribution.id", "");
|
|
if (distroId) {
|
|
var distroString = distroId;
|
|
|
|
var distroVersion = Services.prefs.getCharPref("distribution.version", "");
|
|
if (distroVersion) {
|
|
distroString += " - " + distroVersion;
|
|
}
|
|
|
|
var distroIdField = document.getElementById("distributionId");
|
|
distroIdField.value = distroString;
|
|
distroIdField.style.display = "block";
|
|
|
|
var distroAbout = Services.prefs.getStringPref("distribution.about", "");
|
|
if (distroAbout) {
|
|
var distroField = document.getElementById("distribution");
|
|
distroField.value = distroAbout;
|
|
distroField.style.display = "block";
|
|
}
|
|
}
|
|
|
|
// Include the build ID and display warning if this is an "a#" (nightly or aurora) build
|
|
let versionId = "aboutDialog-version";
|
|
let versionAttributes = {
|
|
version: AppConstants.MOZ_APP_VERSION_DISPLAY,
|
|
bits: Services.appinfo.is64Bit ? 64 : 32,
|
|
};
|
|
|
|
let version = Services.appinfo.version;
|
|
if (/a\d+$/.test(version)) {
|
|
versionId = "aboutDialog-version-nightly";
|
|
let buildID = Services.appinfo.appBuildID;
|
|
let year = buildID.slice(0, 4);
|
|
let month = buildID.slice(4, 6);
|
|
let day = buildID.slice(6, 8);
|
|
versionAttributes.isodate = `${year}-${month}-${day}`;
|
|
|
|
document.getElementById("experimental").hidden = false;
|
|
document.getElementById("communityDesc").hidden = true;
|
|
}
|
|
|
|
// Use Fluent arguments for append version and the architecture of the build
|
|
let versionField = document.getElementById("version");
|
|
|
|
document.l10n.setAttributes(versionField, versionId, versionAttributes);
|
|
|
|
await document.l10n.translateElements([versionField]);
|
|
window.sizeToContent();
|
|
|
|
// Show a release notes link if we have a URL.
|
|
let relNotesLink = document.getElementById("releasenotes");
|
|
let relNotesPrefType = Services.prefs.getPrefType("app.releaseNotesURL");
|
|
if (relNotesPrefType != Services.prefs.PREF_INVALID) {
|
|
let relNotesURL = Services.urlFormatter.formatURLPref("app.releaseNotesURL");
|
|
if (relNotesURL != "about:blank") {
|
|
relNotesLink.href = relNotesURL;
|
|
relNotesLink.hidden = false;
|
|
}
|
|
}
|
|
|
|
if (AppConstants.MOZ_UPDATER) {
|
|
gAppUpdater = new appUpdater({ buttonAutoFocus: true });
|
|
|
|
let channelLabel = document.getElementById("currentChannel");
|
|
let currentChannelText = document.getElementById("currentChannelText");
|
|
channelLabel.value = UpdateUtils.UpdateChannel;
|
|
if (/^release($|\-)/.test(channelLabel.value))
|
|
currentChannelText.hidden = true;
|
|
}
|
|
|
|
if (AppConstants.MOZ_APP_VERSION_DISPLAY.endsWith("esr")) {
|
|
document.getElementById("release").hidden = false;
|
|
}
|
|
if (AppConstants.platform == "macosx") {
|
|
// it may not be sized at this point, and we need its width to calculate its position
|
|
window.sizeToContent();
|
|
window.moveTo((screen.availWidth / 2) - (window.outerWidth / 2), screen.availHeight / 5);
|
|
}
|
|
}
|