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

Unified Diff: ext/common.js

Issue 29452181: Noissue - Merge current tip to Edge bookmark (Closed)
Patch Set: Created May 30, 2017, 3:49 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 | « ext/background.js ('k') | ext/content.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ext/common.js
===================================================================
--- a/ext/common.js
+++ b/ext/common.js
@@ -1,6 +1,6 @@
/*
* This file is part of Adblock Plus <https://adblockplus.org/>,
- * Copyright (C) 2006-2016 Eyeo GmbH
+ * Copyright (C) 2006-2017 eyeo GmbH
*
* Adblock Plus is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
@@ -17,37 +17,65 @@
"use strict";
+(function()
{
// Both Edge and Mozilla Web Extensions use the namespace 'browser' instead of 'chrome'
if (typeof browser != 'undefined')
window.chrome = window.browser;
window.ext = {};
+
let EventTarget = ext._EventTarget = function()
{
- this._listeners = [];
+ this._listeners = new Set();
};
EventTarget.prototype = {
addListener(listener)
{
- if (this._listeners.indexOf(listener) == -1)
- this._listeners.push(listener);
+ this._listeners.add(listener);
},
removeListener(listener)
{
- let idx = this._listeners.indexOf(listener);
- if (idx != -1)
- this._listeners.splice(idx, 1);
+ this._listeners.delete(listener);
},
- _dispatch()
+ _dispatch(...args)
{
let results = [];
- let listeners = this._listeners.slice();
- for (let listener of listeners)
- results.push(listener.apply(null, arguments));
+ for (let listener of this._listeners)
+ results.push(listener(...args));
return results;
}
};
-}
+
+ // Workaround since HTMLCollection and NodeList didn't have iterator support
+ // before Chrome 51.
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=401699
+ let arrayIterator = Array.prototype[Symbol.iterator];
+ if (!(Symbol.iterator in HTMLCollection.prototype))
+ HTMLCollection.prototype[Symbol.iterator] = arrayIterator;
+ if (!(Symbol.iterator in NodeList.prototype))
+ NodeList.prototype[Symbol.iterator] = arrayIterator;
+
+ /* Message passing */
+
+ ext.onMessage = new ext._EventTarget();
+
+
+ /* Background page */
+
+ ext.backgroundPage = {
+ sendMessage: chrome.runtime.sendMessage,
+ getWindow()
+ {
+ return chrome.extension.getBackgroundPage();
+ }
+ };
+
+
+ /* Utils */
+
+ ext.getURL = chrome.extension.getURL;
+ ext.i18n = chrome.i18n;
+}());
« no previous file with comments | « ext/background.js ('k') | ext/content.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld