Merge pull request #300 from usk/feature/open-clipboard's-url

open clipboard's URL in current/new tab
jh-changes
Shin'ya Ueoka 7 years ago committed by GitHub
commit be1f8e4d71
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      QA.md
  2. 2
      README.md
  3. 3
      manifest.json
  4. 2
      src/content/actions/operation.js
  5. 26
      src/content/urls.js
  6. 2
      src/settings/components/form/keymaps-form.jsx
  7. 3
      src/shared/operations.js
  8. 2
      src/shared/settings/default.js

@ -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>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>z</kbd><kbd>z</kbd>: set zoom level as default
- [ ] <kbd>y</kbd>: yank current URL and show a message - [ ] <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> - [ ] Toggle enabled/disabled of plugin bu <kbd>Shift</kbd>+<kbd>Esc</kbd>
### Following links ### Following links

@ -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>i</kbd>, <kbd>z</kbd><kbd>o</kbd>: zoom-in/zoom-out
- <kbd>z</kbd><kbd>z</kbd>: Set default zoom level - <kbd>z</kbd><kbd>z</kbd>: Set default zoom level
- <kbd>y</kbd>: copy URL in current tab - <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. - <kbd>Shift</kbd>+<kbd>Esc</kbd>: enable or disable the add-on in current tab.
### Console commands ### Console commands

@ -30,7 +30,8 @@
"history", "history",
"sessions", "sessions",
"storage", "storage",
"tabs" "tabs",
"clipboardRead"
], ],
"web_accessible_resources": [ "web_accessible_resources": [
"build/console.html", "build/console.html",

@ -63,6 +63,8 @@ const exec = (operation, repeat, settings) => {
type: messages.CONSOLE_SHOW_INFO, type: messages.CONSOLE_SHOW_INFO,
text: 'Current url yanked', text: 'Current url yanked',
}); });
case operations.URLS_PASTE:
return urls.paste(window, operation.newTab ? operation.newTab : false);
default: default:
browser.runtime.sendMessage({ browser.runtime.sendMessage({
type: messages.BACKGROUND_OPERATION, type: messages.BACKGROUND_OPERATION,

@ -1,3 +1,5 @@
import messages from 'shared/messages';
const yank = (win) => { const yank = (win) => {
let input = win.document.createElement('input'); let input = win.document.createElement('input');
win.document.body.append(input); win.document.body.append(input);
@ -12,4 +14,26 @@ const yank = (win) => {
input.remove(); 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 };

@ -52,6 +52,8 @@ const KeyMapFields = [
], [ ], [
['addon.toggle.enabled', 'Enable or disable'], ['addon.toggle.enabled', 'Enable or disable'],
['urls.yank', 'Copy current URL'], ['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.in', 'Zoom-in'],
['zoom.out', 'Zoom-out'], ['zoom.out', 'Zoom-out'],
['zoom.neutral', 'Reset zoom level'], ['zoom.neutral', 'Reset zoom level'],

@ -49,8 +49,9 @@ export default {
ZOOM_OUT: 'zoom.out', ZOOM_OUT: 'zoom.out',
ZOOM_NEUTRAL: 'zoom.neutral', ZOOM_NEUTRAL: 'zoom.neutral',
// Url yank // Url yank/paste
URLS_YANK: 'urls.yank', URLS_YANK: 'urls.yank',
URLS_PASTE: 'urls.paste',
// Find // Find
FIND_START: 'find.start', FIND_START: 'find.start',

@ -44,6 +44,8 @@ export default {
"gu": { "type": "navigate.parent" }, "gu": { "type": "navigate.parent" },
"gU": { "type": "navigate.root" }, "gU": { "type": "navigate.root" },
"y": { "type": "urls.yank" }, "y": { "type": "urls.yank" },
"p": { "type": "urls.paste", "newTab": false },
"P": { "type": "urls.paste", "newTab": true },
"/": { "type": "find.start" }, "/": { "type": "find.start" },
"n": { "type": "find.next" }, "n": { "type": "find.next" },
"N": { "type": "find.prev" }, "N": { "type": "find.prev" },