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..f28b21b4b0ab 100644
--- a/chromium/pages/cancel/style.css
+++ b/chromium/pages/cancel/style.css
@@ -20,7 +20,7 @@ h1 img {
}
#url-paragraph {
- display: block;
+ display: inline-flex;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
@@ -33,7 +33,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..f08595949384 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,61 @@ 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") + '?')) {
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 @@
+
+