Backed out changeset 2fb11b6f1dfe - fail in test_webappsActor.js

This commit is contained in:
Paul Rouget 2014-05-29 13:40:35 +02:00
Родитель 7941113e75
Коммит 6c3fd165f1
15 изменённых файлов: 97 добавлений и 185 удалений

Просмотреть файл

@ -7,4 +7,4 @@ PREF_JS_EXPORTS = $(srcdir)/webide-prefs.js
include $(topsrcdir)/config/rules.mk
libs::
$(NSINSTALL) $(srcdir)/modules/*.js $(FINAL_TARGET)/modules/devtools/webide
$(NSINSTALL) $(srcdir)/modules/*.js $(FINAL_TARGET)/modules/devtools

Просмотреть файл

@ -8,7 +8,7 @@ const {Services} = Cu.import("resource://gre/modules/Services.jsm");
const {require} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools;
const {AppProjects} = require("devtools/app-manager/app-projects");
const {AppValidator} = require("devtools/app-manager/app-validator");
const {AppManager} = require("devtools/webide/app-manager");
const {AppManager} = require("devtools/app-manager");
window.addEventListener("load", function onLoad() {
window.removeEventListener("load", onLoad);

Просмотреть файл

@ -16,7 +16,7 @@ const {require} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).de
const {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm");
const {AppProjects} = require("devtools/app-manager/app-projects");
const APP_CREATOR_LIST = "devtools.webide.templatesURL";
const {AppManager} = require("devtools/webide/app-manager");
const {AppManager} = require("devtools/app-manager");
let gTemplateList = null;

Просмотреть файл

@ -15,7 +15,7 @@ const {require} = devtools;
const {Services} = Cu.import("resource://gre/modules/Services.jsm");
const {AppProjects} = require("devtools/app-manager/app-projects");
const {Connection} = require("devtools/client/connection-manager");
const {AppManager} = require("devtools/webide/app-manager");
const {AppManager} = require("devtools/app-manager");
const {Promise: promise} = Cu.import("resource://gre/modules/Promise.jsm", {});
const ProjectEditor = require("projecteditor/projecteditor");
@ -210,28 +210,37 @@ let UI = {
updateRuntimeList: function() {
let USBListNode = document.querySelector("#runtime-panel-usbruntime");
let simulatorListNode = document.querySelector("#runtime-panel-simulators");
let customListNode = document.querySelector("#runtime-panel-custom");
for (let [type, parent] of [
["usb", USBListNode],
["simulator", simulatorListNode],
["custom", customListNode],
]) {
while (parent.hasChildNodes()) {
parent.firstChild.remove();
}
for (let runtime of AppManager.runtimeList[type]) {
let panelItemNode = document.createElement("toolbarbutton");
panelItemNode.className = "panel-item runtime-panel-item-" + type;
panelItemNode.setAttribute("label", runtime.getName());
parent.appendChild(panelItemNode);
let r = runtime;
panelItemNode.addEventListener("click", () => {
this.hidePanels();
this.connectToRuntime(r);
}, true);
}
while (USBListNode.hasChildNodes()) {
USBListNode.firstChild.remove();
}
for (let runtime of AppManager.runtimeList.usb) {
let panelItemNode = document.createElement("toolbarbutton");
panelItemNode.className = "panel-item runtime-panel-item-usbruntime";
panelItemNode.setAttribute("label", runtime.getName());
USBListNode.appendChild(panelItemNode);
let r = runtime;
panelItemNode.addEventListener("click", () => {
this.hidePanels();
this.connectToRuntime(r);
}, true);
}
while (simulatorListNode.hasChildNodes()) {
simulatorListNode.firstChild.remove();
}
for (let runtime of AppManager.runtimeList.simulator) {
let panelItemNode = document.createElement("toolbarbutton");
panelItemNode.className = "panel-item runtime-panel-item-simulator";
panelItemNode.setAttribute("label", runtime.getName());
simulatorListNode.appendChild(panelItemNode);
let r = runtime;
panelItemNode.addEventListener("click", () => {
this.hidePanels();
this.connectToRuntime(r);
}, true);
}
},
connectToRuntime: function(runtime) {

Просмотреть файл

@ -139,8 +139,6 @@
<vbox id="runtime-panel-usbruntime"></vbox>
<label class="panel-header">&runtimePanel_simulators;</label>
<vbox id="runtime-panel-simulators"></vbox>
<label class="panel-header">&runtimePanel_custom;</label>
<vbox id="runtime-panel-custom"></vbox>
<vbox flex="1" id="runtime-actions" hidden="true">
<toolbarbutton class="panel-item" id="runtime-details" command="cmd_showRuntimeDetails"/>
<toolbarbutton class="panel-item" id="runtime-permissions" command="cmd_showPermissionsTable"/>

Просмотреть файл

@ -60,7 +60,6 @@
<!ENTITY projectPanel_runtimeApps "Runtime Apps">
<!ENTITY runtimePanel_USBDevices "USB Devices">
<!ENTITY runtimePanel_simulators "Simulators">
<!ENTITY runtimePanel_custom "Custom">
<!-- Lense -->
<!ENTITY details_valid_header "valid">

Просмотреть файл

@ -8,11 +8,6 @@ title_app=Firefox App Manager: %S
runtimeButton_label=Select Runtime
projectButton_label=Open App
local_runtime=Local Runtime
remote_runtime=Remote Runtime
remote_runtime_promptTitle=Remote Runtime
remote_runtime_promptMessage=hostname:port
importPackagedApp_title=Select directory
importHostedApp_title=Open Hosted App
importHostedApp_header=Enter Manifest URL

Просмотреть файл

@ -20,7 +20,6 @@ const AppActorFront = require("devtools/app-actor-front");
const {getDeviceFront} = require("devtools/server/actors/device");
const {setTimeout} = require("sdk/timers");
const {Task} = Cu.import("resource://gre/modules/Task.jsm", {});
const {USBRuntime, SimulatorRuntime, gLocalRuntime, gRemoteRuntime} = require("devtools/webide/runtimes");
const Strings = Services.strings.createBundle("chrome://webide/content/webide.properties");
@ -42,10 +41,7 @@ exports.AppManager = AppManager = {
this.webAppsStore = new WebappsStore(this.connection);
this.webAppsStore.on("store-ready", this.onWebAppsStoreready);
this.runtimeList = {usb: [], simulator: [], custom: [gRemoteRuntime]};
if (Services.prefs.getBoolPref("devtools.webide.enableLocalRuntime")) {
this.runtimeList.custom.push(gLocalRuntime);
}
this.runtimeList = {usb: [], simulator: []};
this.trackUSBRuntimes();
this.trackSimulatorRuntimes();
},
@ -280,14 +276,9 @@ exports.AppManager = AppManager = {
}
this.connection.on(Connection.Events.CONNECTED, onConnectedOrDisconnected);
this.connection.on(Connection.Events.DISCONNECTED, onConnectedOrDisconnected);
try {
this.selectedRuntime.connect(this.connection).then(
() => {},
() => {deferred.reject()});
} catch(e) {
console.error(e);
deferred.reject();
}
this.selectedRuntime.connect(this.connection).then(
() => {},
() => {deferred.reject()});
return deferred.promise;
},
@ -546,3 +537,56 @@ exports.AppManager = AppManager = {
}
EventEmitter.decorate(AppManager);
/* RUNTIMES */
function USBRuntime(id) {
this.id = id;
}
USBRuntime.prototype = {
connect: function(connection) {
let device = Devices.getByName(this.id);
if (!device) {
console.error("Can't find device: " + id);
return promise.reject();
}
return device.connect().then((port) => {
connection.host = "localhost";
connection.port = port;
connection.connect();
});
},
getID: function() {
return this.id;
},
getName: function() {
return this.id;
},
}
function SimulatorRuntime(version) {
this.version = version;
}
SimulatorRuntime.prototype = {
connect: function(connection) {
let port = ConnectionManager.getFreeTCPPort();
let simulator = Simulator.getByVersion(this.version);
if (!simulator || !simulator.launch) {
console.error("Can't find simulator: " + this.version);
return promise.reject();
}
return simulator.launch({port: port}).then(() => {
connection.port = port;
connection.keepConnecting = true;
connection.connect();
});
},
getID: function() {
return this.version;
},
getName: function() {
return this.version;
},
}

Просмотреть файл

@ -1,108 +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/. */
const {Cu} = require("chrome");
const {Devices} = Cu.import("resource://gre/modules/devtools/Devices.jsm");
const {Services} = Cu.import("resource://gre/modules/Services.jsm");
const {Simulator} = Cu.import("resource://gre/modules/devtools/Simulator.jsm");
const {ConnectionManager, Connection} = require("devtools/client/connection-manager");
const {DebuggerServer} = require("resource://gre/modules/devtools/dbg-server.jsm");
const Strings = Services.strings.createBundle("chrome://webide/content/webide.properties");
function USBRuntime(id) {
this.id = id;
}
USBRuntime.prototype = {
connect: function(connection) {
let device = Devices.getByName(this.id);
if (!device) {
return promise.reject("Can't find device: " + id);
}
return device.connect().then((port) => {
connection.host = "localhost";
connection.port = port;
connection.connect();
});
},
getID: function() {
return this.id;
},
getName: function() {
return this.id;
},
}
function SimulatorRuntime(version) {
this.version = version;
}
SimulatorRuntime.prototype = {
connect: function(connection) {
let port = ConnectionManager.getFreeTCPPort();
let simulator = Simulator.getByVersion(this.version);
if (!simulator || !simulator.launch) {
return promise.reject("Can't find simulator: " + this.version);
}
return simulator.launch({port: port}).then(() => {
connection.port = port;
connection.keepConnecting = true;
connection.connect();
});
},
getID: function() {
return this.version;
},
getName: function() {
return this.version;
},
}
let gLocalRuntime = {
supportApps: false, // Temporary static value
connect: function(connection) {
if (!DebuggerServer.initialized) {
DebuggerServer.init();
DebuggerServer.addBrowserActors();
}
connection.port = null;
connection.host = null; // Force Pipe transport
connection.connect();
return promise.resolve();
},
getName: function() {
return Strings.GetStringFromName("local_runtime");
},
}
let gRemoteRuntime = {
connect: function(connection) {
let win = Services.wm.getMostRecentWindow("devtools:webide");
if (!win) {
return promise.reject();
}
let ret = {value: connection.host + ":" + connection.port};
Services.prompt.prompt(win,
Strings.GetStringFromName("remote_runtime_promptTitle"),
Strings.GetStringFromName("remote_runtime_promptMessage"),
ret, null, {});
let [host,port] = ret.value.split(":");
if (!host || !port) {
return promise.reject();
}
connection.host = host;
connection.port = port;
connection.connect();
return promise.resolve();
},
getName: function() {
return Strings.GetStringFromName("remote_runtime");
},
}
exports.USBRuntime = USBRuntime;
exports.SimulatorRuntime = SimulatorRuntime;
exports.gRemoteRuntime = gRemoteRuntime;
exports.gLocalRuntime = gLocalRuntime;

Просмотреть файл

@ -17,11 +17,9 @@ const {AppProjects} = require("devtools/app-manager/app-projects");
const TEST_BASE = "chrome://mochitests/content/chrome/browser/devtools/webide/test/";
Services.prefs.setBoolPref("devtools.webide.enabled", true);
Services.prefs.setBoolPref("devtools.webide.enableLocalRuntime", true);
SimpleTest.registerCleanupFunction(() => {
Services.prefs.clearUserPref("devtools.webide.enabled");
Services.prefs.clearUserPref("devtools.webide.enableLocalRuntime");
});
function openWebIDE() {

Просмотреть файл

@ -60,7 +60,7 @@
is(json.name, "xxx", "manifest written on disc");
// Make the manifest invalid on disk
delete json.name;
delete json.name
let Encoder = new TextEncoder();
data = Encoder.encode(JSON.stringify(json));
yield OS.File.writeAtomic(manifestPath, data , {tmpPath: manifestPath + ".tmp"});

Просмотреть файл

@ -55,7 +55,7 @@
yield win.Cmds.showRuntimePanel();
let panelNode = win.document.querySelector("#runtime-panel");
let items = panelNode.querySelectorAll(".runtime-panel-item-usb");
let items = panelNode.querySelectorAll(".runtime-panel-item-usbruntime");
is(items.length, 1, "Found one runtime button");
let deferred = promise.defer();
@ -67,8 +67,6 @@
yield deferred.promise;
is(Object.keys(DebuggerServer._connections).length, 1, "Connected");
yield nextTick();
ok(!isPlayActive(), "play button is disabled 2");
@ -99,24 +97,11 @@
yield win.Cmds.disconnectRuntime();
is(Object.keys(DebuggerServer._connections).length, 0, "Disconnected");
ok(win.AppManager.selectedProject, "A project is still selected");
ok(!isPlayActive(), "play button is disabled 6");
ok(!isStopActive(), "stop button is disabled 6");
deferred = promise.defer();
win.AppManager.connection.once(
win.Connection.Events.CONNECTED,
() => deferred.resolve());
win.document.querySelectorAll(".runtime-panel-item-custom")[1].click();
yield deferred.promise;
is(Object.keys(DebuggerServer._connections).length, 1, "Locally connected");
yield win.Cmds.disconnectRuntime();
yield closeWebIDE(win);

Просмотреть файл

@ -173,22 +173,20 @@ panel > .panel-arrowcontainer > .panel-arrowcontent {
padding: 12px 0 0;
}
#runtime-panel-custom {
#runtime-panel-simulators {
margin-bottom: 12px;
}
#runtime-permissions,
#runtime-screenshot,
.runtime-panel-item-usb,
.runtime-panel-item-custom,
.runtime-panel-item-usbruntime,
.runtime-panel-item-simulator {
list-style-image: url("icons.png");
}
#runtime-screenshot { -moz-image-region: rect(200px, 640px, 240px, 600px) }
#runtime-permissions { -moz-image-region: rect(100px, 840px, 140px, 800px) }
.runtime-panel-item-usb { -moz-image-region: rect(100px, 640px, 140px, 600px) }
.runtime-panel-item-custom { -moz-image-region: rect(100px, 640px, 140px, 600px) }
.runtime-panel-item-usbruntime { -moz-image-region: rect(100px, 640px, 140px, 600px) }
.runtime-panel-item-simulator { -moz-image-region: rect(100px, 740px, 140px, 700px) }
#runtime-actions {
@ -205,7 +203,7 @@ panel > .panel-arrowcontainer > .panel-arrowcontent {
}
#runtime-actions > toolbarbutton:hover {
background-color: #CBF0FE;
background-color: rgba(221,221,221,1);
}
#runtime-actions > toolbarbutton:last-child {

Просмотреть файл

@ -6,4 +6,3 @@
pref("devtools.webide.showProjectEditor", true);
pref("devtools.webide.templatesURL", "http://fixme/");
pref("devtools.webide.lastprojectlocation", "");
pref("devtools.webide.enableLocalRuntime", false);

Просмотреть файл

@ -798,11 +798,6 @@ WebappsActor.prototype = {
let deferred = promise.defer();
if (Services.appinfo.ID != "{3c2e2abc-06d4-11e1-ac3b-374f68613e61}") {
return { error: "notSupported",
message: "Not B2G. Can't launch app." };
}
DOMApplicationRegistry.launch(
aRequest.manifestURL,
aRequest.startPoint || "",