| Index: toolkit/components/extensions/ext-c-runtime.js |
| =================================================================== |
| --- a/toolkit/components/extensions/ext-c-runtime.js |
| +++ b/toolkit/components/extensions/ext-c-runtime.js |
| @@ -1,16 +1,38 @@ |
| "use strict"; |
| +Components.utils.import("resource://gre/modules/Messaging.jsm"); |
| + |
| this.runtime = class extends ExtensionAPI { |
| getAPI(context) { |
| let {extension} = context; |
| return { |
| runtime: { |
| + |
| + // Added functions in order to make possible the communication between |
| + // the Android part and the extension. |
| + // See https://issues.adblockplus.org/ticket/6865 |
| + registerAbbMessageListener: function(listener) { |
| + EventDispatcher.instance.registerListener((event, data, callback) => |
| + { |
| + let result = context.runSafe(listener, data); |
| + if (result["success"]) { |
| + callback.onSuccess(result); |
| + } else { |
| + let errorMsg = result["error"] ? result["error"] : "An error has ocurred"; |
| + callback.onError(errorMsg); |
| + } |
| + }, "Abb:Api"); |
| + }, |
| + sendAbbMessage: function(type) { |
| + EventDispatcher.instance.sendRequest({"type": "Abb:" + type}); |
| + }, |
| + |
| onConnect: context.messenger.onConnect("runtime.onConnect"), |
| onMessage: context.messenger.onMessage("runtime.onMessage"), |
| onConnectExternal: context.messenger.onConnectExternal("runtime.onConnectExternal"), |
| onMessageExternal: context.messenger.onMessageExternal("runtime.onMessageExternal"), |