diff options
author | Alex Yatskov <FooSoft@users.noreply.github.com> | 2016-06-20 10:00:01 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-06-20 10:00:01 -0700 |
commit | 261914328fb8b72d8984a21eaf7670a01f1da2c6 (patch) | |
tree | f04b1ffd3e5d7fb9fa6047e9aeac8fde84aa4160 /ext/bg/js | |
parent | b7901945b34cda8994f12950ce50024a6b028cee (diff) | |
parent | a9863de95e201c8e814ad7d6dacedae98b13748a (diff) |
Merge pull request #7 from ispedals/firefox
Firefox
Diffstat (limited to 'ext/bg/js')
-rw-r--r-- | ext/bg/js/polyfill-gecko.js | 15 | ||||
-rw-r--r-- | ext/bg/js/translator.js | 10 |
2 files changed, 25 insertions, 0 deletions
diff --git a/ext/bg/js/polyfill-gecko.js b/ext/bg/js/polyfill-gecko.js new file mode 100644 index 00000000..8c7cc403 --- /dev/null +++ b/ext/bg/js/polyfill-gecko.js @@ -0,0 +1,15 @@ +// Gecko does not currently support chrome.storage.sync, use storage.local instead +// https://bugzilla.mozilla.org/show_bug.cgi?id=1220494 +if (!chrome.storage.sync) { + chrome.storage.sync = chrome.storage.local; +} + +// Gecko does not currently support chrome.runtime.onInstalled, just ignore calls to it +// (https://bugzilla.mozilla.org/show_bug.cgi?id=1252871) +if (!chrome.runtime.onInstalled) { + chrome.runtime.onInstalled = { + 'addListener' : function(){}, + 'hasListener' : function(){}, + 'removeListener' : function(){} + }; +}
\ No newline at end of file diff --git a/ext/bg/js/translator.js b/ext/bg/js/translator.js index bf1538e2..d79ec6d1 100644 --- a/ext/bg/js/translator.js +++ b/ext/bg/js/translator.js @@ -46,8 +46,17 @@ class Translator { const pendingLoads = []; for (let key of files) { + /* + Spidermonkey does not implement lexical bindings for for-of loop + (see https://bugzilla.mozilla.org/show_bug.cgi?id=449811) + so we need to manually make a new declaration for key. + Otherwise key will always remain the same in the callback to loadData + and the dictionary data will not be set correctly + */ + let key_ = key; pendingLoads.push(key); Translator.loadData(this.paths[key], (response) => { + let key = key_ switch (key) { case 'rules': this.deinflector.setRules(JSON.parse(response)); @@ -228,6 +237,7 @@ class Translator { static loadData(url, callback) { const xhr = new XMLHttpRequest(); + xhr.overrideMimeType("application/json"); xhr.addEventListener('load', () => callback(xhr.responseText)); xhr.open('GET', chrome.extension.getURL(url), true); xhr.send(); |