Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: ext/background.js

Issue 29338928: Issue 3853 - Use new messaging API for the first-run page (Closed)
Patch Set: Using Symbol for internal property Created April 18, 2016, 3:28 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | ext/common.js » ('j') | ext/common.js » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ext/background.js
===================================================================
--- a/ext/background.js
+++ b/ext/background.js
@@ -12,91 +12,67 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
*/
let {XPCOMUtils} = Cu.import("resource://gre/modules/XPCOMUtils.jsm", null);
let {Services} = Cu.import("resource://gre/modules/Services.jsm", null);
-let {
- _MessageProxy: MessageProxy,
- _EventTarget: EventTarget,
- _getSender: getSender
-} = require("ext_common");
-exports.onMessage = new EventTarget();
-let messageProxy = new MessageProxy(
- Cc["@mozilla.org/globalmessagemanager;1"]
- .getService(Ci.nsIMessageListenerManager),
- exports.onMessage);
-onShutdown.add(function()
+let {_EventTarget: EventTarget} = require("ext_common");
+let {port} = require("messaging");
+
+exports.onMessage = new EventTarget(port);
+
+function Page(windowID)
{
- messageProxy._disconnect();
-});
-
-function Page(sender)
-{
- this._sender = sender;
+ this._windowID = windowID;
}
Page.prototype = {
- sendMessage: function(message)
+ sendMessage: function(payload)
{
- if (this._sender)
- this._sender.sendAsyncMessage("AdblockPlus:Message", {payload: message});
+ port.emit("ext_message", {targetID: this._windowID, payload});
}
};
exports.Page = Page;
function PageMap()
{
this._map = new Map();
- Services.obs.addObserver(this, "message-manager-disconnect", true);
- onShutdown.add(function()
- {
- Services.obs.removeObserver(this, "message-manager-disconnect");
- }.bind(this));
+ port.on("ext_disconnect", windowID => this._map.delete(windowID));
}
PageMap.prototype = {
- QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver, Ci.nsISupportsWeakReference]),
-
- observe: function(subject, topic, data)
- {
- if (topic == "message-manager-disconnect")
- this._map.delete(subject);
- },
-
keys: function()
{
let result = [];
- for (let sender of this._map.keys())
- result.push(new Page(sender));
+ for (let windowID of this._map.keys())
+ result.push(new Page(windowID));
return result;
},
get: function(page)
{
- return this._map.get(page._sender);
+ return this._map.get(page._windowID);
},
set: function(page, value)
{
- if (page._sender)
- this._map.set(page._sender, value);
+ this._map.set(page._windowID, value);
},
has: function(page)
{
- return this._map.has(page._sender);
+ return this._map.has(page._windowID);
},
delete: function(page)
{
- this._map.delete(page._sender);
+ return this._map.delete(page._windowID);
}
};
exports.PageMap = PageMap;
exports.showOptions = function()
{
require("ui").UI.openFiltersDialog();
};
« no previous file with comments | « no previous file | ext/common.js » ('j') | ext/common.js » ('J')

Powered by Google App Engine
This is Rietveld