mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-27 13:38:52 +00:00
14f7ec3aac
- Bug 1173947 - Make getRandomValues message be urgent (r=mrbkap) (aca1a06a9) - Bug 1182824 - Part 1: Use move assignment rather than copy assignment with ContextState::dash. r=mattwoodrow (73af33d32) - Bug 1182824 - Part 2: Make ContextState::dash a nsTArray. r=mattwoodrow (c66c3105d) - Bug 1134166 - Restart toolbox if selected app re-opens. r=ochameau (e370c8f02) - Bug 1134166 - Close toolbox if selected app dies. r=ochameau (5acb76254) - Bug 1134166 - Check for project when updating toolbox state. r=me (c60bb8766) - Bug 1090949 - Add way to make WebIDE runtimes configurable. r=ochameau (eef01e3e6) - Bug 1090949 - Refactor WebIDE preferences panel style. r=ochameau (fe1a9c757) - Bug 1135191 - Add runtime panel with toggle. r=jryans (e2e290a67) - missing bit of Bug 1116188 - Add async ProfileGatherer (308cfdd4f) - Bug 1185737 - Propagate pause and resume commands to child processes. r=BenWa (2dd302569) - Bug 1161831 - Stop using threaddsafe ISupports for nsResProtocolHandler. r=billm (0bec61aac) - Bug 1155968 - Correct indent not multiple of 4. r=khuey (5fb8e3b20) - Bug 1183291 - Factor idl-parser into a Python package. r=khuey (63a2f0c68) - Bug 1155968 - Add blank lines where needed in xpcom/idl-parser. r=khuey (ce91a905b) - Bug 1161831 - Generate an extra macro to declare a non-virtual variant of an interface. r=billm (058876228) - Bug 1161831 - Factor the sharable bits out of nsIResProtocolHandler. r=billm (b02278fb9) - Bug 1152997 - Cleanup app update build to exclude android. r=glandium, r=mossop (6cd935294) - Bug 1170075 - Remove Print Progress UI and view source XUL files from Android. r=snorp (64796ae4a) - Bug 1180921 - Create a dumping ground for simple services in toolkit/components/utils. r=Gijs (2757d43c8) - Bug 1180921 - Support custom callbacks for allowing access per-addon load access to cross-origin URIs. r=bz,r=billm (8cc7e2c96) - Bug 1161831 - Implement moz-extension protocol. r=bz,r=billm,sr=mcmanus (5ee451357) - Bug 1161831 - Associate extension URIs with the appropriate addon ID. r=billm,sr=bz (f36655ac9) - Bug 1161831 - Forbid mapping to anything but file:// and jar:// URIs. r=billm,sr=bz (144add9de) - Bug 1180921 - Generalize test_origin to make it easier to add new origin attributes. r=gabor (b3fbc3545) - Bug 1180921 - Add the addonId OriginAttribute. r=bholley (0723d0dec) - Bug 1174093 - Don't recurse into caps/tests/mochitest during the build; r=mshal (76366d21a) - Bug 1161831 - Tests. r=billm (ed116a703) - Bug 1155547, Part 1: Fix unified build breakage in adding new sources under dom/ipc/. r=khuey (0d6875348) - Bug 1166985 - Use two image decoding threads on dual core devices. r=tn (7f07ee8b8) - Bug 1160422 - Prioritize size decodes over full decodes. r=tn (48d42c011) - Bug 1151672 - Part 1: Remove the calls to nsThreadManager::SetThreadWorking() and nsThreadManager::SetThreadIdle() due to backout of bug 970307. r=seth (0428dd4a4) - Bug 1151672 - Part 2: Block PHal::Msg_NotifyNetworkChange__ID to the Nuwa process after it is ready. r=khuey (42debf2c0) - Bug 1176034 - MessagePort should force a close() if the structured clone algorithm fails, r=bent (3afe74856) - Bug 1176034 - Implement JSAutoStructuredCloneBuffer::clear(with callbacks and closure), r=sfink (f28f6852b) - Bug 1155547, Part 2: Create PNuwa protocol (managed by PBackground) for forking content processes. r=khuey (047bc5e61) - missing bit of Bug 1170075 - Remove Print Progress UI and view source XUL (a08888308)
233 lines
7.2 KiB
JavaScript
233 lines
7.2 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 {Cu} = require("chrome");
|
|
|
|
const {Services} = Cu.import("resource://gre/modules/Services.jsm");
|
|
const {AppProjects} = require("devtools/app-manager/app-projects");
|
|
const {AppManager} = require("devtools/webide/app-manager");
|
|
const {Promise: promise} = Cu.import("resource://gre/modules/Promise.jsm", {});
|
|
const EventEmitter = require("devtools/toolkit/event-emitter");
|
|
const {RuntimeScanners, WiFiScanner} = require("devtools/webide/runtimes");
|
|
const {Devices} = Cu.import("resource://gre/modules/devtools/Devices.jsm");
|
|
const {Task} = Cu.import("resource://gre/modules/Task.jsm", {});
|
|
const utils = require("devtools/webide/utils");
|
|
|
|
const Strings = Services.strings.createBundle("chrome://browser/locale/devtools/webide.properties");
|
|
|
|
let RuntimeList;
|
|
|
|
module.exports = RuntimeList = function(window, parentWindow) {
|
|
EventEmitter.decorate(this);
|
|
this._doc = window.document;
|
|
this._UI = parentWindow.UI;
|
|
this._Cmds = parentWindow.Cmds;
|
|
this._parentWindow = parentWindow;
|
|
this._panelNodeEl = "toolbarbutton";
|
|
this._panelBoxEl = "hbox";
|
|
this._sidebarsEnabled = Services.prefs.getBoolPref("devtools.webide.sidebars");
|
|
|
|
if (this._sidebarsEnabled) {
|
|
this._panelNodeEl = "button";
|
|
this._panelBoxEl = "div";
|
|
}
|
|
|
|
this.onWebIDEUpdate = this.onWebIDEUpdate.bind(this);
|
|
this._UI.on("webide-update", this.onWebIDEUpdate);
|
|
|
|
AppManager.init();
|
|
this.appManagerUpdate = this.appManagerUpdate.bind(this);
|
|
AppManager.on("app-manager-update", this.appManagerUpdate);
|
|
};
|
|
|
|
RuntimeList.prototype = {
|
|
get doc() {
|
|
return this._doc;
|
|
},
|
|
|
|
get sidebarsEnabled() {
|
|
return this._sidebarsEnabled;
|
|
},
|
|
|
|
appManagerUpdate: function(event, what, details) {
|
|
// Got a message from app-manager.js
|
|
// See AppManager.update() for descriptions of what these events mean.
|
|
switch (what) {
|
|
case "runtime-list":
|
|
this.update();
|
|
break;
|
|
case "connection":
|
|
case "runtime-global-actors":
|
|
this.updateCommands();
|
|
break;
|
|
};
|
|
},
|
|
|
|
onWebIDEUpdate: function(event, what, details) {
|
|
if (what == "busy" || what == "unbusy") {
|
|
this.updateCommands();
|
|
}
|
|
},
|
|
|
|
takeScreenshot: function() {
|
|
return this._UI.busyUntil(AppManager.deviceFront.screenshotToDataURL().then(longstr => {
|
|
return longstr.string().then(dataURL => {
|
|
longstr.release().then(null, console.error);
|
|
this._UI.openInBrowser(dataURL);
|
|
});
|
|
}), "taking screenshot");
|
|
},
|
|
|
|
showRuntimeDetails: function() {
|
|
this._Cmds.showRuntimeDetails();
|
|
},
|
|
|
|
showPermissionsTable: function() {
|
|
this._Cmds.showPermissionsTable();
|
|
},
|
|
|
|
showDevicePreferences: function() {
|
|
this._Cmds.showDevicePrefs();
|
|
},
|
|
|
|
showSettings: function() {
|
|
this._Cmds.showSettings();
|
|
},
|
|
|
|
showTroubleShooting: function() {
|
|
this._Cmds.showTroubleShooting();
|
|
},
|
|
|
|
showAddons: function() {
|
|
this._Cmds.showAddons();
|
|
},
|
|
|
|
updateCommands: function() {
|
|
let doc = this._doc;
|
|
|
|
// Runtime commands
|
|
let screenshotCmd = doc.querySelector("#runtime-screenshot");
|
|
let permissionsCmd = doc.querySelector("#runtime-permissions");
|
|
let detailsCmd = doc.querySelector("#runtime-details");
|
|
let disconnectCmd = doc.querySelector("#runtime-disconnect");
|
|
let devicePrefsCmd = doc.querySelector("#runtime-preferences");
|
|
let settingsCmd = doc.querySelector("#runtime-settings");
|
|
|
|
if (AppManager.connected) {
|
|
if (AppManager.deviceFront) {
|
|
detailsCmd.removeAttribute("disabled");
|
|
permissionsCmd.removeAttribute("disabled");
|
|
screenshotCmd.removeAttribute("disabled");
|
|
}
|
|
if (AppManager.preferenceFront) {
|
|
devicePrefsCmd.removeAttribute("disabled");
|
|
}
|
|
if (AppManager.settingsFront) {
|
|
settingsCmd.removeAttribute("disabled");
|
|
}
|
|
disconnectCmd.removeAttribute("disabled");
|
|
} else {
|
|
detailsCmd.setAttribute("disabled", "true");
|
|
permissionsCmd.setAttribute("disabled", "true");
|
|
screenshotCmd.setAttribute("disabled", "true");
|
|
disconnectCmd.setAttribute("disabled", "true");
|
|
devicePrefsCmd.setAttribute("disabled", "true");
|
|
settingsCmd.setAttribute("disabled", "true");
|
|
}
|
|
},
|
|
|
|
update: function() {
|
|
let doc = this._doc;
|
|
let wifiHeaderNode = doc.querySelector("#runtime-header-wifi");
|
|
|
|
if (WiFiScanner.allowed) {
|
|
wifiHeaderNode.removeAttribute("hidden");
|
|
} else {
|
|
wifiHeaderNode.setAttribute("hidden", "true");
|
|
}
|
|
|
|
let usbListNode = doc.querySelector("#runtime-panel-usb");
|
|
let wifiListNode = doc.querySelector("#runtime-panel-wifi");
|
|
let simulatorListNode = doc.querySelector("#runtime-panel-simulator");
|
|
let otherListNode = doc.querySelector("#runtime-panel-other");
|
|
let noHelperNode = doc.querySelector("#runtime-panel-noadbhelper");
|
|
let noUSBNode = doc.querySelector("#runtime-panel-nousbdevice");
|
|
|
|
if (Devices.helperAddonInstalled) {
|
|
noHelperNode.setAttribute("hidden", "true");
|
|
} else {
|
|
noHelperNode.removeAttribute("hidden");
|
|
}
|
|
|
|
let runtimeList = AppManager.runtimeList;
|
|
|
|
if (!runtimeList) {
|
|
return;
|
|
}
|
|
|
|
if (runtimeList.usb.length === 0 && Devices.helperAddonInstalled) {
|
|
noUSBNode.removeAttribute("hidden");
|
|
} else {
|
|
noUSBNode.setAttribute("hidden", "true");
|
|
}
|
|
|
|
for (let [type, parent] of [
|
|
["usb", usbListNode],
|
|
["wifi", wifiListNode],
|
|
["simulator", simulatorListNode],
|
|
["other", otherListNode],
|
|
]) {
|
|
while (parent.hasChildNodes()) {
|
|
parent.firstChild.remove();
|
|
}
|
|
for (let runtime of runtimeList[type]) {
|
|
let r = runtime;
|
|
let panelItemNode = doc.createElement(this._panelBoxEl);
|
|
panelItemNode.className = "panel-item-complex";
|
|
|
|
let connectButton = doc.createElement(this._panelNodeEl);
|
|
connectButton.className = "panel-item runtime-panel-item-" + type;
|
|
|
|
if (this._sidebarsEnabled) {
|
|
connectButton.textContent = r.name;
|
|
} else {
|
|
connectButton.setAttribute("label", r.name);
|
|
connectButton.setAttribute("flex", "1");
|
|
}
|
|
|
|
connectButton.addEventListener("click", () => {
|
|
if (!this._sidebarsEnabled) {
|
|
this._UI.hidePanels();
|
|
}
|
|
this._UI.dismissErrorNotification();
|
|
this._UI.connectToRuntime(r);
|
|
}, true);
|
|
panelItemNode.appendChild(connectButton);
|
|
|
|
if (r.configure && this._UI.isRuntimeConfigurationEnabled()) {
|
|
let configButton = doc.createElement(this._panelNodeEl);
|
|
configButton.className = "configure-button";
|
|
configButton.addEventListener("click", r.configure.bind(r), true);
|
|
panelItemNode.appendChild(configButton);
|
|
}
|
|
|
|
parent.appendChild(panelItemNode);
|
|
}
|
|
}
|
|
},
|
|
|
|
destroy: function() {
|
|
this._doc = null;
|
|
AppManager.off("app-manager-update", this.appManagerUpdate);
|
|
if (this.sidebarsEnabled) {
|
|
this._UI.off("webide-update", this.onWebIDEUpdate);
|
|
}
|
|
this._UI = null;
|
|
this._Cmds = null;
|
|
this._parentWindow = null;
|
|
this._panelNodeEl = null;
|
|
this._sidebarsEnabled = null;
|
|
}
|
|
};
|