From 5da28b0f8771834ae208d61431d632875e9f8e7d Mon Sep 17 00:00:00 2001 From: Ruben Rodriguez Date: Thu, 8 Sep 2022 20:18:54 -0400 Subject: Updated extensions: * Upgraded Privacy Redirect to 1.1.49 and configured to use the 10 most reliable invidious instances * Removed ViewTube * Added torproxy@icecat.gnu based on 'Proxy toggle' extension * Added jShelter 0.11.1 * Upgraded LibreJS to 7.21.0 * Upgraded HTTPS Everywhere to 2021.7.13 * Upgraded SubmitMe to 1.9 --- .../https-everywhere@eff.org/pages/base.css | 46 ++++++++ .../pages/cancel/index.html | 34 +++--- .../pages/cancel/style.css | 85 ++++++++++++--- .../https-everywhere@eff.org/pages/cancel/ux.js | 62 ++++++++++- .../pages/debugging-rulesets/ux.js | 2 +- .../https-everywhere@eff.org/pages/main.css | 21 ++++ .../pages/onboarding/style.css | 42 -------- .../pages/onboarding/updated.html | 38 ------- .../pages/options/index.html | 18 ++-- .../pages/options/style.css | 113 +++++++++++-------- .../https-everywhere@eff.org/pages/options/ux.js | 119 ++++++++++++++------- .../pages/popup/index.html | 7 +- .../https-everywhere@eff.org/pages/popup/style.css | 37 ++----- .../https-everywhere@eff.org/pages/popup/ux.js | 16 +-- 14 files changed, 390 insertions(+), 250 deletions(-) create mode 100644 data/extensions/https-everywhere@eff.org/pages/base.css create mode 100644 data/extensions/https-everywhere@eff.org/pages/main.css delete mode 100644 data/extensions/https-everywhere@eff.org/pages/onboarding/style.css delete mode 100644 data/extensions/https-everywhere@eff.org/pages/onboarding/updated.html (limited to 'data/extensions/https-everywhere@eff.org/pages') diff --git a/data/extensions/https-everywhere@eff.org/pages/base.css b/data/extensions/https-everywhere@eff.org/pages/base.css new file mode 100644 index 0000000..92adbf8 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/pages/base.css @@ -0,0 +1,46 @@ +:root { + --https-blue: #0a84ff; + --darker-blue: #0060df; + --text-main: #000; + --text-secondary: #464646; + --light-grey: #ececec; + --space: 5px; + --font: 'Lucida Grande', 'Segoe UI', Tahoma, 'DejaVu Sans', Arial, sans-serif; + --code-font: 'VeraMono'; +} + +/*-------------------------------------------------------------- +# Layout +--------------------------------------------------------------*/ +.grid { + display: grid; + grid-template-columns: 1fr 1fr 1fr; + row-gap: 16px; +} + +/*-------------------------------------------------------------- +# Typography +--------------------------------------------------------------*/ +.font { + font-family: var(--font); +} + +/*-------------------------------------------------------------- +# Elements +--------------------------------------------------------------*/ +.button { + border: var(--https-blue) solid 1px; + color: var(--text-main); + display: block; + font-size: 12px; + font-weight: bold; + margin: var(--space) auto; + padding: 10px; + text-align: center; + text-decoration: none; +} + +.button:hover { + background-color: var(--darker-blue); + color: #fff; +} diff --git a/data/extensions/https-everywhere@eff.org/pages/cancel/index.html b/data/extensions/https-everywhere@eff.org/pages/cancel/index.html index 3522301..ec25184 100644 --- a/data/extensions/https-everywhere@eff.org/pages/cancel/index.html +++ b/data/extensions/https-everywhere@eff.org/pages/cancel/index.html @@ -1,32 +1,32 @@ + - + + ⚠ HTTPS Everywhere ⚠ - + -
-

+

- -

+
-

- URL: -

+
-
- - +
+

+        
       
- - - -
+
+ + +
+ + + diff --git a/data/extensions/https-everywhere@eff.org/pages/cancel/style.css b/data/extensions/https-everywhere@eff.org/pages/cancel/style.css index 9b91ca3..aeba151 100644 --- a/data/extensions/https-everywhere@eff.org/pages/cancel/style.css +++ b/data/extensions/https-everywhere@eff.org/pages/cancel/style.css @@ -1,13 +1,33 @@ +@import "../main.css"; + body { - margin-top: 6em; + display: grid; + grid-template-columns: 1fr 1fr 1fr; + margin: 2% auto; font-size: 12pt; font-family: sans-serif; line-height: 150%; + row-gap: 16px; } -.content { - margin: auto; - max-width: 600px; +/*--------- +# GRID LAYOUT +---------*/ +.banner { + grid-column: 2; + grid-row: 1; +} +.explainer { + grid-column: 2; + grid-row: 2; +} +.copy_block { + grid-column: 2; + grid-row: 3; +} +.button_options { + grid-column: 2; + grid-row: 4; } h1 { @@ -20,37 +40,70 @@ h1 img { } #url-paragraph { - display: block; + display: inline-flex; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } -button { +.ease_button { background-color: #ec1e1e; border: 1px solid #ec1e1e; border-radius: 4px; color: #fff; cursor: pointer; padding: 0.5em 1em; - display: block; float: none; font-size: 12pt; + font-weight: normal; margin: 8px 0; line-height: 150%; } -button:hover { - background-color: #fff; - color: #ec1e1e; -} - button:last-child { margin: 0; } -@media screen and (max-width: 550px) { - button { +#url-value{ + float: left; + font-weight: bold; + margin: 2% 2% 0 0; +} +#copy-url, #open-url-button{ + background-color: var(--light-grey) !important; + border: 1px solid var(--text-secondary) !important; +} +#copy-url { + color: var(--text-secondary) !important; + font-size: 14px; +} +#open-url-button { + color: #666666 !important; +} +#copy-url:hover, #open-url-button:hover { + background-color: var(--text-secondary) !important; + border: 1px solid var(--text-secondary) !important; + color: var(--light-grey) !important; +} + +@media screen and (max-width: 800px) { + body { + grid-template-columns: 1fr; + margin: 5%; + } + .banner { + grid-row: 1; + } + .explainer { + grid-row: 2; + } + .copy_block { + grid-row: 3; + } + .button_options { + grid-row: 4; + } + .ease_button { width: 100%; margin: 8px 0; } @@ -66,11 +119,11 @@ button:last-child { color: #45a1ff; } - button { + .ease_button { color: #202023; } - button:hover { + .ease_button:hover { background-color: #202023; border-color: #ec1e1e; } diff --git a/data/extensions/https-everywhere@eff.org/pages/cancel/ux.js b/data/extensions/https-everywhere@eff.org/pages/cancel/ux.js index 7e6199a..259d602 100644 --- a/data/extensions/https-everywhere@eff.org/pages/cancel/ux.js +++ b/data/extensions/https-everywhere@eff.org/pages/cancel/ux.js @@ -6,7 +6,7 @@ let observer; document.addEventListener("DOMContentLoaded", () => { const explainer = document.querySelector("[data-i18n=cancel_he_blocking_explainer]"); observer = new MutationObserver(() => { - replaceLink(explainer) + replaceLink(explainer); }); if (explainer.innerText.length > 0) { replaceLink(explainer); @@ -45,13 +45,14 @@ function displayURL() { const originURLLink = document.getElementById('url-value'); const openURLButton = document.getElementById('open-url-button'); const openHttpOnce = document.getElementById('http-once-button'); + const copyButton = document.getElementById('copy-url'); const url = new URL(originURL); originURLLink.innerText = originURL; originURLLink.href = originURL; openURLButton.addEventListener("click", function() { - if (confirm(chrome.i18n.getMessage("chrome_disable_on_this_site") + '?')) { + if (confirm(chrome.i18n.getMessage("cancel_open_page") + '?')) { sendMessage("disable_on_site", url.host, () => { window.location = originURL; }); @@ -60,8 +61,63 @@ function displayURL() { return false; }); + // Copy URL Feature on EASE + + function copyLinkAlternate() { + let isSuccessful = false; + + const sel = window.getSelection(); + + try { + sel.removeAllRanges(); + + const range = document.createRange(); + range.selectNode(originURLLink); + + sel.addRange(range); + + isSuccessful = document.execCommand("copy"); + + sel.removeAllRanges(); + + return isSuccessful; + } catch (err) { + console.error(err); + + sel.removeAllRanges(); + + return false; + } + } + + async function copyLink() { + try { + await navigator.clipboard.writeText(originURL); + return true; + } catch (err) { + return copyLinkAlternate(); + } + } + + let restoreTimeout = null; + + copyButton.addEventListener("click", async () => { + if (await copyLink()) { + copyButton.innerText = chrome.i18n.getMessage("cancel_copied_url"); + + if (restoreTimeout !== null) { + clearTimeout(restoreTimeout); + } + + restoreTimeout = setTimeout(() => { + copyButton.innerText = chrome.i18n.getMessage("cancel_copy_url"); + restoreTimeout = null; + }, 1500); + } + }); + openHttpOnce.addEventListener("click", function() { - if (confirm(chrome.i18n.getMessage("chrome_disable_on_this_site") + '?')) { + if (confirm(chrome.i18n.getMessage("cancel_http_once") + '?')) { sendMessage("disable_on_site_once", url.host, () => { window.location = originURL; }); diff --git a/data/extensions/https-everywhere@eff.org/pages/debugging-rulesets/ux.js b/data/extensions/https-everywhere@eff.org/pages/debugging-rulesets/ux.js index 49b9c7e..0df93d8 100644 --- a/data/extensions/https-everywhere@eff.org/pages/debugging-rulesets/ux.js +++ b/data/extensions/https-everywhere@eff.org/pages/debugging-rulesets/ux.js @@ -35,7 +35,7 @@ document.getElementById("save-button").addEventListener("click", e => { sendMessage("set_option", { debugging_rulesets: cm.getValue() }, () => { savedTextElement.style.display = "block"; setTimeout(() => { - savedTextElement.style.display = "none" + savedTextElement.style.display = "none"; }, 1000); valueHasChanged = false; diff --git a/data/extensions/https-everywhere@eff.org/pages/main.css b/data/extensions/https-everywhere@eff.org/pages/main.css new file mode 100644 index 0000000..2772c46 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/pages/main.css @@ -0,0 +1,21 @@ +/*-------------------------------------------------------------- +>>> TABLE OF CONTENTS: +---------------------------------------------------------------- +# Base + - Layout + - Typography + - Elements + - Links +# Utilities + - Accessibility + +--------------------------------------------------------------*/ + +/*-------------------------------------------------------------- +# Base +--------------------------------------------------------------*/ +@import "base.css"; + +/* Utilities - TBA +--------------------------------------------- */ + diff --git a/data/extensions/https-everywhere@eff.org/pages/onboarding/style.css b/data/extensions/https-everywhere@eff.org/pages/onboarding/style.css deleted file mode 100644 index b270b2e..0000000 --- a/data/extensions/https-everywhere@eff.org/pages/onboarding/style.css +++ /dev/null @@ -1,42 +0,0 @@ -:root { - --https-blue: #0a84ff; - --darker-blue: #0060df; - --text-main: #000; - --text-secondary: #464646; - --light-grey: #ececec; -} - -body { - align-content: center; - background-color: var(--light-grey); - color: var(--text-main); - display: flex; - flex-direction: column; - flex-wrap: wrap; - font-family: 'Lucida Grande', 'Segoe UI', Tahoma, 'DejaVu Sans', Arial, sans-serif; - justify-content: center; -} - -img { - width: 100%; -} -img.footer_img { - width: 15%; -} - -h1.description { - text-align: center; -} - -.updates_header { - text-align: center; -} -.updates_details { - margin: 18px; - padding: 1%; -} - -footer { - margin: 18px 0; - text-align: center; -} \ No newline at end of file diff --git a/data/extensions/https-everywhere@eff.org/pages/onboarding/updated.html b/data/extensions/https-everywhere@eff.org/pages/onboarding/updated.html deleted file mode 100644 index fc730a3..0000000 --- a/data/extensions/https-everywhere@eff.org/pages/onboarding/updated.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - What's Updated - - - - - - - -
- HTTPS Everywhere -
-

-
-

-
-
-

- -
-
-

- -
-
- - - - - - diff --git a/data/extensions/https-everywhere@eff.org/pages/options/index.html b/data/extensions/https-everywhere@eff.org/pages/options/index.html index 6d82a18..b6bdc33 100644 --- a/data/extensions/https-everywhere@eff.org/pages/options/index.html +++ b/data/extensions/https-everywhere@eff.org/pages/options/index.html @@ -2,15 +2,16 @@ - + - - - - - + +
+ + + +
@@ -22,9 +23,10 @@

- +
+
@@ -49,7 +51,7 @@
- +
diff --git a/data/extensions/https-everywhere@eff.org/pages/options/style.css b/data/extensions/https-everywhere@eff.org/pages/options/style.css index d0f4324..032a7ba 100644 --- a/data/extensions/https-everywhere@eff.org/pages/options/style.css +++ b/data/extensions/https-everywhere@eff.org/pages/options/style.css @@ -1,35 +1,30 @@ +@import "../main.css"; + body{ - min-width: 500px; - min-height: 250px; - display: block; + display: grid; + grid-template-columns: 1fr 1fr 1fr; } -@media (prefers-color-scheme: dark) { - body { - background-color: #202023; - color: #f9f9fa; - } - - .section-header-span, div#update-channels-warning { - color: #000; - } - - textarea, input[type=text] { - background-color: #202023; - color: #f9f9fa; - } +/*--------- +# GRID LAYOUT +---------*/ +.header-wrapper, .section-wrapper { + margin: auto; } - -a.settings{ - background-color: #1c87c9; - border: none; - color: white; - padding: 20px 34px; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 20px; - margin: 4px 2px; +.header-wrapper { + display: inline-flex; + grid-column: 2; + grid-row: 1; +} +.section-wrapper { + grid-column: 2; + grid-row: 2; +} +#add-disabled-site-wrapper { + float: left; +} +#add-update-channel-wrapper { + display: inline-block; } .settings-wrapper{ @@ -63,6 +58,11 @@ a.settings{ } /** Disabled Sites Option**/ +#add-disabled-site-invalid-host { + font-weight: bold; + color: red; + display: none; +} .disabled-rules-wrapper-header { font-weight: bold; padding-left: 5px; @@ -71,7 +71,7 @@ img.remove{ cursor: pointer; float: right; height: 15px; - margin: 10px 0 0 8%; + margin-top: -34px; width: 15px; } .disabled-rule-list-item:last-of-type { @@ -79,12 +79,11 @@ img.remove{ } .disabled-rule-list-item { border-bottom: 1px solid #ccc; - display: inline-flex; - margin-left: 5%; - width: 80%; + clear: both; } .disabled-rule-list-item p { - width: 100%; + width: 80%; + word-wrap: anywhere; } .section-header{ @@ -101,28 +100,30 @@ img.remove{ } .section-header-span{ - font-size: 15px; - border: 0px; - border-radius: 13px; + cursor: pointer; padding: 8px; - margin-right: 10px; + margin-left: 0 !important; + margin-right: var(--space) !important; display: inline-block; } .section-header-span.active{ - background-color: #66ccff; + background-color: var(--darker-blue); + color: #FFF; } - .section-header-span.inactive{ - background-color: #ddd; + background-color: var(--light-grey); +} +.section-header-span.inactive:hover { + background-color: var(--darker-blue); } .update-channel{ - margin-top: 30px; - margin-bottom: 30px; border: 1px solid grey; border-radius: 20px; - width: 498px; + margin-top: 30px; + margin-bottom: 30px; + padding: 6px; } .update-channel-name{ @@ -146,8 +147,9 @@ img.remove{ } textarea.update-channel-jwk { - width: 380px; + width: 367px; height: 250px; + resize: vertical; } input.update-channel-path-prefix, input.update-channel-scope { @@ -166,8 +168,9 @@ div.update-channel-row-scope { button#add-update-channel, button#add-disabled-site { float: right; + height: 30px; margin: 0px 10px 10px 10px; - border-radius: 7px; + padding: 6px; } input#update-channel-name, input#disabled-site { @@ -218,8 +221,8 @@ div#update-channels-last-checked { font-size: 10px; } -#update-channels-wrapper{ - width: 500px; +#update-channels-list { + display: inline-block; } @keyframes flash { @@ -243,3 +246,19 @@ div#update-channels-last-checked { .flash { animation: flash 1s ease-out; } + +@media (prefers-color-scheme: dark) { + body { + background-color: #202023; + color: #f9f9fa; + } + + .section-header-span, div#update-channels-warning { + color: #000; + } + + textarea, input[type=text] { + background-color: #202023; + color: #f9f9fa; + } +} diff --git a/data/extensions/https-everywhere@eff.org/pages/options/ux.js b/data/extensions/https-everywhere@eff.org/pages/options/ux.js index fbfc113..02ad39d 100644 --- a/data/extensions/https-everywhere@eff.org/pages/options/ux.js +++ b/data/extensions/https-everywhere@eff.org/pages/options/ux.js @@ -1,47 +1,33 @@ /* global sendMessage */ /* global getOption_ */ /* global e */ -/* global hide */ +/* global show, hide */ "use strict"; -if (navigator.userAgent.includes("Android")) { - const url = new URL(window.location.href); - if (!url.searchParams.get('redirected')) { - url.searchParams.set('redirected', true); - document.body.innerText = ""; - let link = document.createElement("a"); - link.href = url.href; - link.target = "_blank"; - link.className = "settings"; - link.innerText = chrome.i18n.getMessage("options_settings"); - document.body.appendChild(link); - } -} - document.addEventListener("DOMContentLoaded", () => { - const secretArea = document.getElementById('secretArea') + const secretArea = document.getElementById('secretArea'); const onKeyDownHandler = evt => { if (evt.ctrlKey && evt.key === 'z') { - secretArea.classList.remove('hidden') - secretArea.classList.add('flash') + secretArea.classList.remove('hidden'); + secretArea.classList.add('flash'); - sendMessage('set_option', { developerMode: true }) + sendMessage('set_option', { developerMode: true }); - document.removeEventListener('keydown', onKeyDownHandler) + document.removeEventListener('keydown', onKeyDownHandler); - evt.preventDefault() + evt.preventDefault(); } - } + }; sendMessage('get_option', { developerMode: false }, item => { if (item.developerMode) { - secretArea.classList.remove('hidden') + secretArea.classList.remove('hidden'); } else { - document.addEventListener('keydown', onKeyDownHandler) + document.addEventListener('keydown', onKeyDownHandler); } - }) + }); const autoUpdateRulesets = document.getElementById("autoUpdateRulesets"); const enableMixedRulesets = document.getElementById("enableMixedRulesets"); @@ -91,7 +77,7 @@ document.addEventListener("DOMContentLoaded", () => { }); }); - function create_update_channel_element(update_channel, last_updated, pinned) { + function create_update_channel_element(update_channel, last_updated, locked) { let ruleset_version_string; if(last_updated) { @@ -113,6 +99,33 @@ document.addEventListener("DOMContentLoaded", () => { update_channel_last_updated.innerText = chrome.i18n.getMessage("options_storedRulesetsVersion") + ruleset_version_string; update_channel_name.appendChild(update_channel_last_updated); + const update_channel_row_format = document.createElement('div'); + update_channel_row_format.className = "update-channel-row-format"; + update_channel_div.appendChild(update_channel_row_format); + const update_channel_format_column_left = document.createElement('div'); + update_channel_format_column_left.className = "update-channel-column-left"; + update_channel_format_column_left.innerText = "Format:"; + update_channel_row_format.appendChild(update_channel_format_column_left); + const update_channel_format_column_right = document.createElement('div'); + update_channel_format_column_right.className = "update-channel-column-right"; + update_channel_row_format.appendChild(update_channel_format_column_right); + const update_channel_format = document.createElement('select'); + update_channel_format.className = "update-channel-format"; + update_channel_format.setAttribute("data-name", update_channel.name); + update_channel_format.disabled = locked; + update_channel_format_column_right.appendChild(update_channel_format); + const update_channel_format_option_ruleset = document.createElement('option'); + update_channel_format_option_ruleset.value = "ruleset"; + update_channel_format_option_ruleset.innerText = "ruleset"; + update_channel_format_option_ruleset.defaultSelected = true; + update_channel_format_option_ruleset.selected = (update_channel.format == "ruleset"); + update_channel_format.appendChild(update_channel_format_option_ruleset); + const update_channel_format_option_bloom = document.createElement('option'); + update_channel_format_option_bloom.value = "bloom"; + update_channel_format_option_bloom.innerText = "bloom"; + update_channel_format_option_bloom.selected = (update_channel.format == "bloom"); + update_channel_format.appendChild(update_channel_format_option_bloom); + const update_channel_row_jwk = document.createElement('div'); update_channel_row_jwk.className = "update-channel-row-jwk"; update_channel_div.appendChild(update_channel_row_jwk); @@ -126,7 +139,7 @@ document.addEventListener("DOMContentLoaded", () => { const update_channel_jwk = document.createElement('textarea'); update_channel_jwk.className = "update-channel-jwk"; update_channel_jwk.setAttribute("data-name", update_channel.name); - update_channel_jwk.disabled = pinned; + update_channel_jwk.disabled = locked; update_channel_jwk.innerText = JSON.stringify(update_channel.jwk); update_channel_jwk_column_right.appendChild(update_channel_jwk); @@ -144,7 +157,7 @@ document.addEventListener("DOMContentLoaded", () => { update_channel_path_prefix.setAttribute("type", "text"); update_channel_path_prefix.className = "update-channel-path-prefix"; update_channel_path_prefix.setAttribute("data-name", update_channel.name); - update_channel_path_prefix.disabled = pinned; + update_channel_path_prefix.disabled = locked; update_channel_path_prefix.value = update_channel.update_path_prefix; update_channel_path_prefix_column_right.appendChild(update_channel_path_prefix); @@ -153,6 +166,9 @@ document.addEventListener("DOMContentLoaded", () => { update_channel_div.appendChild(clearer); const update_channel_row_scope = document.createElement('div'); + if(update_channel.format == "bloom") { + update_channel_row_scope.style.display = "none"; + } update_channel_row_scope.className = "update-channel-row-scope"; update_channel_div.appendChild(update_channel_row_scope); const update_channel_scope_column_left = document.createElement('div'); @@ -166,7 +182,7 @@ document.addEventListener("DOMContentLoaded", () => { update_channel_scope.setAttribute("type", "text"); update_channel_scope.className = "update-channel-scope"; update_channel_scope.setAttribute("data-name", update_channel.name); - update_channel_scope.disabled = pinned; + update_channel_scope.disabled = locked; update_channel_scope.value = update_channel.scope; update_channel_scope_column_right.appendChild(update_channel_scope); @@ -183,13 +199,13 @@ document.addEventListener("DOMContentLoaded", () => { const update_channel_update = document.createElement('button'); update_channel_update.className = "update-channel-update"; update_channel_update.setAttribute("data-name", update_channel.name); - update_channel_update.disabled = pinned; + update_channel_update.disabled = locked; update_channel_update.innerText = chrome.i18n.getMessage("options_update"); update_channel_controls_column_right.appendChild(update_channel_update); const update_channel_delete = document.createElement('button'); update_channel_delete.className = "update-channel-update"; update_channel_delete.setAttribute("data-name", update_channel.name); - update_channel_delete.disabled = pinned; + update_channel_delete.disabled = locked; update_channel_delete.innerText = chrome.i18n.getMessage("options_delete"); update_channel_controls_column_right.appendChild(update_channel_delete); @@ -197,6 +213,13 @@ document.addEventListener("DOMContentLoaded", () => { clearer.className = "clearer"; update_channel_div.appendChild(clearer); + update_channel_format.addEventListener("change", () => { + if(update_channel_format.value == "bloom") { + update_channel_row_scope.style.display = "none"; + } else { + update_channel_row_scope.style.display = "block"; + } + }); update_channel_delete.addEventListener("click", () => { sendMessage("delete_update_channel", update_channel.name, () => { render_update_channels(); @@ -206,6 +229,7 @@ document.addEventListener("DOMContentLoaded", () => { update_channel_update.addEventListener("click", () => { sendMessage("update_update_channel", { name: update_channel.name, + format: update_channel_format.value, jwk: JSON.parse(update_channel_jwk.value), update_path_prefix: update_channel_path_prefix.value, scope: update_channel_scope.value @@ -229,7 +253,7 @@ document.addEventListener("DOMContentLoaded", () => { create_update_channel_element( update_channel, item.last_updated[update_channel.name], - true + true, ) ); @@ -242,7 +266,7 @@ document.addEventListener("DOMContentLoaded", () => { create_update_channel_element( update_channel, item.last_updated[update_channel.name], - false + update_channel.locked === true, ) ); } @@ -295,7 +319,7 @@ document.addEventListener("DOMContentLoaded", () => { sendMessage("remove_rule", { ruleset: userRule, src: 'options' }); }); } - }) + }); // HTTPS Everywhere Sites Disabled section in General Settings module getOption_("disabledList", [], function(item) { @@ -329,14 +353,29 @@ document.addEventListener("DOMContentLoaded", () => { const add_disabled_site = document.getElementById("add-disabled-site"); const disabled_site_input = document.getElementById("disabled-site"); + const add_disabled_site_invalid_host = document.getElementById('add-disabled-site-invalid-host'); disabled_site_input.setAttribute("placeholder", chrome.i18n.getMessage("options_enterDisabledSite")); - + function isValidHost(host) { + try { + new URL(`http://${host}/`); + return true; + } catch { + return false; + } + } add_disabled_site.addEventListener("click", function() { - sendMessage("disable_on_site", disabled_site_input.value, okay => { - if (okay) { - chrome.tabs.reload(); - } - }); + const host = disabled_site_input.value; + + if (isValidHost(host)) { + hide(add_disabled_site_invalid_host); + sendMessage("disable_on_site", disabled_site_input.value, okay => { + if (okay) { + chrome.tabs.reload(); + } + }); + } else { + show(add_disabled_site_invalid_host); + } }); add_update_channel.addEventListener("click", () => { diff --git a/data/extensions/https-everywhere@eff.org/pages/popup/index.html b/data/extensions/https-everywhere@eff.org/pages/popup/index.html index 9116280..d9441f2 100644 --- a/data/extensions/https-everywhere@eff.org/pages/popup/index.html +++ b/data/extensions/https-everywhere@eff.org/pages/popup/index.html @@ -88,12 +88,11 @@

- -
- -
+ +
+