aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--QA.md2
-rw-r--r--README.md2
-rw-r--r--manifest.json3
-rw-r--r--src/content/actions/operation.js2
-rw-r--r--src/content/urls.js26
-rw-r--r--src/settings/components/form/keymaps-form.jsx2
-rw-r--r--src/shared/operations.js3
-rw-r--r--src/shared/settings/default.js2
8 files changed, 39 insertions, 3 deletions
diff --git a/QA.md b/QA.md
index 1a0839e..1c06861 100644
--- a/QA.md
+++ b/QA.md
@@ -46,6 +46,8 @@ The behaviors of the console are tested in [Console section](#consoles).
- [ ] <kbd>z</kbd><kbd>i</kbd>, <kbd>z</kbd><kbd>o</kbd>: zoom-in and zoom-out
- [ ] <kbd>z</kbd><kbd>z</kbd>: set zoom level as default
- [ ] <kbd>y</kbd>: yank current URL and show a message
+- [ ] <kbd>p</kbd>: open clipbord's URL in current tab
+- [ ] <kbd>P</kbd>: open clipbord's URL in new tab
- [ ] Toggle enabled/disabled of plugin bu <kbd>Shift</kbd>+<kbd>Esc</kbd>
### Following links
diff --git a/README.md b/README.md
index fdc48d4..a249ada 100644
--- a/README.md
+++ b/README.md
@@ -54,6 +54,8 @@ The default mappings are as follows:
- <kbd>z</kbd><kbd>i</kbd>, <kbd>z</kbd><kbd>o</kbd>: zoom-in/zoom-out
- <kbd>z</kbd><kbd>z</kbd>: Set default zoom level
- <kbd>y</kbd>: copy URL in current tab
+- <kbd>p</kbd>: open clipbord's URL in current tab
+- <kbd>P</kbd>: open clipbord's URL in new tab
- <kbd>Shift</kbd>+<kbd>Esc</kbd>: enable or disable the add-on in current tab.
### Console commands
diff --git a/manifest.json b/manifest.json
index 78479c2..02d8589 100644
--- a/manifest.json
+++ b/manifest.json
@@ -30,7 +30,8 @@
"history",
"sessions",
"storage",
- "tabs"
+ "tabs",
+ "clipboardRead"
],
"web_accessible_resources": [
"build/console.html",
diff --git a/src/content/actions/operation.js b/src/content/actions/operation.js
index 1c0a5fb..b4b2e38 100644
--- a/src/content/actions/operation.js
+++ b/src/content/actions/operation.js
@@ -63,6 +63,8 @@ const exec = (operation, repeat, settings) => {
type: messages.CONSOLE_SHOW_INFO,
text: 'Current url yanked',
});
+ case operations.URLS_PASTE:
+ return urls.paste(window, operation.newTab ? operation.newTab : false);
default:
browser.runtime.sendMessage({
type: messages.BACKGROUND_OPERATION,
diff --git a/src/content/urls.js b/src/content/urls.js
index 8f8a1ac..9b7b284 100644
--- a/src/content/urls.js
+++ b/src/content/urls.js
@@ -1,3 +1,5 @@
+import messages from 'shared/messages';
+
const yank = (win) => {
let input = win.document.createElement('input');
win.document.body.append(input);
@@ -12,4 +14,26 @@ const yank = (win) => {
input.remove();
};
-export { yank };
+const paste = (win, newTab) => {
+ let textarea = win.document.createElement('textarea');
+ win.document.body.append(textarea);
+
+ textarea.style.position = 'fixed';
+ textarea.style.top = '-100px';
+ textarea.contentEditable = 'true';
+ textarea.focus();
+
+ if (win.document.execCommand('paste')) {
+ if (/^(https?|ftp):\/\//.test(textarea.textContent)) {
+ browser.runtime.sendMessage({
+ type: messages.OPEN_URL,
+ url: textarea.textContent,
+ newTab: newTab ? newTab : false,
+ });
+ }
+ }
+
+ textarea.remove();
+};
+
+export { yank, paste };
diff --git a/src/settings/components/form/keymaps-form.jsx b/src/settings/components/form/keymaps-form.jsx
index c399570..eb77e52 100644
--- a/src/settings/components/form/keymaps-form.jsx
+++ b/src/settings/components/form/keymaps-form.jsx
@@ -52,6 +52,8 @@ const KeyMapFields = [
], [
['addon.toggle.enabled', 'Enable or disable'],
['urls.yank', 'Copy current URL'],
+ ['urls.paste?{"newTab":false}', 'Open clipboard\'s URL in current tab'],
+ ['urls.paste?{"newTab":true}', 'Open clipboard\'s URL in new tab'],
['zoom.in', 'Zoom-in'],
['zoom.out', 'Zoom-out'],
['zoom.neutral', 'Reset zoom level'],
diff --git a/src/shared/operations.js b/src/shared/operations.js
index 4c221ba..7334369 100644
--- a/src/shared/operations.js
+++ b/src/shared/operations.js
@@ -49,8 +49,9 @@ export default {
ZOOM_OUT: 'zoom.out',
ZOOM_NEUTRAL: 'zoom.neutral',
- // Url yank
+ // Url yank/paste
URLS_YANK: 'urls.yank',
+ URLS_PASTE: 'urls.paste',
// Find
FIND_START: 'find.start',
diff --git a/src/shared/settings/default.js b/src/shared/settings/default.js
index 6425354..0c3f0d9 100644
--- a/src/shared/settings/default.js
+++ b/src/shared/settings/default.js
@@ -44,6 +44,8 @@ export default {
"gu": { "type": "navigate.parent" },
"gU": { "type": "navigate.root" },
"y": { "type": "urls.yank" },
+ "p": { "type": "urls.paste", "newTab": false },
+ "P": { "type": "urls.paste", "newTab": true },
"/": { "type": "find.start" },
"n": { "type": "find.next" },
"N": { "type": "find.prev" },