mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 958642 - MozActivity must fire an error when the selected app is killed, r=fabrice
This commit is contained in:
parent
128e57f09a
commit
1af48da482
@ -151,13 +151,18 @@ let Activities = {
|
||||
// ActivityProxy.js
|
||||
"Activity:Start",
|
||||
|
||||
// ActivityWrapper.js
|
||||
"Activity:Ready",
|
||||
|
||||
// ActivityRequestHandler.js
|
||||
"Activity:PostResult",
|
||||
"Activity:PostError",
|
||||
|
||||
"Activities:Register",
|
||||
"Activities:Unregister",
|
||||
"Activities:GetContentTypes"
|
||||
"Activities:GetContentTypes",
|
||||
|
||||
"child-process-shutdown"
|
||||
],
|
||||
|
||||
init: function activities_init() {
|
||||
@ -226,6 +231,7 @@ let Activities = {
|
||||
.getService(Ci.nsISystemMessagesInternal);
|
||||
if (!sysmm) {
|
||||
// System message is not present, what should we do?
|
||||
delete Activities.callers[aMsg.id];
|
||||
return;
|
||||
}
|
||||
|
||||
@ -280,7 +286,8 @@ let Activities = {
|
||||
let obsData;
|
||||
|
||||
if (aMessage.name == "Activity:PostResult" ||
|
||||
aMessage.name == "Activity:PostError") {
|
||||
aMessage.name == "Activity:PostError" ||
|
||||
aMessage.name == "Activity:Ready") {
|
||||
caller = this.callers[msg.id];
|
||||
if (!caller) {
|
||||
debug("!! caller is null for msg.id=" + msg.id);
|
||||
@ -293,12 +300,16 @@ let Activities = {
|
||||
|
||||
switch(aMessage.name) {
|
||||
case "Activity:Start":
|
||||
this.callers[msg.id] = { mm: aMessage.target,
|
||||
this.callers[msg.id] = { mm: mm,
|
||||
manifestURL: msg.manifestURL,
|
||||
pageURL: msg.pageURL };
|
||||
this.startActivity(msg);
|
||||
break;
|
||||
|
||||
case "Activity:Ready":
|
||||
caller.childMM = mm;
|
||||
break;
|
||||
|
||||
case "Activity:PostResult":
|
||||
caller.mm.sendAsyncMessage("Activity:FireSuccess", msg);
|
||||
delete this.callers[msg.id];
|
||||
@ -341,6 +352,18 @@ let Activities = {
|
||||
case "Activities:GetContentTypes":
|
||||
this.sendContentTypes(mm);
|
||||
break;
|
||||
case "child-process-shutdown":
|
||||
for (let id in this.callers) {
|
||||
if (this.callers[id].childMM == mm) {
|
||||
this.callers[id].mm.sendAsyncMessage("Activity:FireError", {
|
||||
"id": id,
|
||||
"error": "USER_ABORT"
|
||||
});
|
||||
delete this.callers[id];
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -30,6 +30,13 @@ function ActivityWrapper() {
|
||||
ActivityWrapper.prototype = {
|
||||
wrapMessage: function wrapMessage(aMessage, aWindow) {
|
||||
debug("Wrapping " + JSON.stringify(aMessage));
|
||||
|
||||
// This message is useful to communicate that the activity message has been
|
||||
// properly received by the app. If the app will be killed, the
|
||||
// ActivitiesService will be able to fire an error and complete the
|
||||
// Activity workflow.
|
||||
cpmm.sendAsyncMessage("Activity:Ready", { id: aMessage.id });
|
||||
|
||||
let handler = Cc["@mozilla.org/dom/activities/request-handler;1"]
|
||||
.createInstance(Ci.nsIDOMMozActivityRequestHandler);
|
||||
handler.wrappedJSObject._id = aMessage.id;
|
||||
|
Loading…
Reference in New Issue
Block a user