From 662cdfa6ed1a887c6243c1d05048beb47c4428d4 Mon Sep 17 00:00:00 2001 From: Krzysztof Jan Modras Date: Tue, 8 Dec 2020 12:04:50 +0100 Subject: [PATCH 1/4] Remove redundant code for JWT parsing --- src/background.js | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/background.js b/src/background.js index 1d63641..8f1eeb5 100644 --- a/src/background.js +++ b/src/background.js @@ -43,16 +43,6 @@ class AccessToken { } } -function parseJwt(token) { - var base64Url = token.split('.')[1]; - var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); - var jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) { - return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); - }).join('')); - - return JSON.parse(jsonPayload); -}; - const cookieListener = (changeInfo) => { const { cookie, removed, cause } = changeInfo; if (cookie.domain !== AUTH_DOMAIN) { From bca9693b39a2eb4533fa3d1133e389fe37671343 Mon Sep 17 00:00:00 2001 From: Krzysztof Jan Modras Date: Tue, 8 Dec 2020 12:05:20 +0100 Subject: [PATCH 2/4] Insert top sites and search bar hijack on landing page only --- src/manifest.json | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/manifest.json b/src/manifest.json index 1feeeb0..64d932c 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -20,11 +20,20 @@ "content_scripts": [{ "matches": [ "https://*.ghosterysearch.com/", - "http://localhost/*" + "https://*.ghosterysearch.com/?*", + "http://localhost/", + "http://localhost/?*" ], "js": [ "content/top-sites.js", - "content/search-bar.js", + "content/search-bar.js" + ] + }, { + "matches": [ + "https://*.ghosterysearch.com/*", + "http://localhost/*" + ], + "js": [ "content/is-ghostery-browser.js" ] }, { From 882139bc58136d078689ca7f512b932ddeb41ed4 Mon Sep 17 00:00:00 2001 From: Krzysztof Jan Modras Date: Tue, 8 Dec 2020 12:47:53 +0100 Subject: [PATCH 3/4] Additional Search Engines template usage --- src/content/additional-search-engines.js | 45 ++++-------------------- 1 file changed, 7 insertions(+), 38 deletions(-) diff --git a/src/content/additional-search-engines.js b/src/content/additional-search-engines.js index c9de77b..54bdeed 100644 --- a/src/content/additional-search-engines.js +++ b/src/content/additional-search-engines.js @@ -3,35 +3,21 @@ (async function () { function cleanup() { - const $content = document.querySelector('.other-search-engines'); - const $searchEngines = document.querySelector('.searchengines'); - if ($searchEngines) { - $content.removeChild($searchEngines); - } + const $searchEngines = document.querySelector('.search-engines'); + $searchEngines.innerHTML = ''; } async function addSearchEngines() { const query = new URLSearchParams(window.location.search).get('q'); - const $content = document.querySelector('.other-search-engines'); + const $searchEngineTemplate = document.querySelector('#search-engine-template'); const searchEngines = await browser.runtime.sendMessage({ action: 'getSearchEngines', }); - const $searchEnginesWrapper = document.createElement('div'); - $searchEnginesWrapper.classList.add('searchengines'); - $searchEnginesWrapper.style.display = 'flex'; - $searchEnginesWrapper.style.flexDirection = 'row'; - $searchEnginesWrapper.style.margin = '40px 0 40px 0'; - $searchEnginesWrapper.style.flexWrap = 'wrap'; + const $searchEngines = document.querySelector('.search-engines'); searchEngines.forEach(engine => { - const $engine = document.createElement('a'); - $engine.style.display = 'flex'; - $engine.style.flexDirection = 'column'; - $engine.style.alignItems = 'center'; - $engine.style.margin = '10px 7px'; - $engine.style.textDecoration = 'none'; - $engine.style.color = 'black'; - $engine.style.cursor = 'pointer'; + const $engine = $searchEngineTemplate.content.cloneNode(true); + $engine.querySelector('.search-engine-name').innerText = engine.name; $engine.addEventListener('click', () => { browser.runtime.sendMessage({ action: 'search', @@ -42,25 +28,8 @@ }); }); - const $favicon = document.createElement('img'); - $favicon.setAttribute('src', engine.favIconUrl); - $favicon.style.height = '24px'; - $favicon.style.width = '24px'; - $favicon.style.boxShadow = 'inset 0 0 0 1px rgba(249, 249, 250, 0.2), 0 1px 8px 0 rgba(12, 12, 13, 0.2)'; - $favicon.style.transition = 'box-shadow 150ms'; - $favicon.style.borderRadius = '5px'; - $favicon.style.backgroundColor = 'white'; - $engine.appendChild($favicon); - - const $title = document.createElement('span'); - $title.innerText = engine.name; - $title.style.marginTop = '5px'; - $engine.appendChild($title); - - $searchEnginesWrapper.appendChild($engine); + $searchEngines.appendChild($engine); }); - - $content.appendChild($searchEnginesWrapper); } if (document.readyState === 'complete' || document.readyState === 'interactive') { From 10e74e6026135d34f898ba8cf889d97d7c799304 Mon Sep 17 00:00:00 2001 From: Krzysztof Jan Modras Date: Tue, 8 Dec 2020 16:14:49 +0100 Subject: [PATCH 4/4] avoid innerHTML --- src/content/additional-search-engines.js | 4 +++- src/content/top-sites.js | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/content/additional-search-engines.js b/src/content/additional-search-engines.js index 54bdeed..375f033 100644 --- a/src/content/additional-search-engines.js +++ b/src/content/additional-search-engines.js @@ -4,7 +4,9 @@ function cleanup() { const $searchEngines = document.querySelector('.search-engines'); - $searchEngines.innerHTML = ''; + while ($searchEngines.firstChild) { + $searchEngines.removeChild(searchEngines.firstChild); + } } async function addSearchEngines() { diff --git a/src/content/top-sites.js b/src/content/top-sites.js index a928cfb..39a28f3 100644 --- a/src/content/top-sites.js +++ b/src/content/top-sites.js @@ -4,7 +4,9 @@ function cleanup() { const $topsites = document.querySelector('.top-sites'); - $topsites.innerHTML = ''; + while ($topsites.firstChild) { + $topsites.removeChild(topsites.firstChild); + } } async function loadTopSites() {