From a69798f5253d1a3042863a2277fe767f8d6414e9 Mon Sep 17 00:00:00 2001 From: Yumi Izumi Date: Sun, 8 Nov 2020 23:50:55 +0900 Subject: [PATCH] Update background.js --- background.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/background.js b/background.js index 1e23622..6489526 100644 --- a/background.js +++ b/background.js @@ -129,12 +129,25 @@ const layers = { traffic: "S", // not implemented on OSM, default to standard. bicycling: "C", }; +const notPrivateSearchEngine = [ + "google.com", + "google.co.jp", + "www.google.com", + "www.google.co.jp", +]; +const privateSearchEngine = [ + { link: "https://duckduckgo.com", q: "/" }, + { link: "https://startpage.com", q: "/search/" }, + { link: "https://www.qwant.com", q: "/" }, + { link: "https://www.mojeek.com", q: "/search" }, +]; let disableNitter; let disableInvidious; let disableBibliogram; let disableOsm; let disableOldReddit; +let disableSearchEngine; let nitterInstance; let invidiousInstance; let bibliogramInstance; @@ -172,6 +185,7 @@ browser.storage.sync.get( "disableBibliogram", "disableOsm", "disableOldReddit", + "disableSearchEngine", "alwaysProxy", "onlyEmbeddedVideo", "videoQuality", @@ -192,6 +206,7 @@ browser.storage.sync.get( disableBibliogram = result.disableBibliogram; disableOsm = result.disableOsm; disableOldReddit = result.disableOldReddit; + disableSearchEngine = result.disableSearchEngine; nitterInstance = result.nitterInstance; invidiousInstance = result.invidiousInstance; bibliogramInstance = result.bibliogramInstance; @@ -254,6 +269,9 @@ browser.storage.onChanged.addListener((changes) => { if ("disableOldReddit" in changes) { disableOldReddit = changes.disableOldReddit.newValue; } + if ("disableSearchEngine" in changes) { + disableSearchEngine = changes.disableSearchEngine.newValue; + } if ("alwaysProxy" in changes) { alwaysProxy = changes.alwaysProxy.newValue; } @@ -569,6 +587,28 @@ function redirectReddit(url, initiator, type) { return `${oldRedditView}${url.pathname}${url.search}`; } +function redirectSearchEngine(url, initiator) { + if (disableSearchEngine || isException(url, initiator)) { + return null; + } + if (url.pathname.includes("/home")) { + return null; + } + if (url.pathname.includes("search")) { + searchEngine = + searchEngineInstance || getRandomInstance(privateSearchEngine); + search = ""; + url.search + .slice(1) + .split("&") + .forEach(function (input) { + if (input.startsWith("q=")) search = input; + }); + console.log("search: ", search); + return `${searchEngine.link}${searchEngine.q}?${search}`; + } +} + browser.webRequest.onBeforeRequest.addListener( (details) => { const url = new URL(details.url); @@ -602,6 +642,10 @@ browser.webRequest.onBeforeRequest.addListener( redirect = { redirectUrl: redirectReddit(url, initiator, details.type), }; + } else if (notPrivateSearchEngine.includes(url.host)) { + redirect = { + redirectUrl: redirectSearchEngine(url, initiator), + }; } if (redirect && redirect.redirectUrl) { console.info(