summaryrefslogtreecommitdiff
path: root/data/extensions/https-everywhere@eff.org/pages
diff options
context:
space:
mode:
Diffstat (limited to 'data/extensions/https-everywhere@eff.org/pages')
-rw-r--r--data/extensions/https-everywhere@eff.org/pages/base.css46
-rw-r--r--data/extensions/https-everywhere@eff.org/pages/cancel/index.html34
-rw-r--r--data/extensions/https-everywhere@eff.org/pages/cancel/style.css85
-rw-r--r--data/extensions/https-everywhere@eff.org/pages/cancel/ux.js62
-rw-r--r--data/extensions/https-everywhere@eff.org/pages/debugging-rulesets/ux.js2
-rw-r--r--data/extensions/https-everywhere@eff.org/pages/main.css21
-rw-r--r--data/extensions/https-everywhere@eff.org/pages/onboarding/style.css42
-rw-r--r--data/extensions/https-everywhere@eff.org/pages/onboarding/updated.html38
-rw-r--r--data/extensions/https-everywhere@eff.org/pages/options/index.html18
-rw-r--r--data/extensions/https-everywhere@eff.org/pages/options/style.css113
-rw-r--r--data/extensions/https-everywhere@eff.org/pages/options/ux.js119
-rw-r--r--data/extensions/https-everywhere@eff.org/pages/popup/index.html7
-rw-r--r--data/extensions/https-everywhere@eff.org/pages/popup/style.css37
-rw-r--r--data/extensions/https-everywhere@eff.org/pages/popup/ux.js16
14 files changed, 390 insertions, 250 deletions
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 @@
<!doctype html>
<html>
<head>
+ <!-- Required meta tags -->
<meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+
<title>⚠ HTTPS Everywhere ⚠</title>
- <link rel="stylesheet" href="style.css">
+ <link href="style.css" rel="stylesheet">
<link rel="icon" href="/images/icons/icon-blocking-38.png">
</head>
<body>
- <div class="content">
- <h1 id="https-everywhere">
+ <div class="banner">
<img src="/images/banner-red.svg" alt="HTTPS Everywhere">
- </h1>
-
- <p data-i18n="cancel_he_blocking_explainer"></p>
+ </div>
- <p id="url-paragraph">
- <span id="url-label">URL: </span><span id="url-value"></span>
- </p>
+ <div class="explainer" data-i18n="cancel_he_blocking_explainer"></div>
- <div class="actions">
- <button id="open-url-button" data-i18n="cancel_open_page"></button>
- <button id="http-once-button" data-i18n="cancel_http_once"></button>
+ <div class="copy_block">
+ <pre id="url-value"></pre>
+ <button id="copy-url" class="ease_button" data-i18n="cancel_copy_url"></button>
</div>
- <script src="../translation.js"></script>
- <script src="../util.js"></script>
- <script src="ux.js"></script>
- </div>
+ <div class="button_options">
+ <button id="http-once-button" class="ease_button" data-i18n="cancel_http_once"></button>
+ <button id="open-url-button" class="ease_button" data-i18n="cancel_open_page"></button>
+ </div>
+ <script src="/pages/translation.js"></script>
+ <script src="/pages/util.js"></script>
+ <script src="ux.js"></script>
</body>
</html>
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 @@
-<!doctype html>
-<html class="no-js" lang="">
-
-<head>
- <meta charset="utf-8">
- <title>What's Updated</title>
- <meta name="description" content="Updates">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <link rel="stylesheet" href="style.css">
- <link rel="icon" href="/images/icons/icon-active-38.png">
-</head>
-
-<body>
- <header>
- <img src="/images/onboarding/httpseverywhere-logo.png" alt="HTTPS Everywhere">
- </header>
- <h1 class="description" data-i18n="onboarding_intro"></h1>
- <section class="updates">
- <h1 class="updates_header" data-i18n="onboarding_header"></h1>
- <hr>
- <div class="updates_details">
- <h2 class="updates_details_list" data-i18n="onboarding_details_one"></h2>
- <img src="https://raw.githubusercontent.com/EFForg/https-everywhere/master/chromium/images/onboarding/ease_badssl.gif" alt="EASE Mode GIF Demo" aria-hidden="true"/>
- </div>
- <div class="updates_details">
- <h2 class="updates_details_list" data-i18n="onboarding_details_two"></h2>
- <img src="https://raw.githubusercontent.com/EFForg/https-everywhere/master/chromium/images/onboarding/add_disabled_site.gif" alt="Options GIF Demo" aria-hidden="true"/>
- </div>
- </section>
- <footer>
- <img class="footer_img" src="/images/eff-logo-monogram-red.png" alt="EFF Logo" aria-hidden="true"/>
- <p data-i18n="onboarding_footer"></p>
- </footer>
-
- <script src="../translation.js"></script>
-</body>
-
-</html>
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 @@
<html>
<head>
<meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=.8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
<link href="style.css" rel="stylesheet">
</head>
- <body>
- <span class="section-header-span active" data-show="general-settings-wrapper" data-i18n="options_generalSettings"></span>
- <span class="section-header-span inactive" data-show="advanced-settings-wrapper" data-i18n="options_advancedSettings"></span>
- <span class="section-header-span inactive" data-show="update-channels-wrapper" data-i18n="options_updateChannels"></span>
-
+ <body class="font">
+ <section class="header-wrapper">
+ <span class="button section-header-span active" data-show="general-settings-wrapper" data-i18n="options_generalSettings"></span>
+ <span class="button section-header-span inactive" data-show="advanced-settings-wrapper" data-i18n="options_advancedSettings"></span>
+ <span class="button section-header-span inactive" data-show="update-channels-wrapper" data-i18n="options_updateChannels"></span>
+ </section>
<div class="section-wrapper" id="general-settings-wrapper">
<div id="update-wrapper" class="settings-wrapper">
<input type="checkbox" id="autoUpdateRulesets">
@@ -22,9 +23,10 @@
<div id="disabled-rules-wrapper">
<p class="disabled-rules-wrapper-header" data-i18n="options_disabledUrlsListed"></p>
<div id="add-disabled-site-wrapper">
- <button id="add-disabled-site" data-i18n="options_addDisabledSite"></button>
+ <button class="button" id="add-disabled-site" data-i18n="options_addDisabledSite"></button>
<input type="text" id="disabled-site" />
</div>
+ <div id="add-disabled-site-invalid-host" data-i18n="options_hostNotFormattedCorrectly"></div>
</div>
</div>
@@ -49,7 +51,7 @@
<div class="clearer"></div>
<div id="update-channels-list"></div>
<div id="add-update-channel-wrapper">
- <button id="add-update-channel" data-i18n="options_addUpdateChannel"></button>
+ <button class="button" id="add-update-channel" data-i18n="options_addUpdateChannel"></button>
<input type="text" id="update-channel-name" />
</div>
</div>
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 @@
<h3 data-i18n="chrome_experimental_rules"></h3>
<h2 class="description" data-i18n="chrome_experimental_rules_description"></h2>
</section>
-
- <section id="resetButton" class="options">
- <a href="javascript:void 0" id="reset-to-defaults" class="button" data-i18n="prefs_reset_defaults"></a>
- </section>
</div>
+ </section>
+ <section id="resetButton" class="options">
+ <a href="javascript:void 0" id="reset-to-defaults" class="button" data-i18n="prefs_reset_defaults"></a>
</section>
<footer>
diff --git a/data/extensions/https-everywhere@eff.org/pages/popup/style.css b/data/extensions/https-everywhere@eff.org/pages/popup/style.css
index 38a35ac..304f2f8 100644
--- a/data/extensions/https-everywhere@eff.org/pages/popup/style.css
+++ b/data/extensions/https-everywhere@eff.org/pages/popup/style.css
@@ -1,18 +1,11 @@
-:root {
- --https-blue: #0a84ff;
- --darker-blue: #0060df;
- --text-main: #000;
- --text-secondary: #464646;
- --light-grey: #ececec;
- --space: 5px;
-}
+@import "../main.css";
body {
color: var(--text-secondary);
font-family: 'Lucida Grande', 'Segoe UI', Tahoma, 'DejaVu Sans', Arial, sans-serif;
margin: 0;
max-width: 400px;
- min-width: 380px;
+ min-width: 360px;
}
header {
@@ -80,23 +73,6 @@ footer a.button {
border-bottom: var(--light-grey) solid 1px;
}
-.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
-}
-
.see_more__prompt {
color: var(--text-main);
cursor: pointer;
@@ -306,6 +282,15 @@ input:checked+label:after {
display: block;
}
+#resetButton {
+ display: inline-flex;
+ margin: 10px;
+ width: 95%;
+}
+#reset-to-defaults {
+ width: 100%;
+}
+
/* Initially hide section (until rules get added). */
section.rules {
display: none;
diff --git a/data/extensions/https-everywhere@eff.org/pages/popup/ux.js b/data/extensions/https-everywhere@eff.org/pages/popup/ux.js
index 48de5b1..f38f225 100644
--- a/data/extensions/https-everywhere@eff.org/pages/popup/ux.js
+++ b/data/extensions/https-everywhere@eff.org/pages/popup/ux.js
@@ -153,7 +153,7 @@ function updateEnabledDisabledUI() {
e('disableButton').style.visibility = "visible";
// Hide or show the rules sections
if (item.globalEnabled) {
- document.body.className = ""
+ document.body.className = "";
e('onoffswitch_label').innerText = chrome.i18n.getMessage("menu_globalEnable");
showHttpNowhereUI();
} else {
@@ -172,7 +172,7 @@ function toggleEnabledDisabled() {
chrome.tabs.reload();
window.close();
}, 1500);
- }
+ };
getOption_('globalEnabled', true, function(item) {
setOption_('globalEnabled', !item.globalEnabled, extension_toggle_effect);
@@ -253,9 +253,9 @@ document.addEventListener("DOMContentLoaded", function () {
timestamp_span.className = "rulesets-version";
timestamp_span.innerText = `${chrome.i18n.getMessage("about_rulesets_version")} ${update_channel_name}: ${ruleset_version_string}`;
this.appendChild(timestamp_span);
- }
+ };
- sendMessage("get_ruleset_timestamps", null, timestamps => {
+ sendMessage("get_update_channel_timestamps", null, timestamps => {
let replaces = timestamps.some(([update_channel, timestamp]) =>
update_channel.replaces_default_rulesets && timestamp > 0
);
@@ -408,10 +408,10 @@ function getTab(callback) {
// to open in regular tab even if the popup is opened in incognito mode.
document.addEventListener('click', e => {
- const { target } = e
+ const { target } = e;
if (target.matches('a[target="_blank"]')) {
- chrome.tabs.create({ url: target.href })
- e.preventDefault()
+ chrome.tabs.create({ url: target.href });
+ e.preventDefault();
}
-})
+});