summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Yatskov <FooSoft@users.noreply.github.com>2016-06-20 10:00:01 -0700
committerGitHub <noreply@github.com>2016-06-20 10:00:01 -0700
commit261914328fb8b72d8984a21eaf7670a01f1da2c6 (patch)
treef04b1ffd3e5d7fb9fa6047e9aeac8fde84aa4160
parentb7901945b34cda8994f12950ce50024a6b028cee (diff)
parenta9863de95e201c8e814ad7d6dacedae98b13748a (diff)
Merge pull request #7 from ispedals/firefox
Firefox
-rw-r--r--ext/bg/background.html1
-rw-r--r--ext/bg/js/polyfill-gecko.js15
-rw-r--r--ext/bg/js/translator.js10
-rw-r--r--ext/bg/options.html1
-rw-r--r--ext/fg/js/popup.js6
-rw-r--r--ext/fg/js/range.js13
-rw-r--r--ext/manifest.json13
7 files changed, 52 insertions, 7 deletions
diff --git a/ext/bg/background.html b/ext/bg/background.html
index c35e917d..c6a84636 100644
--- a/ext/bg/background.html
+++ b/ext/bg/background.html
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<body>
+ <script src="js/polyfill-gecko.js"></script>
<script src="../lib/handlebars.min.js"></script>
<script src="js/templates.js"></script>
<script src="js/dictionary.js"></script>
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();
diff --git a/ext/bg/options.html b/ext/bg/options.html
index 289a0f60..a2b4a56b 100644
--- a/ext/bg/options.html
+++ b/ext/bg/options.html
@@ -163,6 +163,7 @@
<script src="../lib/jquery-2.2.2.min.js"></script>
<script src="../lib/bootstrap-3.3.6-dist/js/bootstrap.min.js"></script>
+ <script src="js/polyfill-gecko.js"></script>
<script src="js/options.js"></script>
<script src="js/options-form.js"></script>
</body>
diff --git a/ext/fg/js/popup.js b/ext/fg/js/popup.js
index 78106319..4c2b18f7 100644
--- a/ext/fg/js/popup.js
+++ b/ext/fg/js/popup.js
@@ -62,10 +62,8 @@ class Popup {
return;
}
- const doc = this.popup.contentDocument;
- doc.open();
- doc.write(content);
- doc.close();
+ const doc = this.popup;
+ doc.srcdoc=content;
}
sendMessage(action, params, callback) {
diff --git a/ext/fg/js/range.js b/ext/fg/js/range.js
index 182e242c..0befe279 100644
--- a/ext/fg/js/range.js
+++ b/ext/fg/js/range.js
@@ -16,6 +16,19 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+// Polyfill caretRangeFromPoint() using the newer caretPositionFromPoint()
+if (!document.caretRangeFromPoint){
+ document.caretRangeFromPoint = function polyfillcaretRangeFromPoint(x,y){
+ let range = document.createRange();
+ let position = document.caretPositionFromPoint(x,y);
+ if (!position) {
+ return null;
+ }
+ range.setStart(position.offsetNode, position.offset);
+ range.setEnd(position.offsetNode, position.offset);
+ return range;
+ };
+}
class Range {
constructor(range) {
diff --git a/ext/manifest.json b/ext/manifest.json
index 3cb13480..70ce4a9a 100644
--- a/ext/manifest.json
+++ b/ext/manifest.json
@@ -15,8 +15,10 @@
"css": ["fg/css/client.css"]
}],
"minimum_chrome_version": "45.0.0.0",
- "options_page": "bg/options.html",
- "permissions": ["storage"],
+ "options_ui": {
+ "page": "bg/options.html"
+ },
+ "permissions": ["*://127.0.0.1/*", "storage"],
"web_accessible_resources": [
"fg/css/frame.css",
"fg/img/add_kanji.png",
@@ -26,5 +28,10 @@
"fg/js/frame.js",
"fg/ttf/kanji-stroke-orders.ttf",
"fg/ttf/vl-gothic-regular.ttf"
- ]
+ ],
+ "applications": {
+ "gecko": {
+ "id": "yomichan-gecko@example.com"
+ }
+ }
}