mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-05 15:28:39 +09:00
Revert "Remove WebIDE devtools component."
This reverts commit 8c1500707f.
# Conflicts:
# application/basilisk/components/customizableui/CustomizableUI.jsm
This commit is contained in:
parent
4ea7de218b
commit
df89b48e30
163 changed files with 13812 additions and 0 deletions
248
devtools/client/webide/test/head.js
Normal file
248
devtools/client/webide/test/head.js
Normal file
|
|
@ -0,0 +1,248 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
"use strict";
|
||||
|
||||
var {utils: Cu, classes: Cc, interfaces: Ci} = Components;
|
||||
|
||||
const { require } = Cu.import("resource://devtools/shared/Loader.jsm", {});
|
||||
const { FileUtils } = require("resource://gre/modules/FileUtils.jsm");
|
||||
const { gDevTools } = require("devtools/client/framework/devtools");
|
||||
const promise = require("promise");
|
||||
const Services = require("Services");
|
||||
const { Task } = require("devtools/shared/task");
|
||||
const { AppProjects } = require("devtools/client/webide/modules/app-projects");
|
||||
const DevToolsUtils = require("devtools/shared/DevToolsUtils");
|
||||
const { DebuggerServer } = require("devtools/server/main");
|
||||
const flags = require("devtools/shared/flags");
|
||||
flags.testing = true;
|
||||
|
||||
var TEST_BASE;
|
||||
if (window.location === "chrome://browser/content/browser.xul") {
|
||||
TEST_BASE = "chrome://mochitests/content/browser/devtools/client/webide/test/";
|
||||
} else {
|
||||
TEST_BASE = "chrome://mochitests/content/chrome/devtools/client/webide/test/";
|
||||
}
|
||||
|
||||
Services.prefs.setBoolPref("devtools.webide.enabled", true);
|
||||
Services.prefs.setBoolPref("devtools.webide.enableLocalRuntime", true);
|
||||
|
||||
Services.prefs.setCharPref("devtools.webide.addonsURL", TEST_BASE + "addons/simulators.json");
|
||||
Services.prefs.setCharPref("devtools.webide.simulatorAddonsURL", TEST_BASE + "addons/fxos_#SLASHED_VERSION#_simulator-#OS#.xpi");
|
||||
Services.prefs.setCharPref("devtools.webide.adbAddonURL", TEST_BASE + "addons/adbhelper-#OS#.xpi");
|
||||
Services.prefs.setCharPref("devtools.webide.adaptersAddonURL", TEST_BASE + "addons/fxdt-adapters-#OS#.xpi");
|
||||
Services.prefs.setCharPref("devtools.webide.templatesURL", TEST_BASE + "templates.json");
|
||||
Services.prefs.setCharPref("devtools.devices.url", TEST_BASE + "browser_devices.json");
|
||||
|
||||
var registerCleanupFunction = registerCleanupFunction ||
|
||||
SimpleTest.registerCleanupFunction;
|
||||
registerCleanupFunction(() => {
|
||||
flags.testing = false;
|
||||
Services.prefs.clearUserPref("devtools.webide.enabled");
|
||||
Services.prefs.clearUserPref("devtools.webide.enableLocalRuntime");
|
||||
Services.prefs.clearUserPref("devtools.webide.autoinstallADBHelper");
|
||||
Services.prefs.clearUserPref("devtools.webide.autoinstallFxdtAdapters");
|
||||
Services.prefs.clearUserPref("devtools.webide.busyTimeout");
|
||||
Services.prefs.clearUserPref("devtools.webide.lastSelectedProject");
|
||||
Services.prefs.clearUserPref("devtools.webide.lastConnectedRuntime");
|
||||
});
|
||||
|
||||
var openWebIDE = Task.async(function* (autoInstallAddons) {
|
||||
info("opening WebIDE");
|
||||
|
||||
Services.prefs.setBoolPref("devtools.webide.autoinstallADBHelper", !!autoInstallAddons);
|
||||
Services.prefs.setBoolPref("devtools.webide.autoinstallFxdtAdapters", !!autoInstallAddons);
|
||||
|
||||
let ww = Cc["@mozilla.org/embedcomp/window-watcher;1"].getService(Ci.nsIWindowWatcher);
|
||||
let win = ww.openWindow(null, "chrome://webide/content/", "webide", "chrome,centerscreen,resizable", null);
|
||||
|
||||
yield new Promise(resolve => {
|
||||
win.addEventListener("load", function onLoad() {
|
||||
win.removeEventListener("load", onLoad);
|
||||
SimpleTest.requestCompleteLog();
|
||||
SimpleTest.executeSoon(resolve);
|
||||
});
|
||||
});
|
||||
|
||||
info("WebIDE open");
|
||||
|
||||
return win;
|
||||
});
|
||||
|
||||
function closeWebIDE(win) {
|
||||
info("Closing WebIDE");
|
||||
|
||||
let deferred = promise.defer();
|
||||
|
||||
Services.prefs.clearUserPref("devtools.webide.widget.enabled");
|
||||
|
||||
win.addEventListener("unload", function onUnload() {
|
||||
win.removeEventListener("unload", onUnload);
|
||||
info("WebIDE closed");
|
||||
SimpleTest.executeSoon(() => {
|
||||
deferred.resolve();
|
||||
});
|
||||
});
|
||||
|
||||
win.close();
|
||||
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
function removeAllProjects() {
|
||||
return Task.spawn(function* () {
|
||||
yield AppProjects.load();
|
||||
// use a new array so we're not iterating over the same
|
||||
// underlying array that's being modified by AppProjects
|
||||
let projects = AppProjects.projects.map(p => p.location);
|
||||
for (let i = 0; i < projects.length; i++) {
|
||||
yield AppProjects.remove(projects[i]);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function nextTick() {
|
||||
let deferred = promise.defer();
|
||||
SimpleTest.executeSoon(() => {
|
||||
deferred.resolve();
|
||||
});
|
||||
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
function waitForUpdate(win, update) {
|
||||
info("Wait: " + update);
|
||||
let deferred = promise.defer();
|
||||
win.AppManager.on("app-manager-update", function onUpdate(e, what) {
|
||||
info("Got: " + what);
|
||||
if (what !== update) {
|
||||
return;
|
||||
}
|
||||
win.AppManager.off("app-manager-update", onUpdate);
|
||||
deferred.resolve(win.UI._updatePromise);
|
||||
});
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
function waitForTime(time) {
|
||||
let deferred = promise.defer();
|
||||
setTimeout(() => {
|
||||
deferred.resolve();
|
||||
}, time);
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
function documentIsLoaded(doc) {
|
||||
let deferred = promise.defer();
|
||||
if (doc.readyState == "complete") {
|
||||
deferred.resolve();
|
||||
} else {
|
||||
doc.addEventListener("readystatechange", function onChange() {
|
||||
if (doc.readyState == "complete") {
|
||||
doc.removeEventListener("readystatechange", onChange);
|
||||
deferred.resolve();
|
||||
}
|
||||
});
|
||||
}
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
function lazyIframeIsLoaded(iframe) {
|
||||
let deferred = promise.defer();
|
||||
iframe.addEventListener("load", function onLoad() {
|
||||
iframe.removeEventListener("load", onLoad, true);
|
||||
deferred.resolve(nextTick());
|
||||
}, true);
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
function addTab(aUrl, aWindow) {
|
||||
info("Adding tab: " + aUrl);
|
||||
|
||||
let deferred = promise.defer();
|
||||
let targetWindow = aWindow || window;
|
||||
let targetBrowser = targetWindow.gBrowser;
|
||||
|
||||
targetWindow.focus();
|
||||
let tab = targetBrowser.selectedTab = targetBrowser.addTab(aUrl);
|
||||
let linkedBrowser = tab.linkedBrowser;
|
||||
|
||||
BrowserTestUtils.browserLoaded(linkedBrowser).then(function () {
|
||||
info("Tab added and finished loading: " + aUrl);
|
||||
deferred.resolve(tab);
|
||||
});
|
||||
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
function removeTab(aTab, aWindow) {
|
||||
info("Removing tab.");
|
||||
|
||||
let deferred = promise.defer();
|
||||
let targetWindow = aWindow || window;
|
||||
let targetBrowser = targetWindow.gBrowser;
|
||||
let tabContainer = targetBrowser.tabContainer;
|
||||
|
||||
tabContainer.addEventListener("TabClose", function onClose(aEvent) {
|
||||
tabContainer.removeEventListener("TabClose", onClose, false);
|
||||
info("Tab removed and finished closing.");
|
||||
deferred.resolve();
|
||||
}, false);
|
||||
|
||||
targetBrowser.removeTab(aTab);
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
function getRuntimeDocument(win) {
|
||||
return win.document.querySelector("#runtime-listing-panel-details").contentDocument;
|
||||
}
|
||||
|
||||
function getProjectDocument(win) {
|
||||
return win.document.querySelector("#project-listing-panel-details").contentDocument;
|
||||
}
|
||||
|
||||
function getRuntimeWindow(win) {
|
||||
return win.document.querySelector("#runtime-listing-panel-details").contentWindow;
|
||||
}
|
||||
|
||||
function getProjectWindow(win) {
|
||||
return win.document.querySelector("#project-listing-panel-details").contentWindow;
|
||||
}
|
||||
|
||||
function connectToLocalRuntime(win) {
|
||||
info("Loading local runtime.");
|
||||
|
||||
let panelNode;
|
||||
let runtimePanel;
|
||||
|
||||
runtimePanel = getRuntimeDocument(win);
|
||||
|
||||
panelNode = runtimePanel.querySelector("#runtime-panel");
|
||||
let items = panelNode.querySelectorAll(".runtime-panel-item-other");
|
||||
is(items.length, 2, "Found 2 custom runtime buttons");
|
||||
|
||||
let updated = waitForUpdate(win, "runtime-global-actors");
|
||||
items[1].click();
|
||||
return updated;
|
||||
}
|
||||
|
||||
function handleError(aError) {
|
||||
ok(false, "Got an error: " + aError.message + "\n" + aError.stack);
|
||||
finish();
|
||||
}
|
||||
|
||||
function waitForConnectionChange(expectedState, count = 1) {
|
||||
return new Promise(resolve => {
|
||||
let onConnectionChange = (_, state) => {
|
||||
if (state != expectedState) {
|
||||
return;
|
||||
}
|
||||
if (--count != 0) {
|
||||
return;
|
||||
}
|
||||
DebuggerServer.off("connectionchange", onConnectionChange);
|
||||
resolve();
|
||||
};
|
||||
DebuggerServer.on("connectionchange", onConnectionChange);
|
||||
});
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue