From 1294fced2e45379baeb0a614de1a8b8ac6508ec4 Mon Sep 17 00:00:00 2001 From: Alexis Hancock Date: Tue, 8 Sep 2020 17:08:52 -0700 Subject: [PATCH 1/4] Feature: Ease - Copy URL Button Closes #19385 Adds feature to copy unencrypted link from EASE warning page --- chromium/pages/cancel/index.html | 1 + chromium/pages/cancel/style.css | 5 +++-- chromium/pages/cancel/ux.js | 17 +++++++++++++++++ src/chrome/locale/en/https-everywhere.dtd | 2 ++ 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/chromium/pages/cancel/index.html b/chromium/pages/cancel/index.html index 3522301bc83b..9dbca111a94a 100644 --- a/chromium/pages/cancel/index.html +++ b/chromium/pages/cancel/index.html @@ -18,6 +18,7 @@

URL:

+
diff --git a/chromium/pages/cancel/style.css b/chromium/pages/cancel/style.css index 9b91ca3218ed..00326be9f531 100644 --- a/chromium/pages/cancel/style.css +++ b/chromium/pages/cancel/style.css @@ -20,11 +20,13 @@ h1 img { } #url-paragraph { - display: block; + display: inline-flex; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } +#copy-url { +} button { background-color: #ec1e1e; @@ -33,7 +35,6 @@ button { color: #fff; cursor: pointer; padding: 0.5em 1em; - display: block; float: none; font-size: 12pt; margin: 8px 0; diff --git a/chromium/pages/cancel/ux.js b/chromium/pages/cancel/ux.js index 63ec8e4245da..f6f1243a7af6 100644 --- a/chromium/pages/cancel/ux.js +++ b/chromium/pages/cancel/ux.js @@ -45,6 +45,7 @@ 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; @@ -60,6 +61,22 @@ function displayURL() { return false; }); + // Copy URL Feature on EASE + copyButton.addEventListener("click", async event => { + copyButton.innerText = 'Copy URL'; + if (!navigator.clipboard) { + // Clipboard API not available + return + } + try { + await navigator.clipboard.writeText(originURL); + copyButton.innerText = chrome.i18n.getMessage("cancel_copied_url"); + } catch (err) { + console.log(err); + console.log('failed'); + } + }); + openHttpOnce.addEventListener("click", function() { if (confirm(chrome.i18n.getMessage("chrome_disable_on_this_site") + '?')) { sendMessage("disable_on_site_once", url.host, () => { diff --git a/src/chrome/locale/en/https-everywhere.dtd b/src/chrome/locale/en/https-everywhere.dtd index b93c702ca9ca..f69579a05df3 100644 --- a/src/chrome/locale/en/https-everywhere.dtd +++ b/src/chrome/locale/en/https-everywhere.dtd @@ -46,6 +46,8 @@ + + From c31ab4df06eaffc1416afe86106befd65f5e54c4 Mon Sep 17 00:00:00 2001 From: Alexis Hancock Date: Tue, 8 Sep 2020 17:17:15 -0700 Subject: [PATCH 2/4] minor: Remove unneeded CSS id reference --- chromium/pages/cancel/style.css | 2 -- 1 file changed, 2 deletions(-) diff --git a/chromium/pages/cancel/style.css b/chromium/pages/cancel/style.css index 00326be9f531..f28b21b4b0ab 100644 --- a/chromium/pages/cancel/style.css +++ b/chromium/pages/cancel/style.css @@ -25,8 +25,6 @@ h1 img { white-space: nowrap; text-overflow: ellipsis; } -#copy-url { -} button { background-color: #ec1e1e; From 8a55f2a7a128909ab1fbe73cc833a59e3d20e970 Mon Sep 17 00:00:00 2001 From: Alexis Hancock Date: Tue, 8 Sep 2020 17:19:47 -0700 Subject: [PATCH 3/4] Add in translation string --- chromium/pages/cancel/ux.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chromium/pages/cancel/ux.js b/chromium/pages/cancel/ux.js index f6f1243a7af6..1c5857e58567 100644 --- a/chromium/pages/cancel/ux.js +++ b/chromium/pages/cancel/ux.js @@ -63,7 +63,7 @@ function displayURL() { // Copy URL Feature on EASE copyButton.addEventListener("click", async event => { - copyButton.innerText = 'Copy URL'; + copyButton.innerText = chrome.i18n.getMessage("cancel_copy_url");; if (!navigator.clipboard) { // Clipboard API not available return From 35cb9796ef7374bc5562e0adb5d536020b7d7df3 Mon Sep 17 00:00:00 2001 From: Alexis Date: Wed, 9 Sep 2020 12:42:11 -0700 Subject: [PATCH 4/4] Update chromium/pages/cancel/ux.js Co-authored-by: pipboy96 --- chromium/pages/cancel/ux.js | 55 +++++++++++++++++++++++++++++++------ 1 file changed, 47 insertions(+), 8 deletions(-) diff --git a/chromium/pages/cancel/ux.js b/chromium/pages/cancel/ux.js index 1c5857e58567..f08595949384 100644 --- a/chromium/pages/cancel/ux.js +++ b/chromium/pages/cancel/ux.js @@ -62,18 +62,57 @@ function displayURL() { }); // Copy URL Feature on EASE - copyButton.addEventListener("click", async event => { - copyButton.innerText = chrome.i18n.getMessage("cancel_copy_url");; - if (!navigator.clipboard) { - // Clipboard API not available - return + + 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); - copyButton.innerText = chrome.i18n.getMessage("cancel_copied_url"); + return true; } catch (err) { - console.log(err); - console.log('failed'); + 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); } });