mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 989098 - Use wrapper object to pass generic objects in sendResponse. r=wesj
This commit is contained in:
parent
0633a33d8b
commit
3e747f49cf
@ -19,6 +19,8 @@ import java.util.concurrent.CopyOnWriteArrayList;
|
|||||||
public final class EventDispatcher {
|
public final class EventDispatcher {
|
||||||
private static final String LOGTAG = "GeckoEventDispatcher";
|
private static final String LOGTAG = "GeckoEventDispatcher";
|
||||||
private static final String GUID = "__guid__";
|
private static final String GUID = "__guid__";
|
||||||
|
private static final String SUFFIX_RETURN = "Return";
|
||||||
|
private static final String SUFFIX_ERROR = "Error";
|
||||||
|
|
||||||
private final Map<String, CopyOnWriteArrayList<GeckoEventListener>> mEventListeners
|
private final Map<String, CopyOnWriteArrayList<GeckoEventListener>> mEventListeners
|
||||||
= new HashMap<String, CopyOnWriteArrayList<GeckoEventListener>>();
|
= new HashMap<String, CopyOnWriteArrayList<GeckoEventListener>>();
|
||||||
@ -102,21 +104,22 @@ public final class EventDispatcher {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void sendResponse(JSONObject message, JSONObject response) {
|
public static void sendResponse(JSONObject message, Object response) {
|
||||||
try {
|
sendResponseHelper(SUFFIX_RETURN, message, response);
|
||||||
response.put(GUID, message.getString(GUID));
|
|
||||||
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent(message.getString("type") + ":Return", response.toString()));
|
|
||||||
} catch (Exception ex) {
|
|
||||||
Log.e(LOGTAG, "Unable to send response", ex);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void sendError(JSONObject message, JSONObject error) {
|
public static void sendError(JSONObject message, Object response) {
|
||||||
|
sendResponseHelper(SUFFIX_ERROR, message, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void sendResponseHelper(String suffix, JSONObject message, Object response) {
|
||||||
try {
|
try {
|
||||||
error.put(GUID, message.getString(GUID));
|
final JSONObject wrapper = new JSONObject();
|
||||||
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent(message.getString("type") + ":Error", error.toString()));
|
wrapper.put(GUID, message.getString(GUID));
|
||||||
} catch (Exception ex) {
|
wrapper.put("response", response);
|
||||||
Log.e(LOGTAG, "Unable to send error", ex);
|
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent(message.getString("type") + ":" + suffix, wrapper.toString()));
|
||||||
|
} catch (Exception e) {
|
||||||
|
Log.e(LOGTAG, "Unable to send " + suffix, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7254,7 +7254,7 @@ var WebappsUI = {
|
|||||||
manifestURL: aData.app.manifestURL,
|
manifestURL: aData.app.manifestURL,
|
||||||
origin: origin
|
origin: origin
|
||||||
}, (data) => {
|
}, (data) => {
|
||||||
let profilePath = JSON.parse(data).profile;
|
let profilePath = data.profile;
|
||||||
if (!profilePath)
|
if (!profilePath)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ let Accounts = Object.freeze({
|
|||||||
if (error) {
|
if (error) {
|
||||||
deferred.reject(error);
|
deferred.reject(error);
|
||||||
} else {
|
} else {
|
||||||
deferred.resolve(JSON.parse(data).exists);
|
deferred.resolve(data.exists);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -123,10 +123,10 @@ var HelperApps = {
|
|||||||
let data = this._sendMessageSync(msg);
|
let data = this._sendMessageSync(msg);
|
||||||
if (!data)
|
if (!data)
|
||||||
return [];
|
return [];
|
||||||
return parseData(JSON.parse(data));
|
return parseData(data);
|
||||||
} else {
|
} else {
|
||||||
sendMessageToJava(msg, function(data) {
|
sendMessageToJava(msg, function(data) {
|
||||||
callback(parseData(JSON.parse(data)));
|
callback(parseData(data));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -175,7 +175,7 @@ var HelperApps = {
|
|||||||
});
|
});
|
||||||
|
|
||||||
sendMessageToJava(msg, function(data) {
|
sendMessageToJava(msg, function(data) {
|
||||||
callback(JSON.parse(data));
|
callback(data);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
let msg = this._getMessage("Intent:Open", uri, {
|
let msg = this._getMessage("Intent:Open", uri, {
|
||||||
|
@ -27,8 +27,8 @@ function sendMessageToJava(aMessage, aCallback) {
|
|||||||
Services.obs.removeObserver(obs, aMessage.type + ":Return", false);
|
Services.obs.removeObserver(obs, aMessage.type + ":Return", false);
|
||||||
Services.obs.removeObserver(obs, aMessage.type + ":Error", false);
|
Services.obs.removeObserver(obs, aMessage.type + ":Error", false);
|
||||||
|
|
||||||
aCallback(aTopic == aMessage.type + ":Return" ? aData : null,
|
aCallback(aTopic == aMessage.type + ":Return" ? data.response : null,
|
||||||
aTopic == aMessage.type + ":Error" ? aData : null)
|
aTopic == aMessage.type + ":Error" ? data.response : null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,17 +159,11 @@ Prompt.prototype = {
|
|||||||
show: function(callback) {
|
show: function(callback) {
|
||||||
this.callback = callback;
|
this.callback = callback;
|
||||||
log("Sending message");
|
log("Sending message");
|
||||||
Services.obs.addObserver(this, "Prompt:Return", false);
|
|
||||||
this._innerShow();
|
this._innerShow();
|
||||||
},
|
},
|
||||||
|
|
||||||
_innerShow: function() {
|
_innerShow: function() {
|
||||||
sendMessageToJava(this.msg, (aData) => {
|
sendMessageToJava(this.msg, (data) => {
|
||||||
log("observe " + aData);
|
|
||||||
let data = JSON.parse(aData);
|
|
||||||
|
|
||||||
Services.obs.removeObserver(this, "Prompt:Return", false);
|
|
||||||
|
|
||||||
if (this.callback)
|
if (this.callback)
|
||||||
this.callback(data);
|
this.callback(data);
|
||||||
});
|
});
|
||||||
|
@ -66,7 +66,7 @@ SharedPreferences.prototype = Object.freeze({
|
|||||||
preferences: prefs,
|
preferences: prefs,
|
||||||
branch: this._branch,
|
branch: this._branch,
|
||||||
}, (data) => {
|
}, (data) => {
|
||||||
result = JSON.parse(data).values;
|
result = data.values;
|
||||||
});
|
});
|
||||||
|
|
||||||
let thread = Services.tm.currentThread;
|
let thread = Services.tm.currentThread;
|
||||||
|
@ -338,7 +338,7 @@ this.WebappManager = {
|
|||||||
sendMessageToJava({
|
sendMessageToJava({
|
||||||
type: "Webapps:GetApkVersions",
|
type: "Webapps:GetApkVersions",
|
||||||
packageNames: packageNames
|
packageNames: packageNames
|
||||||
}, data => deferred.resolve(JSON.parse(data).versions));
|
}, data => deferred.resolve(data.versions));
|
||||||
|
|
||||||
return deferred.promise;
|
return deferred.promise;
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user