Index: ext/common.js |
diff --git a/ext/common.js b/ext/common.js |
index 445dc73ad58621eae3adf7a5170a687e093707bd..e3fbdc16d29aae9d0e71dd1d29ec4ec10ed80668 100644 |
--- a/ext/common.js |
+++ b/ext/common.js |
@@ -18,7 +18,9 @@ |
"use strict"; |
{ |
+ /* eslint-disable no-var */ |
var ext = {}; |
+ /* eslint-enable no-var */ |
let EventTarget = ext._EventTarget = function() |
{ |
@@ -36,15 +38,45 @@ |
if (idx != -1) |
this._listeners.splice(idx, 1); |
}, |
- _dispatch() |
+ _dispatch(...args) |
{ |
let results = []; |
let listeners = this._listeners.slice(); |
for (let listener of listeners) |
- results.push(listener.apply(null, arguments)); |
+ 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; |
} |