blob: fbc6488a8bf461fc9c7283635c9412f41a7741ac [file] [log] [blame]
/**
* Load this script in xpcshell and connect...
*/
const Cc = Components.classes;
const Cu = Components.utils;
Cu.import("resource://gre/modules/devtools/dbg-client.jsm");
var gTransport = null;
var gClient = null;
var gQuit = false;
var gId = null;
function connect(aPort, aHost) {
gTransport = debuggerSocketConnect(aHost ? aHost : "localhost", aPort);
gTransport.hooks = {
onClosed: function() {
print("Connection closed, quitting.");
gQuit = true;
}
};
gTransport.ready();
}
try {
dump("Connecting to install " + arguments[0] + "\n");
gId = arguments[0];
let port = arguments[1] || 6000;
connect(port, "localhost");
gClient = new DebuggerClient(gTransport);
} catch(ex) {
dump("Couldn't connect: " + ex + "\n");
quit(1);
}
function onWebappsEvent(aState, aType, aPacket) {
if (aType.error) {
dump("Error: " + aType.message + "\n");
} else {
dump("Success!\n");
}
gQuit = true;
}
gClient.connect(function onConnected(aType, aTraits) {
gClient.listTabs(function(aResponse) {
if (!aResponse.webappsActor) {
dump("No webapps remote actor!\n");
gQuit = true;
return;
}
gClient.addListener("webappsEvent", onWebappsEvent);
gClient.request({ to: aResponse.webappsActor,
type: "install",
appId: gId,
appType: 1
},
function onResponse(aResponse) {
if (aResponse.error) {
dump("Failed to install: " + aResponse.message + "\n");
gQuit = true;
} else {
dump("Installation in progress...\n");
}
});
});
});
let mainThread = Cc["@mozilla.org/thread-manager;1"].getService().mainThread;
while (!gQuit) {
mainThread.processNextEvent(true);
}