Bug 933083 - Refactor app requests into app-actor-front. r=ochameau

This commit is contained in:
J. Ryan Stinnett 2013-11-01 16:41:19 -05:00
parent f15e8e12f9
commit 1759d033a9
3 changed files with 81 additions and 59 deletions

View File

@ -9,9 +9,11 @@ Cu.import("resource:///modules/devtools/gDevTools.jsm");
const {devtools} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
const {require} = devtools;
const {ConnectionManager, Connection} = require("devtools/client/connection-manager");
const {ConnectionManager, Connection}
= require("devtools/client/connection-manager");
const {getDeviceFront} = require("devtools/server/actors/device");
const {getTargetForApp} = require("devtools/app-actor-front");
const {getTargetForApp, launchApp, closeApp}
= require("devtools/app-actor-front");
const DeviceStore = require("devtools/app-manager/device-store");
const WebappsStore = require("devtools/app-manager/webapps-store");
const promise = require("sdk/core/promise");
@ -123,6 +125,8 @@ let UI = {
}
},
get connected() { return !!this.listTabsResponse; },
setTab: function(name) {
var tab = document.querySelector(".tab.selected");
var panel = document.querySelector(".tabpanel.selected");
@ -138,9 +142,9 @@ let UI = {
},
screenshot: function() {
if (!this.listTabsResponse)
if (!this.connected) {
return;
}
let front = getDeviceFront(this.connection.client, this.listTabsResponse);
front.screenshotToBlob().then(blob => {
let topWindow = Services.wm.getMostRecentWindow("navigator:browser");
@ -155,8 +159,9 @@ let UI = {
},
openToolbox: function(manifest) {
if (!this.listTabsResponse)
if (!this.connected) {
return;
}
getTargetForApp(this.connection.client,
this.listTabsResponse.webappsActor,
manifest).then((target) => {
@ -171,41 +176,21 @@ let UI = {
},
startApp: function(manifest) {
let deferred = promise.defer();
if (!this.listTabsResponse) {
deferred.reject();
} else {
let actor = this.listTabsResponse.webappsActor;
let request = {
to: actor,
type: "launch",
manifestURL: manifest,
}
this.connection.client.request(request, (res) => {
deferred.resolve()
});
if (!this.connected) {
return promise.reject();
}
return deferred.promise;
return launchApp(this.connection.client,
this.listTabsResponse.webappsActor,
manifest);
},
stopApp: function(manifest) {
let deferred = promise.defer();
if (!this.listTabsResponse) {
deferred.reject();
} else {
let actor = this.listTabsResponse.webappsActor;
let request = {
to: actor,
type: "close",
manifestURL: manifest,
}
this.connection.client.request(request, (res) => {
deferred.resolve()
});
if (!this.connected) {
return promise.reject();
}
return deferred.promise;
return closeApp(this.connection.client,
this.listTabsResponse.webappsActor,
manifest);
},
}

View File

@ -14,7 +14,8 @@ const {AppProjects} = require("devtools/app-manager/app-projects");
const {AppValidator} = require("devtools/app-manager/app-validator");
const {Services} = Cu.import("resource://gre/modules/Services.jsm");
const {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm");
const {installHosted, installPackaged, getTargetForApp, reloadApp} = require("devtools/app-actor-front");
const {installHosted, installPackaged, getTargetForApp,
reloadApp, launchApp, closeApp} = require("devtools/app-actor-front");
const {EventEmitter} = Cu.import("resource:///modules/devtools/shared/event-emitter.js");
const promise = require("sdk/core/promise");
@ -206,6 +207,9 @@ let UI = {
},
reload: function (project) {
if (!this.connected) {
return promise.reject();
}
return reloadApp(this.connection.client,
this.listTabsResponse.webappsActor,
this._getProjectManifestURL(project)).
@ -253,6 +257,9 @@ let UI = {
},
install: function(project) {
if (!this.connected) {
return promise.reject();
}
this.connection.log("Installing the " + project.manifest.name + " app...");
let installPromise;
if (project.type == "packaged") {
@ -285,36 +292,30 @@ let UI = {
},
start: function(project) {
let deferred = promise.defer();
let request = {
to: this.listTabsResponse.webappsActor,
type: "launch",
manifestURL: this._getProjectManifestURL(project)
};
this.connection.client.request(request, (res) => {
if (res.error)
deferred.reject(res.error);
else
deferred.resolve(res);
});
return deferred.promise;
if (!this.connected) {
return promise.reject();
}
let manifestURL = this._getProjectManifestURL(project);
return launchApp(this.connection.client,
this.listTabsResponse.webappsActor,
manifestURL);
},
stop: function(location) {
if (!this.connected) {
return promise.reject();
}
let project = AppProjects.get(location);
let deferred = promise.defer();
let request = {
to: this.listTabsResponse.webappsActor,
type: "close",
manifestURL: this._getProjectManifestURL(project)
};
this.connection.client.request(request, (res) => {
promive.resolve(res);
});
return deferred.promise;
let manifestURL = this._getProjectManifestURL(project);
return closeApp(this.connection.client,
this.listTabsResponse.webappsActor,
manifestURL);
},
debug: function(button, location) {
if (!this.connected) {
return promise.reject();
}
button.disabled = true;
let project = AppProjects.get(location);

View File

@ -274,3 +274,39 @@ function reloadApp(client, webappsActor, manifestURL) {
return deferred.promise;
}
exports.reloadApp = reloadApp;
function launchApp(client, webappsActor, manifestURL) {
let deferred = promise.defer();
let request = {
to: webappsActor,
type: "launch",
manifestURL: manifestURL
};
client.request(request, (res) => {
if (res.error) {
deferred.reject(res.error);
} else {
deferred.resolve(res);
}
});
return deferred.promise;
}
exports.launchApp = launchApp;
function closeApp(client, webappsActor, manifestURL) {
let deferred = promise.defer();
let request = {
to: webappsActor,
type: "close",
manifestURL: manifestURL
};
client.request(request, (res) => {
if (res.error) {
deferred.reject(res.error);
} else {
deferred.resolve(res);
}
});
return deferred.promise;
}
exports.closeApp = closeApp;