| Index: lib/child/bootstrap.js |
| =================================================================== |
| --- a/lib/child/bootstrap.js |
| +++ b/lib/child/bootstrap.js |
| @@ -39,58 +39,52 @@ |
| remove: function(handler) |
| { |
| let index = shutdownHandlers.indexOf(handler); |
| if (index >= 0) |
| shutdownHandlers.splice(index, 1); |
| } |
| }; |
| - addMessageListener("AdblockPlus:Info", init); |
| - addMessageListener("AdblockPlus:Shutdown", shutdown); |
| + let callbackPrefix = Services.appinfo.processID + " "; |
| + let maxCallbackID = 0; |
| + let callbacks = new Map(); |
| - function init(message) |
| + function sendSyncMessageSingleResponse(messageName, data) |
| + { |
| + return sendSyncMessage(messageName, {data})[0]; |
| + } |
| + |
| + function sendAsyncMessageWithResponse(messageName, data, callback) |
| + { |
| + data = {data}; |
| + if (callback) |
| + { |
| + let callbackID = callbackPrefix + (++maxCallbackID); |
| + callbacks.set(callbackID, callback); |
| + data.callbackID = callbackID; |
| + } |
| + sendAsyncMessage(messageName, data); |
| + } |
| + |
| + function onResponse(message) |
| + { |
| + let {callbackID, response} = message.data; |
| + if (callbacks.has(callbackID)) |
| + { |
| + let callback = callbacks.get(callbackID); |
| + callbacks.delete(callbackID); |
| + callback(response); |
| + } |
| + } |
|
Wladimir Palant
2015/11/09 15:41:08
The functions and variables above merely moved bec
|
| + |
| + function init(info) |
| { |
| removeMessageListener("AdblockPlus:Info", init); |
|
Thomas Greiner
2015/12/01 15:40:27
You removed `addMessageListener("AdblockPlus:Info"
Wladimir Palant
2015/12/01 19:12:21
Done.
|
| - let callbackPrefix = Services.appinfo.processID + " "; |
| - let maxCallbackID = 0; |
| - let callbacks = new Map(); |
| - |
| - function sendSyncMessageSingleResponse(messageName, data) |
| - { |
| - return sendSyncMessage(messageName, {data})[0]; |
| - } |
| - |
| - function sendAsyncMessageWithResponse(messageName, data, callback) |
| - { |
| - data = {data}; |
| - if (callback) |
| - { |
| - let callbackID = callbackPrefix + (++maxCallbackID); |
| - callbacks.set(callbackID, callback); |
| - data.callbackID = callbackID; |
| - } |
| - sendAsyncMessage(messageName, data); |
| - } |
| - |
| - function onResponse(message) |
| - { |
| - let {callbackID, response} = message.data; |
| - if (callbacks.has(callbackID)) |
| - { |
| - let callback = callbacks.get(callbackID); |
| - callbacks.delete(callbackID); |
| - callback(response); |
| - } |
| - } |
| - addMessageListener("AdblockPlus:Response", onResponse); |
| - onShutdown.add(() => removeMessageListener("AdblockPlus:Response", onResponse)); |
| - |
| - let info = message.data; |
| loader = Loader({ |
| paths: { |
| "": info.addonRoot + "lib/" |
| }, |
| globals: { |
| Components, Cc, Ci, Cu, Cr, atob, btoa, onShutdown, |
| addMessageListener, removeMessageListener, |
| sendAsyncMessage: sendAsyncMessageWithResponse, |
| @@ -103,27 +97,33 @@ |
| main(loader, "child/main"); |
| } |
| function shutdown(message) |
| { |
| if (message.data == Components.stack.filename) |
| { |
| - removeMessageListener("AdblockPlus:Shutdown", shutdown); |
| - |
| onShutdown.done = true; |
| for (let i = shutdownHandlers.length - 1; i >= 0; i --) |
| { |
| try |
| { |
| shutdownHandlers[i](); |
| } |
| catch (e) |
| { |
| Cu.reportError(e); |
| } |
| } |
| shutdownHandlers = null; |
| } |
| } |
| + |
| + sendAsyncMessageWithResponse("AdblockPlus:GetInfo", null, init); |
| + addMessageListener("AdblockPlus:Response", onResponse); |
| + addMessageListener("AdblockPlus:Shutdown", shutdown); |
| + onShutdown.add(() => { |
| + removeMessageListener("AdblockPlus:Response", onResponse); |
| + removeMessageListener("AdblockPlus:Shutdown", shutdown); |
| + }); |
| })(); |