| 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; |
| } |