From 381ad61037b92958900ce1aacbdc8f7f6be4c79a Mon Sep 17 00:00:00 2001 From: Tom Schuster Date: Sat, 3 Nov 2018 20:18:59 +0100 Subject: [PATCH] Add new URL bar based installation for Firefox 65+ --- icons/arrow.svg | 53 ++++++++++++++++++++++++++++++++++ icons/pageaction.png | Bin 0 -> 12720 bytes icons/urlbar.png | Bin 0 -> 6814 bytes search.html | 62 +++++++++++++++++++--------------------- search.js | 65 ++++++++++++++++++++++++++++++++++-------- style.css | 66 +++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 202 insertions(+), 44 deletions(-) create mode 100644 icons/arrow.svg create mode 100644 icons/pageaction.png create mode 100644 icons/urlbar.png create mode 100644 style.css diff --git a/icons/arrow.svg b/icons/arrow.svg new file mode 100644 index 0000000..93e7bbf --- /dev/null +++ b/icons/arrow.svg @@ -0,0 +1,53 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/icons/pageaction.png b/icons/pageaction.png new file mode 100644 index 0000000000000000000000000000000000000000..4c1a050c7184da2290c8faec538e79df109c5781 GIT binary patch literal 12720 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 Uwx0t3NP!^rPX28v$iVOa06UyMIRF3v literal 0 HcmV?d00001 diff --git a/icons/urlbar.png b/icons/urlbar.png new file mode 100644 index 0000000000000000000000000000000000000000..75b8e3e0f17c498825afab8ef27df3ee685508fe GIT binary patch literal 6814 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 literal 0 HcmV?d00001 diff --git a/search.html b/search.html index 311a129..ed76788 100644 --- a/search.html +++ b/search.html @@ -4,45 +4,35 @@ + + Add custom search engine - - - + + - + +
+
+
+

Adding a new search engine via the URL bar

+
+ +

Open the "Page actions" menu

+ +

Click "Add Search Engine"

+

This option will not appear if a search engine with that name already exists.
+ Go to about:preferences#search to see your installed search engines.

+ + +
+
+
+ +

Add custom search engine

@@ -89,6 +79,11 @@

Add custom search engine

+
+ +

Tip: A keyword can be added by going to about:preferences#search after adding the search engine and editing the Keyword column

+
+
@@ -128,6 +123,7 @@

Add custom search engine

 
+
diff --git a/search.js b/search.js index 72346b6..7cf9eaa 100644 --- a/search.js +++ b/search.js @@ -79,7 +79,9 @@ function createXMLString() { return serialzer.serializeToString(doc); } -document.querySelector("form").addEventListener("submit", event => { +document.querySelector("form").addEventListener("submit", async event => { + event.preventDefault(); + const string = createXMLString(); // Upload the OpenSearch XML description to file.io, because AddSearchProvider @@ -87,18 +89,49 @@ document.querySelector("form").addEventListener("submit", event => { // process, the file should be automatically removed. // NB: The documentation on file.io is wrong: 1d is 1 day, but just 1 is 1 week! - fetch("https://file.io/?expires=1d", { - method: "POST", - body: new URLSearchParams({text: string}) - }).then(response => { - return response.json(); - }).then(json => { - // Where the magic happens! - window.external.AddSearchProvider(json.link); - }); + try { + let response = await fetch("https://file.io/?expires=1d", { + method: "POST", + body: new URLSearchParams({text: string}) + }); + let json = await response.json(); + + let {version} = await browser.runtime.getBrowserInfo(); + if (+/(\d+)\./.exec(version)[1] >= 65) { + // Mozilla intentionally disabled AddSearchProvider :( + // https://bugzilla.mozilla.org/show_bug.cgi?id=1503551 + + let link = document.createElement("link"); + link.rel = "search"; + link.type = "application/opensearchdescription+xml"; + link.title = document.querySelector("#input-name").value; + link.href = json.link; + + // This doesn't actually seem to work. Firefox seems to cache. + let existing = document.querySelector("link[rel=search]"); + if (existing) { + existing.remove(); + } + + document.head.append(link); + + document.querySelector("#main").style.display = "none"; + document.querySelector("#instructions").style.display = "block"; + } else { + // Where the magic happens! + window.external.AddSearchProvider(json.link); + } + } catch(error) { + alert(error); + }; +}); +document.querySelector("#close").addEventListener("click", event => { event.preventDefault(); -}); + + document.querySelector("#main").style.display = "block"; + document.querySelector("#instructions").style.display = "none"; +}) document.querySelector("#show-preview").addEventListener("click", event => { const string = createXMLString(); @@ -156,3 +189,13 @@ document.addEventListener("DOMContentLoaded", () => { usePost(); loadIcon(); }); + +// One-click selection for convience, because we can't directly link about:preferences +document.querySelectorAll("mark").forEach(mark => mark.addEventListener("click", event => { + let range = document.createRange(); + range.selectNodeContents(event.target); + + let selection = window.getSelection(); + selection.removeAllRanges(); + selection.addRange(range); +})); diff --git a/style.css b/style.css new file mode 100644 index 0000000..03444ce --- /dev/null +++ b/style.css @@ -0,0 +1,66 @@ +body { + max-width: 800px; + margin: 0 auto 0 auto; +} + +#icon-preview { + height: calc(2.25rem + 2px); + width: calc(2.25rem + 2px); + object-fit: contain; +} + +/* advanced options are initially hidden */ +.adv-hidden { + display: none; +} + +#post-checkbox { + margin-bottom: .5rem; +} + +input[type=file] { + display: none; +} + +label[for=input-file-icon] { + width: 100%; + -moz-appearance: button; +} + +#instructions { + display: none; +} + +#arrow { + position: fixed; + top: 40px; + left: 50%; + margin-left:-20px; + width: 40px; + height: 40px; + background-image: url(icons/arrow.svg); + background-size: contain; + animation: bounce 2s infinite; +} + +#info { + margin: auto; + padding-top: 100px; + width: 800px; +} + +#info p { + margin-top: 0.5em; +} + +@keyframes bounce { + 0%, 20%, 50%, 80%, 100% { + transform: translateY(0); + } + 40% { + transform: translateY(-30px); + } + 60% { + transform: translateY(-15px); + } +}