gecko-dev/devtools/client/webide/content/details.js
Kris Maglione e930b89c34 Bug 1514594: Part 3 - Change ChromeUtils.import API.
***
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
2019-01-17 10:18:31 -08:00

124 lines
4.1 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/. */
const {require} = ChromeUtils.import("resource://devtools/shared/Loader.jsm");
const {AppManager} = require("devtools/client/webide/modules/app-manager");
window.addEventListener("load", function() {
document.addEventListener("visibilitychange", updateUI, true);
AppManager.on("app-manager-update", onAppManagerUpdate);
updateUI();
}, {capture: true, once: true});
window.addEventListener("unload", function() {
AppManager.off("app-manager-update", onAppManagerUpdate);
}, {capture: true, once: true});
function onAppManagerUpdate(what, details) {
if (what == "project" ||
what == "project-validated") {
updateUI();
}
}
function resetUI() {
document.querySelector("#toolbar").classList.add("hidden");
document.querySelector("#type").classList.add("hidden");
document.querySelector("#descriptionHeader").classList.add("hidden");
document.querySelector("#manifestURLHeader").classList.add("hidden");
document.querySelector("#locationHeader").classList.add("hidden");
document.body.className = "";
document.querySelector("#icon").src = "";
document.querySelector("h1").textContent = "";
document.querySelector("#description").textContent = "";
document.querySelector("#type").textContent = "";
document.querySelector("#manifestURL").textContent = "";
document.querySelector("#location").textContent = "";
document.querySelector("#errorslist").innerHTML = "";
document.querySelector("#warningslist").innerHTML = "";
}
function updateUI() {
resetUI();
const project = AppManager.selectedProject;
if (!project) {
return;
}
if (project.type != "runtimeApp" && project.type != "mainProcess") {
document.querySelector("#toolbar").classList.remove("hidden");
document.querySelector("#locationHeader").classList.remove("hidden");
document.querySelector("#location").textContent = project.location;
}
document.body.className = project.validationStatus;
document.querySelector("#icon").src = project.icon;
document.querySelector("h1").textContent = project.name;
let manifest;
if (project.type == "runtimeApp") {
manifest = project.app.manifest;
} else {
manifest = project.manifest;
}
if (manifest) {
if (manifest.description) {
document.querySelector("#descriptionHeader").classList.remove("hidden");
document.querySelector("#description").textContent = manifest.description;
}
document.querySelector("#type").classList.remove("hidden");
if (project.type == "runtimeApp") {
const manifestURL = AppManager.getProjectManifestURL(project);
document.querySelector("#type").textContent = manifest.type || "web";
document.querySelector("#manifestURLHeader").classList.remove("hidden");
document.querySelector("#manifestURL").textContent = manifestURL;
} else if (project.type == "mainProcess") {
document.querySelector("#type").textContent = project.name;
} else {
document.querySelector("#type").textContent = project.type + " " + (manifest.type || "web");
}
if (project.type == "packaged") {
const manifestURL = AppManager.getProjectManifestURL(project);
if (manifestURL) {
document.querySelector("#manifestURLHeader").classList.remove("hidden");
document.querySelector("#manifestURL").textContent = manifestURL;
}
}
}
const errorsNode = document.querySelector("#errorslist");
const warningsNode = document.querySelector("#warningslist");
if (project.errors) {
for (const e of project.errors) {
const li = document.createElement("li");
li.textContent = e;
errorsNode.appendChild(li);
}
}
if (project.warnings) {
for (const w of project.warnings) {
const li = document.createElement("li");
li.textContent = w;
warningsNode.appendChild(li);
}
}
AppManager.update("details");
}
// Used in details.xhtml.
/* exported removeProject */
function removeProject() {
AppManager.removeSelectedProject();
}