Back out changeset 26adf71d5c61 (bug 734018) due to oranges.

This commit is contained in:
Philipp von Weitershausen 2012-04-06 18:39:02 -07:00
parent 89af98f875
commit 67ee95d3b8
7 changed files with 110 additions and 77 deletions

View File

@ -15,6 +15,14 @@ let EXPORTED_SYMBOLS = ["DOMRequestIpcHelper"];
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/Services.jsm");
XPCOMUtils.defineLazyGetter(Services, "rs", function() {
return Cc["@mozilla.org/dom/dom-request-service;1"].getService(Ci.nsIDOMRequestService);
});
XPCOMUtils.defineLazyGetter(this, "cpmm", function() {
return Cc["@mozilla.org/childprocessmessagemanager;1"].getService(Ci.nsIFrameMessageManager);
});
function DOMRequestIpcHelper() {
}
@ -54,7 +62,7 @@ DOMRequestIpcHelper.prototype = {
this._requests = [];
this._window = null;
this._messages.forEach((function(msgName) {
Services.cpmm.removeMessageListener(msgName, this);
cpmm.removeMessageListener(msgName, this);
}).bind(this));
if(this.uninit)
this.uninit();
@ -70,11 +78,11 @@ DOMRequestIpcHelper.prototype = {
this._id = this._getRandomId();
Services.obs.addObserver(this, "inner-window-destroyed", false);
this._messages.forEach((function(msgName) {
Services.cpmm.addMessageListener(msgName, this);
cpmm.addMessageListener(msgName, this);
}).bind(this));
},
createRequest: function() {
return Services.DOMRequest.createRequest(this._window);
return Services.rs.createRequest(this._window);
}
}

View File

@ -11,6 +11,14 @@ Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/DOMRequestHelper.jsm");
XPCOMUtils.defineLazyGetter(Services, "rs", function() {
return Cc["@mozilla.org/dom/dom-request-service;1"].getService(Ci.nsIDOMRequestService);
});
XPCOMUtils.defineLazyGetter(this, "cpmm", function() {
return Cc["@mozilla.org/childprocessmessagemanager;1"].getService(Ci.nsIFrameMessageManager);
});
function convertAppsArray(aApps, aWindow) {
let apps = new Array();
for (let i = 0; i < aApps.length; i++) {
@ -56,27 +64,27 @@ WebappsRegistry.prototype = {
let app = msg.app;
switch (aMessage.name) {
case "Webapps:Install:Return:OK":
Services.DOMRequest.fireSuccess(req, new WebappsApplication(this._window, app.origin, app.manifest, app.manifestURL, app.receipts,
Services.rs.fireSuccess(req, new WebappsApplication(this._window, app.origin, app.manifest, app.manifestURL, app.receipts,
app.installOrigin, app.installTime));
break;
case "Webapps:Install:Return:KO":
Services.DOMRequest.fireError(req, "DENIED");
Services.rs.fireError(req, "DENIED");
break;
case "Webapps:GetSelf:Return:OK":
if (msg.apps.length) {
app = msg.apps[0];
Services.DOMRequest.fireSuccess(req, new WebappsApplication(this._window, app.origin, app.manifest, app.manifestURL, app.receipts,
Services.rs.fireSuccess(req, new WebappsApplication(this._window, app.origin, app.manifest, app.manifestURL, app.receipts,
app.installOrigin, app.installTime));
} else {
Services.DOMRequest.fireSuccess(req, null);
Services.rs.fireSuccess(req, null);
}
break;
case "Webapps:GetInstalled:Return:OK":
Services.DOMRequest.fireSuccess(req, convertAppsArray(msg.apps, this._window));
Services.rs.fireSuccess(req, convertAppsArray(msg.apps, this._window));
break;
case "Webapps:GetSelf:Return:KO":
case "Webapps:GetInstalled:Return:KO":
Services.DOMRequest.fireError(req, "ERROR");
Services.rs.fireError(req, "ERROR");
break;
}
this.removeRequest(msg.requestID);
@ -101,29 +109,29 @@ WebappsRegistry.prototype = {
let installOrigin = this._getOrigin(this._window.location.href);
let manifest = JSON.parse(xhr.responseText, installOrigin);
if (!this.checkManifest(manifest, installOrigin)) {
Services.DOMRequest.fireError(request, "INVALID_MANIFEST");
Services.rs.fireError(request, "INVALID_MANIFEST");
} else {
let receipts = (aParams && aParams.receipts && Array.isArray(aParams.receipts)) ? aParams.receipts : [];
Services.cpmm.sendAsyncMessage("Webapps:Install", { app: { installOrigin: installOrigin,
origin: this._getOrigin(aURL),
manifestURL: aURL,
manifest: manifest,
receipts: receipts },
from: this._window.location.href,
oid: this._id,
requestID: requestID });
cpmm.sendAsyncMessage("Webapps:Install", { app: { installOrigin: installOrigin,
origin: this._getOrigin(aURL),
manifestURL: aURL,
manifest: manifest,
receipts: receipts },
from: this._window.location.href,
oid: this._id,
requestID: requestID });
}
} catch(e) {
Services.DOMRequest.fireError(request, "MANIFEST_PARSE_ERROR");
Services.rs.fireError(request, "MANIFEST_PARSE_ERROR");
}
}
else {
Services.DOMRequest.fireError(request, "MANIFEST_URL_ERROR");
Services.rs.fireError(request, "MANIFEST_URL_ERROR");
}
}).bind(this), false);
xhr.addEventListener("error", (function() {
Services.DOMRequest.fireError(request, "NETWORK_ERROR");
Services.rs.fireError(request, "NETWORK_ERROR");
}).bind(this), false);
xhr.send(null);
@ -132,17 +140,17 @@ WebappsRegistry.prototype = {
getSelf: function() {
let request = this.createRequest();
Services.cpmm.sendAsyncMessage("Webapps:GetSelf", { origin: this._getOrigin(this._window.location.href),
oid: this._id,
requestID: this.getRequestId(request) });
cpmm.sendAsyncMessage("Webapps:GetSelf", { origin: this._getOrigin(this._window.location.href),
oid: this._id,
requestID: this.getRequestId(request) });
return request;
},
getInstalled: function() {
let request = this.createRequest();
Services.cpmm.sendAsyncMessage("Webapps:GetInstalled", { origin: this._getOrigin(this._window.location.href),
oid: this._id,
requestID: this.getRequestId(request) });
cpmm.sendAsyncMessage("Webapps:GetInstalled", { origin: this._getOrigin(this._window.location.href),
oid: this._id,
requestID: this.getRequestId(request) });
return request;
},
@ -227,18 +235,18 @@ WebappsApplication.prototype = {
launch: function(aStartPoint) {
let request = this.createRequest();
Services.cpmm.sendAsyncMessage("Webapps:Launch", { origin: this._origin,
startPoint: aStartPoint,
oid: this._id,
requestID: this.getRequestId(request) });
cpmm.sendAsyncMessage("Webapps:Launch", { origin: this._origin,
startPoint: aStartPoint,
oid: this._id,
requestID: this.getRequestId(request) });
return request;
},
uninstall: function() {
let request = this.createRequest();
Services.cpmm.sendAsyncMessage("Webapps:Uninstall", { origin: this._origin,
oid: this._id,
requestID: this.getRequestId(request) });
cpmm.sendAsyncMessage("Webapps:Uninstall", { origin: this._origin,
oid: this._id,
requestID: this.getRequestId(request) });
return request;
},
@ -249,10 +257,10 @@ WebappsApplication.prototype = {
return;
switch (aMessage.name) {
case "Webapps:Uninstall:Return:OK":
Services.DOMRequest.fireSuccess(req, msg.origin);
Services.rs.fireSuccess(req, msg.origin);
break;
case "Webapps:Uninstall:Return:KO":
Services.DOMRequest.fireError(req, msg.origin);
Services.rs.fireError(req, msg.origin);
break;
}
this.removeRequest(msg.requestID);
@ -300,9 +308,9 @@ WebappsApplicationMgmt.prototype = {
getAll: function() {
let request = this.createRequest();
Services.cpmm.sendAsyncMessage("Webapps:GetAll", { oid: this._id,
requestID: this.getRequestId(request),
hasPrivileges: this.hasPrivileges });
cpmm.sendAsyncMessage("Webapps:GetAll", { oid: this._id,
requestID: this.getRequestId(request),
hasPrivileges: this.hasPrivileges });
return request;
},
@ -338,10 +346,10 @@ WebappsApplicationMgmt.prototype = {
return;
switch (aMessage.name) {
case "Webapps:GetAll:Return:OK":
Services.DOMRequest.fireSuccess(req, convertAppsArray(msg.apps, this._window));
Services.rs.fireSuccess(req, convertAppsArray(msg.apps, this._window));
break;
case "Webapps:GetAll:Return:KO":
Services.DOMRequest.fireError(req, "DENIED");
Services.rs.fireError(req, "DENIED");
break;
case "Webapps:Install:Return:OK":
if (this._oninstall) {

View File

@ -17,6 +17,10 @@ XPCOMUtils.defineLazyGetter(this, "NetUtil", function() {
return NetUtil;
});
XPCOMUtils.defineLazyGetter(this, "ppmm", function() {
return Cc["@mozilla.org/parentprocessmessagemanager;1"].getService(Ci.nsIFrameMessageManager);
});
#ifdef MOZ_WIDGET_GONK
const DIRECTORY_NAME = "webappsDir";
#else
@ -33,7 +37,7 @@ let DOMApplicationRegistry = {
"Webapps:Launch", "Webapps:GetAll"];
this.messages.forEach((function(msgName) {
Services.ppmm.addMessageListener(msgName, this);
ppmm.addMessageListener(msgName, this);
}).bind(this));
Services.obs.addObserver(this, "xpcom-shutdown", false);
@ -58,9 +62,10 @@ let DOMApplicationRegistry = {
observe: function(aSubject, aTopic, aData) {
if (aTopic == "xpcom-shutdown") {
this.messages.forEach((function(msgName) {
Services.ppmm.removeMessageListener(msgName, this);
ppmm.removeMessageListener(msgName, this);
}).bind(this));
Services.obs.removeObserver(this, "xpcom-shutdown");
ppmm = null;
}
},
@ -120,7 +125,7 @@ let DOMApplicationRegistry = {
if (msg.hasPrivileges)
this.getAll(msg);
else
Services.ppmm.sendAsyncMessage("Webapps:GetAll:Return:KO", msg);
ppmm.sendAsyncMessage("Webapps:GetAll:Return:KO", msg);
break;
}
},
@ -154,7 +159,7 @@ let DOMApplicationRegistry = {
},
denyInstall: function(aData) {
Services.ppmm.sendAsyncMessage("Webapps:Install:Return:KO", aData);
ppmm.sendAsyncMessage("Webapps:Install:Return:KO", aData);
},
confirmInstall: function(aData, aFromSync) {
@ -187,7 +192,7 @@ let DOMApplicationRegistry = {
if (!aFromSync)
this._saveApps((function() {
Services.ppmm.sendAsyncMessage("Webapps:Install:Return:OK", aData);
ppmm.sendAsyncMessage("Webapps:Install:Return:OK", aData);
Services.obs.notifyObservers(this, "webapps-sync-install", id);
}).bind(this));
},
@ -241,13 +246,13 @@ let DOMApplicationRegistry = {
} catch (e) {
}
this._saveApps((function() {
Services.ppmm.sendAsyncMessage("Webapps:Uninstall:Return:OK", aData);
ppmm.sendAsyncMessage("Webapps:Uninstall:Return:OK", aData);
Services.obs.notifyObservers(this, "webapps-sync-uninstall", id);
}).bind(this));
}
}
if (!found)
Services.ppmm.sendAsyncMessage("Webapps:Uninstall:Return:KO", aData);
ppmm.sendAsyncMessage("Webapps:Uninstall:Return:KO", aData);
},
getSelf: function(aData) {
@ -264,7 +269,7 @@ let DOMApplicationRegistry = {
this._readManifests(tmp, (function(aResult) {
for (let i = 0; i < aResult.length; i++)
aData.apps[i].manifest = aResult[i].manifest;
Services.ppmm.sendAsyncMessage("Webapps:GetSelf:Return:OK", aData);
ppmm.sendAsyncMessage("Webapps:GetSelf:Return:OK", aData);
}).bind(this));
},
@ -283,7 +288,7 @@ let DOMApplicationRegistry = {
this._readManifests(tmp, (function(aResult) {
for (let i = 0; i < aResult.length; i++)
aData.apps[i].manifest = aResult[i].manifest;
Services.ppmm.sendAsyncMessage("Webapps:GetInstalled:Return:OK", aData);
ppmm.sendAsyncMessage("Webapps:GetInstalled:Return:OK", aData);
}).bind(this));
},
@ -300,7 +305,7 @@ let DOMApplicationRegistry = {
this._readManifests(tmp, (function(aResult) {
for (let i = 0; i < aResult.length; i++)
aData.apps[i].manifest = aResult[i].manifest;
Services.ppmm.sendAsyncMessage("Webapps:GetAll:Return:OK", aData);
ppmm.sendAsyncMessage("Webapps:GetAll:Return:OK", aData);
}).bind(this));
},
@ -346,7 +351,7 @@ let DOMApplicationRegistry = {
dir.remove(true);
} catch (e) {
}
Services.ppmm.sendAsyncMessage("Webapps:Uninstall:Return:OK", { origin: origin });
ppmm.sendAsyncMessage("Webapps:Uninstall:Return:OK", { origin: origin });
} else {
if (!!this.webapps[record.id]) {
this.webapps[record.id] = record.value;
@ -355,7 +360,7 @@ let DOMApplicationRegistry = {
else {
let data = { app: record.value };
this.confirmInstall(data, true);
Services.ppmm.sendAsyncMessage("Webapps:Install:Return:OK", data);
ppmm.sendAsyncMessage("Webapps:Install:Return:OK", data);
}
}
}

View File

@ -19,6 +19,14 @@ Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/DOMRequestHelper.jsm");
XPCOMUtils.defineLazyGetter(Services, "DOMRequest", function() {
return Cc["@mozilla.org/dom/dom-request-service;1"].getService(Ci.nsIDOMRequestService);
});
XPCOMUtils.defineLazyGetter(this, "cpmm", function() {
return Cc["@mozilla.org/childprocessmessagemanager;1"].getService(Ci.nsIFrameMessageManager);
});
const nsIClassInfo = Ci.nsIClassInfo;
const CONTACTPROPERTIES_CID = Components.ID("{53ed7c20-ceda-11e0-9572-0800200c9a66}");
const nsIDOMContactProperties = Ci.nsIDOMContactProperties;
@ -217,9 +225,8 @@ ContactManager.prototype = {
this._setMetaData(newContact, aContact);
debug("send: " + JSON.stringify(newContact));
request = this.createRequest();
Services.cpmm.sendAsyncMessage("Contact:Save",
{contact: newContact,
requestID: this.getRequestId(request)});
cpmm.sendAsyncMessage("Contact:Save", {contact: newContact,
requestID: this.getRequestId(request)});
return request;
} else {
throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
@ -230,9 +237,8 @@ ContactManager.prototype = {
let request;
if (this.hasPrivileges) {
request = this.createRequest();
Services.cpmm.sendAsyncMessage("Contact:Remove",
{id: aRecord.id,
requestID: this.getRequestId(request)});
cpmm.sendAsyncMessage("Contact:Remove", {id: aRecord.id,
requestID: this.getRequestId(request)});
return request;
} else {
throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
@ -297,9 +303,8 @@ ContactManager.prototype = {
let request;
if (this.hasPrivileges) {
request = this.createRequest();
Services.cpmm.sendAsyncMessage("Contacts:Find",
{findOptions: aOptions,
requestID: this.getRequestId(request)});
cpmm.sendAsyncMessage("Contacts:Find", {findOptions: aOptions,
requestID: this.getRequestId(request)});
return request;
} else {
debug("find not allowed");
@ -311,8 +316,7 @@ ContactManager.prototype = {
let request;
if (this.hasPrivileges) {
request = this.createRequest();
Services.cpmm.sendAsyncMessage("Contacts:Clear",
{requestID: this.getRequestId(request)});
cpmm.sendAsyncMessage("Contacts:Clear", {requestID: this.getRequestId(request)});
return request;
} else {
debug("clear not allowed");

View File

@ -16,9 +16,14 @@ const Ci = Components.interfaces;
let EXPORTED_SYMBOLS = ["DOMContactManager"];
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/ContactDB.jsm");
XPCOMUtils.defineLazyGetter(this, "ppmm", function() {
return Cc["@mozilla.org/parentprocessmessagemanager;1"].getService(Ci.nsIFrameMessageManager);
});
let myGlobal = this;
let DOMContactManager = {
@ -26,7 +31,7 @@ let DOMContactManager = {
debug("Init");
this._messages = ["Contacts:Find", "Contacts:Clear", "Contact:Save", "Contact:Remove"];
this._messages.forEach((function(msgName) {
Services.ppmm.addMessageListener(msgName, this);
ppmm.addMessageListener(msgName, this);
}).bind(this));
var idbManager = Components.classes["@mozilla.org/dom/indexeddb/manager;1"].getService(Ci.nsIIndexedDatabaseManager);
@ -49,9 +54,10 @@ let DOMContactManager = {
observe: function(aSubject, aTopic, aData) {
myGlobal = null;
this._messages.forEach((function(msgName) {
Services.ppmm.removeMessageListener(msgName, this);
ppmm.removeMessageListener(msgName, this);
}).bind(this));
Services.obs.removeObserver(this, "profile-before-change");
ppmm = null;
this._messages = null;
if (this._db)
this._db.close();
@ -85,23 +91,23 @@ let DOMContactManager = {
}
debug("result:" + JSON.stringify(result));
Services.ppmm.sendAsyncMessage("Contacts:Find:Return:OK", {requestID: msg.requestID, contacts: result});
ppmm.sendAsyncMessage("Contacts:Find:Return:OK", {requestID: msg.requestID, contacts: result});
}.bind(this),
function(aErrorMsg) { Services.ppmm.sendAsyncMessage("Contacts:Find:Return:KO", { requestID: msg.requestID, errorMsg: aErrorMsg }) }.bind(this),
function(aErrorMsg) { ppmm.sendAsyncMessage("Contacts:Find:Return:KO", { requestID: msg.requestID, errorMsg: aErrorMsg }) }.bind(this),
msg.findOptions);
break;
case "Contact:Save":
this._db.saveContact(msg.contact, function() { Services.ppmm.sendAsyncMessage("Contact:Save:Return:OK", { requestID: msg.requestID }); }.bind(this),
function(aErrorMsg) { Services.ppmm.sendAsyncMessage("Contact:Save:Return:KO", { requestID: msg.requestID, errorMsg: aErrorMsg }); }.bind(this));
this._db.saveContact(msg.contact, function() { ppmm.sendAsyncMessage("Contact:Save:Return:OK", { requestID: msg.requestID }); }.bind(this),
function(aErrorMsg) { ppmm.sendAsyncMessage("Contact:Save:Return:KO", { requestID: msg.requestID, errorMsg: aErrorMsg }); }.bind(this));
break;
case "Contact:Remove":
this._db.removeContact(msg.id,
function() { Services.ppmm.sendAsyncMessage("Contact:Remove:Return:OK", { requestID: msg.requestID }); }.bind(this),
function(aErrorMsg) { Services.ppmm.sendAsyncMessage("Contact:Remove:Return:KO", { requestID: msg.requestID, errorMsg: aErrorMsg }); }.bind(this));
function() { ppmm.sendAsyncMessage("Contact:Remove:Return:OK", { requestID: msg.requestID }); }.bind(this),
function(aErrorMsg) { ppmm.sendAsyncMessage("Contact:Remove:Return:KO", { requestID: msg.requestID, errorMsg: aErrorMsg }); }.bind(this));
break;
case "Contacts:Clear":
this._db.clear(function() { Services.ppmm.sendAsyncMessage("Contacts:Clear:Return:OK", { requestID: msg.requestID }); }.bind(this),
function(aErrorMsg) { Services.ppmm.sendAsyncMessage("Contacts:Clear:Return:KO", { requestID: msg.requestID, errorMsg: aErrorMsg }); }.bind(this));
this._db.clear(function() { ppmm.sendAsyncMessage("Contacts:Clear:Return:OK", { requestID: msg.requestID }); }.bind(this),
function(aErrorMsg) { ppmm.sendAsyncMessage("Contacts:Clear:Return:KO", { requestID: msg.requestID, errorMsg: aErrorMsg }); }.bind(this));
}
}
}

View File

@ -114,6 +114,10 @@ const Cu = Components.utils;
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/Services.jsm");
XPCOMUtils.defineLazyGetter(Services, "DOMRequest", function() {
return Cc["@mozilla.org/dom/dom-request-service;1"].getService(Ci.nsIDOMRequestService);
});
const nsIClassInfo = Ci.nsIClassInfo;
const SETTINGSLOCK_CONTRACTID = "@mozilla.org/settingsLock;1";
const SETTINGSLOCK_CID = Components.ID("{ef95ddd0-6308-11e1-b86c-0800200c9a66}");

View File

@ -93,9 +93,7 @@ let initTable = [
["startup", "@mozilla.org/toolkit/app-startup;1", "nsIAppStartup"],
["sysinfo", "@mozilla.org/system-info;1", "nsIPropertyBag2"],
["clipboard", "@mozilla.org/widget/clipboard;1", "nsIClipboard"],
["DOMRequest", "@mozilla.org/dom/dom-request-service;1", "nsIDOMRequestService"],
["cpmm", "@mozilla.org/childprocessmessagemanager;1", "nsIFrameMessageManager"],
["ppmm", "@mozilla.org/parentprocessmessagemanager;1", "nsIFrameMessageManager"],
["DOMRequest", "@mozilla.org/dom/dom-request-service;1", "nsIDOMRequestService"]
];
initTable.forEach(function ([name, contract, intf])