firefox android compatibility changes

This commit is contained in:
wareya committed 2017-12-15 23:38:08 -05:00
1 parent c07de19dca
commit e536777da6
4 files changed
+94 -40

No files matched your search

+33 -21
View File
@@ -81,8 +81,8 @@ function buildlookups()
} }
console.log("built lookup tables"); console.log("built lookup tables");
console.log("size:"); console.log("size:");
console.log(Object.keys(lookup_kan).length); console.log(lookup_kan.size);
console.log(Object.keys(lookup_kana).length); console.log(lookup_kana.size);
console.log("dict size:"); console.log("dict size:");
console.log(dict.length); console.log(dict.length);
} }
@@ -771,13 +771,13 @@ function lookup_indirect(text, time, divexisted)
} }
if(result !== undefined) if(result !== undefined)
{ {
//console.log("found lookup"); console.log("found lookup");
//console.log(text) console.log(text)
return {text:text, result:result}; return {text:text, result:result};
} }
else else
{ {
//console.log("did not find lookup"); console.log("did not find lookup");
//console.log(text); //console.log(text);
} }
} }
@@ -787,20 +787,26 @@ async function update_icon(enabled)
if(enabled) if(enabled)
{ {
browser.browserAction.setTitle({title:"Nazeka (enabled)"}); browser.browserAction.setTitle({title:"Nazeka (enabled)"});
browser.browserAction.setIcon({path:{ try
"16": "img/enabled16.png", {
"32": "img/enabled32.png", browser.browserAction.setIcon({path:{
"512": "img/enabled512.png" "16": "img/enabled16.png",
}},); "32": "img/enabled32.png",
"512": "img/enabled512.png"
}},);
} catch (err) {}
} }
else else
{ {
browser.browserAction.setTitle({title:"Nazeka (disabled)"}); browser.browserAction.setTitle({title:"Nazeka (disabled)"});
browser.browserAction.setIcon({path:{ try
"16": "img/action16.png", {
"32": "img/action32.png", browser.browserAction.setIcon({path:{
"512": "img/action512.png" "16": "img/action16.png",
}},); "32": "img/action32.png",
"512": "img/action512.png"
}},);
} catch (err) {}
} }
} }
@@ -846,12 +852,15 @@ function tryopenwindow(info, tab)
} }
} }
browser.contextMenus.create({ if(browser.contextMenus)
id: "nazeka-reopen", {
title: "Open Reader", browser.contextMenus.create({
contexts: ["browser_action"], id: "nazeka-reopen",
onclick: tryopenwindow title: "Open Reader",
}); contexts: ["browser_action"],
onclick: tryopenwindow
});
}
let origin_tab = undefined; let origin_tab = undefined;
@@ -882,8 +891,10 @@ function clipboard_hook(tab)
document.execCommand("paste"); document.execCommand("paste");
} }
console.log("setting message listener");
browser.runtime.onMessage.addListener((req, sender, sendResponse) => browser.runtime.onMessage.addListener((req, sender, sendResponse) =>
{ {
console.log("received message to background script");
if (req.type == "search") if (req.type == "search")
{ {
sendResponse(lookup_indirect(req.text, req.time, req.divexisted)); sendResponse(lookup_indirect(req.text, req.time, req.divexisted));
@@ -901,6 +912,7 @@ browser.runtime.onMessage.addListener((req, sender, sendResponse) =>
return; return;
} }
}); });
console.log("set message listener");
browser.contextMenus.create({ browser.contextMenus.create({
id: "nazeka-toggle", id: "nazeka-toggle",
+2
View File
@@ -18,6 +18,8 @@
<input id="fixedwidthpositioning" type="checkbox" name=fixedwidthpositioning class=panel-formElements-item/><label for=fixedwidthpositioning class=panel-formElements-item>Position as though fixed width</label><br> <input id="fixedwidthpositioning" type="checkbox" name=fixedwidthpositioning class=panel-formElements-item/><label for=fixedwidthpositioning class=panel-formElements-item>Position as though fixed width</label><br>
<input id="length" type="number" min="6" max="100" value="25" name=length class=panel-formElements-item/><label for=length class=panel-formElements-item>Search length (characters) (default 25, sane values are from 25 to 50)</label><br> <input id="length" type="number" min="6" max="100" value="25" name=length class=panel-formElements-item/><label for=length class=panel-formElements-item>Search length (characters) (default 25, sane values are from 25 to 50)</label><br>
<input id="scale" type="number" min="0.1" max="64" value="1" name=scale class=panel-formElements-item step="0.1"/><label for=scale class=panel-formElements-item>Lookup popup scale</label><br> <input id="scale" type="number" min="0.1" max="64" value="1" name=scale class=panel-formElements-item step="0.1"/><label for=scale class=panel-formElements-item>Lookup popup scale</label><br>
<input id="width" type="number" min="100" max="10000" value="600" name=width class=panel-formElements-item/><label for=width class=panel-formElements-item>Lookup popup width (before scaling)</label><br>
<input id="lookuprate" type="number" min="1" max="1000" value="8" name=lookuprate class=panel-formElements-item/><label for=lookuprate class=panel-formElements-item>Lookup rate</label><br>
<p>This extension uses JMdict, which is Copyright © 2017 The Electronic Dictionary Research and Development Group and licensed under the <a href="https://creativecommons.org/licenses/by-sa/3.0/">CC BY-SA 3.0</a> license.</p> <p>This extension uses JMdict, which is Copyright © 2017 The Electronic Dictionary Research and Development Group and licensed under the <a href="https://creativecommons.org/licenses/by-sa/3.0/">CC BY-SA 3.0</a> license.</p>
<p>This extension is otherwise licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, version 2.0</a>.</p> <p>This extension is otherwise licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, version 2.0</a>.</p>
<div><p>Meanings of abbreviations follow. From JMdict.<p> <div><p>Meanings of abbreviations follow. From JMdict.<p>
+16
View File
@@ -4,6 +4,8 @@ function restoreListeners()
document.querySelector("#compact").addEventListener("change", setOptions); document.querySelector("#compact").addEventListener("change", setOptions);
document.querySelector("#length").addEventListener("change", setOptions); document.querySelector("#length").addEventListener("change", setOptions);
document.querySelector("#scale").addEventListener("change", setOptions); document.querySelector("#scale").addEventListener("change", setOptions);
document.querySelector("#width").addEventListener("change", setOptions);
document.querySelector("#lookuprate").addEventListener("change", setOptions);
document.querySelector("#fixedwidth").addEventListener("change", setOptions); document.querySelector("#fixedwidth").addEventListener("change", setOptions);
document.querySelector("#fixedwidthpositioning").addEventListener("change", setOptions); document.querySelector("#fixedwidthpositioning").addEventListener("change", setOptions);
document.querySelector("#superborder").addEventListener("change", setOptions); document.querySelector("#superborder").addEventListener("change", setOptions);
@@ -15,6 +17,8 @@ function removeListeners()
document.querySelector("#compact").removeEventListener("change", setOptions); document.querySelector("#compact").removeEventListener("change", setOptions);
document.querySelector("#length").removeEventListener("change", setOptions); document.querySelector("#length").removeEventListener("change", setOptions);
document.querySelector("#scale").addEventListener("change", setOptions); document.querySelector("#scale").addEventListener("change", setOptions);
document.querySelector("#width").addEventListener("change", setOptions);
document.querySelector("#lookuprate").addEventListener("change", setOptions);
document.querySelector("#fixedwidth").removeEventListener("change", setOptions); document.querySelector("#fixedwidth").removeEventListener("change", setOptions);
document.querySelector("#fixedwidthpositioning").removeEventListener("change", setOptions); document.querySelector("#fixedwidthpositioning").removeEventListener("change", setOptions);
document.querySelector("#superborder").addEventListener("change", setOptions); document.querySelector("#superborder").addEventListener("change", setOptions);
@@ -36,6 +40,8 @@ async function restoreOptions()
let compact = await getvar("compact", true); let compact = await getvar("compact", true);
let length = await getvar("length", 25); let length = await getvar("length", 25);
let scale = await getvar("scale", 1); let scale = await getvar("scale", 1);
let width = await getvar("width", 600);
let lookuprate = await getvar("lookuprate", 8);
let fixedwidth = await getvar("fixedwidth", false); let fixedwidth = await getvar("fixedwidth", false);
let fixedwidthpositioning = await getvar("fixedwidthpositioning", false); let fixedwidthpositioning = await getvar("fixedwidthpositioning", false);
let superborder = await getvar("superborder", false); let superborder = await getvar("superborder", false);
@@ -45,6 +51,8 @@ async function restoreOptions()
document.querySelector("#compact").checked = compact?true:false; document.querySelector("#compact").checked = compact?true:false;
document.querySelector("#length").value = length?length:25; document.querySelector("#length").value = length?length:25;
document.querySelector("#scale").value = scale?scale:1; document.querySelector("#scale").value = scale?scale:1;
document.querySelector("#width").value = width?width:600;
document.querySelector("#lookuprate").value = lookuprate?lookuprate:8;
document.querySelector("#fixedwidth").checked = fixedwidth?true:false; document.querySelector("#fixedwidth").checked = fixedwidth?true:false;
document.querySelector("#fixedwidthpositioning").checked = fixedwidthpositioning?true:false; document.querySelector("#fixedwidthpositioning").checked = fixedwidthpositioning?true:false;
document.querySelector("#superborder").checked = superborder?true:false; document.querySelector("#superborder").checked = superborder?true:false;
@@ -68,12 +76,20 @@ function setOptions()
let scale = Number(document.querySelector("#scale").value); let scale = Number(document.querySelector("#scale").value);
if(!scale) // NaN is falsy if(!scale) // NaN is falsy
scale = 1; scale = 1;
let width = Number(document.querySelector("#width").value);
if(!width) // NaN is falsy
width = 600;
let lookuprate = Number(document.querySelector("#lookuprate").value);
if(!lookuprate) // NaN is falsy
lookuprate = 8;
browser.storage.local.set( browser.storage.local.set(
{ {
enabled: document.querySelector("#enabled").checked, enabled: document.querySelector("#enabled").checked,
compact: document.querySelector("#compact").checked, compact: document.querySelector("#compact").checked,
length: length, length: length,
scale: scale, scale: scale,
width: width,
lookuprate: lookuprate,
fixedwidth: document.querySelector("#fixedwidth").checked, fixedwidth: document.querySelector("#fixedwidth").checked,
fixedwidthpositioning: document.querySelector("#fixedwidthpositioning").checked, fixedwidthpositioning: document.querySelector("#fixedwidthpositioning").checked,
superborder: document.querySelector("#superborder").checked, superborder: document.querySelector("#superborder").checked,
+43 -19
View File
@@ -31,6 +31,8 @@ fixedwidthpositioning: false,
superborder: false, superborder: false,
showoriginal: true, showoriginal: true,
scale: 1, scale: 1,
width: 600,
lookuprate: 8,
}; };
let last_time_display = Date.now(); let last_time_display = Date.now();
@@ -75,9 +77,9 @@ function display_div (middle, x, y, time)
let styletext = ""; let styletext = "";
if(settings.fixedwidth) if(settings.fixedwidth)
styletext += "width: 600px; " styletext += "width: " + Math.round(Number(settings.width)) + "px; "
else else
styletext += "max-width: 600px; " styletext += "max-width: " + Math.round(Number(settings.width)) + "px; "
styletext += "position: absolute; top: 0; left: 0; "; styletext += "position: absolute; top: 0; left: 0; ";
if(settings.superborder) if(settings.superborder)
@@ -106,7 +108,7 @@ function display_div (middle, x, y, time)
outer.style = styletext; outer.style = styletext;
let mywidth = 600; let mywidth = settings.width;
if(!settings.fixedwidthpositioning) if(!settings.fixedwidthpositioning)
mywidth = outer.offsetWidth; mywidth = outer.offsetWidth;
@@ -553,6 +555,9 @@ async function settings_init()
getvar("enabled", false); getvar("enabled", false);
getvar("compact", true); getvar("compact", true);
getvar("length", 25); getvar("length", 25);
getvar("scale", 1);
getvar("width", 600);
getvar("lookuprate", 8);
getvar("fixedwidth", false); getvar("fixedwidth", false);
getvar("fixedwidthpositioning", false); getvar("fixedwidthpositioning", false);
getvar("superborder", false); getvar("superborder", false);
@@ -572,7 +577,7 @@ browser.storage.onChanged.addListener((updates, storageArea) =>
{ {
let option = setting[0]; let option = setting[0];
let value = setting[1]; let value = setting[1];
if(["enabled","compact","length","fixedwidth","fixedwidthpositioning","superborder","showoriginal","scale"].includes(option)) if(Object.keys(settings).includes(option))
settings[option] = value.newValue; settings[option] = value.newValue;
} }
if(!settings.enabled && exists_div()) if(!settings.enabled && exists_div())
@@ -583,13 +588,14 @@ browser.storage.onChanged.addListener((updates, storageArea) =>
let lookup_timer = undefined; let lookup_timer = undefined;
let lookup_queue = []; let lookup_queue = [];
let lookup_rate = 8; //let lookup_rate = 8;
let lookup_loop_cancel = false; let lookup_loop_cancel = false;
let lookup_last_time = Date.now(); let lookup_last_time = Date.now();
async function lookup_loop() async function lookup_loop()
{ {
//console.log("running lookup queue");
lookup_last_time = Date.now(); lookup_last_time = Date.now();
let t_start = Date.now(); let t_start = Date.now();
if(lookup_queue.length > 0) if(lookup_queue.length > 0)
@@ -597,7 +603,9 @@ async function lookup_loop()
//console.log("queue not empty"); //console.log("queue not empty");
let lookup = lookup_queue.pop(); let lookup = lookup_queue.pop();
lookup_queue = []; lookup_queue = [];
console.log("asking background to search the dictionary");
let response = await browser.runtime.sendMessage({type:"search", text:lookup[0], time:Date.now(), divexisted:exists_div()}); let response = await browser.runtime.sendMessage({type:"search", text:lookup[0], time:Date.now(), divexisted:exists_div()});
console.log("got response");
if(response) if(response)
{ {
let mydiv = build_div(response.text, response.result); let mydiv = build_div(response.text, response.result);
@@ -606,12 +614,13 @@ async function lookup_loop()
} }
} }
let t_end = Date.now(); let t_end = Date.now();
let t_to_wait = lookup_rate - (t_end - t_start); let t_to_wait = settings.lookuprate - (t_end - t_start);
if(t_to_wait < 0) t_to_wait = 0; if(t_to_wait < 0) t_to_wait = 0;
if(t_to_wait > lookup_rate) t_to_wait = lookup_rate; if(t_to_wait > settings.lookuprate) t_to_wait = settings.lookuprate;
if(lookup_loop_cancel) if(lookup_loop_cancel)
{ {
console.log("queue setup");
lookup_loop_cancel = false; lookup_loop_cancel = false;
lookup_timer = undefined; lookup_timer = undefined;
return; return;
@@ -620,27 +629,29 @@ async function lookup_loop()
lookup_timer = setTimeout(lookup_loop, t_to_wait); lookup_timer = setTimeout(lookup_loop, t_to_wait);
} }
lookup_timer = setTimeout(lookup_loop, lookup_rate); lookup_timer = setTimeout(lookup_loop, settings.lookuprate);
function lookup_enqueue(text, x, y, x2, y2) function lookup_enqueue(text, x, y, x2, y2)
{ {
console.log("trying to enqueue lookup");
lookup_queue = [[text, x, y, x2, y2]]; lookup_queue = [[text, x, y, x2, y2]];
if(!lookup_timer || lookup_last_time+lookup_rate*100 < Date.now()) console.log("enqueued lookup");
if(!lookup_timer || lookup_last_time+settings.lookuprate*100 < Date.now())
{ {
if(lookup_timer) if(lookup_timer)
clearTimeout(lookup_timer); clearTimeout(lookup_timer);
lookup_timer = setTimeout(lookup_loop, lookup_rate); lookup_timer = setTimeout(lookup_loop, settings.lookuprate);
} }
} }
function lookup_cancel() function lookup_cancel()
{ {
console.log("cancelling lookup");
lookup_queue = []; lookup_queue = [];
delete_div(); delete_div();
} }
let time_of_last = Date.now(); let time_of_last = Date.now();
let throttle = 8;
let seach_x_offset = -3; let seach_x_offset = -3;
@@ -648,15 +659,15 @@ function update(event)
{ {
if(!settings.enabled) return; if(!settings.enabled) return;
if(Date.now() - time_of_last < throttle) if(Date.now() - time_of_last < settings.lookuprate)
{ {
//console.log("too soon, returning"); //console.log("too soon, returning");
//console.log(Date.now() + " vs " + time_of_last); //console.log(Date.now() + " vs " + time_of_last);
return; return;
} }
//console.log("---- mousemove entry at " + Date.now()); console.log("---- entry to word lookup at " + Date.now());
time_of_last = Date.now(); time_of_last = Date.now();
//console.log("searching for text"); console.log("searching for text");
let textNode; let textNode;
let offset; let offset;
@@ -718,8 +729,8 @@ function update(event)
// if there was text, use it // if there was text, use it
if (textNode && textNode.nodeType == 3) if (textNode && textNode.nodeType == 3)
{ {
//print_object(textNode); print_object(textNode);
//print_object(textNode.parentNode); print_object(textNode.parentNode);
let rect = textNode.parentNode.getBoundingClientRect(); let rect = textNode.parentNode.getBoundingClientRect();
let fud = 5; let fud = 5;
// FIXME: Doesn't work to reject in all cases // FIXME: Doesn't work to reject in all cases
@@ -730,7 +741,7 @@ function update(event)
lookup_cancel(); lookup_cancel();
return; return;
} }
//console.log("found text"); console.log("found text");
let text = textNode.textContent.substring(offset, textNode.textContent.length); let text = textNode.textContent.substring(offset, textNode.textContent.length);
// grab text from later and surrounding DOM nodes // grab text from later and surrounding DOM nodes
@@ -778,13 +789,16 @@ function update(event)
} }
text = text.trim(); text = text.trim();
//print_object(text); print_object(text);
text = text.substring(0, Math.min(text.length, settings.length)); text = text.substring(0, Math.min(text.length, settings.length));
//if(text != "") //if(text != "")
//lookup_indirect(text, event.clientX, event.clientY, time_of_last); //lookup_indirect(text, event.clientX, event.clientY, time_of_last);
if(text != "") if(text != "")
{
console.log("calling lookup_enqueue");
lookup_enqueue(text, event.clientX, event.clientY, event.pageX, event.pageY); lookup_enqueue(text, event.clientX, event.clientY, event.pageX, event.pageY);
}
else else
{ {
// console.log("no text"); // console.log("no text");
@@ -802,7 +816,17 @@ function update(event)
} }
} }
function update_touch(event)
{
console.log("touch event triggered");
if(event.touches)
{
console.log("receiving touch event");
update(event.touches[0]);
}
}
window.addEventListener("mousemove", update); window.addEventListener("mousemove", update);
window.addEventListener("touchmove", update); document.addEventListener("touchmove", update_touch);