aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--background_page.html8
-rw-r--r--commands.js10
-rw-r--r--lib/clipboard.js33
-rw-r--r--manifest.json1
4 files changed, 41 insertions, 11 deletions
diff --git a/background_page.html b/background_page.html
index 06c48359..c62697b0 100644
--- a/background_page.html
+++ b/background_page.html
@@ -267,6 +267,14 @@
Clipboard.copy(request.data);
}
+ function openCopiedUrlInCurrentTab(request) {
+ openUrlInCurrentTab({ url: Clipboard.paste() });
+ }
+
+ function openCopiedUrlInNewTab(request) {
+ openUrlInNewTab({ url: Clipboard.paste() });
+ }
+
/*
* Returns the core CSS used for link hints, along with any user-provided overrides.
*/
diff --git a/commands.js b/commands.js
index d214d2bf..c961a901 100644
--- a/commands.js
+++ b/commands.js
@@ -127,6 +127,9 @@ function clearKeyMappingsAndSetDefaults() {
"yy": "copyCurrentUrl",
"yf": "linkHints.activateModeToCopyLinkUrl",
+ "p": "openCopiedUrlInCurrentTab",
+ "P": "openCopiedUrlInNewTab",
+
"K": "nextTab",
"J": "previousTab",
"gt": "nextTab",
@@ -168,9 +171,11 @@ var commandDescriptions = {
reload: ["Reload the page"],
toggleViewSource: ["View page source"],
- copyCurrentUrl: ["Copy the current URL to the clipboard"],
+ copyCurrentUrl: ["Copy the current URL to the clipboard"],
'linkHints.activateModeToCopyLinkUrl': ["Copy a link URL to the clipboard"],
+ openCopiedUrlInCurrentTab: ["Open the clipboard's URL in the current tab", { background: true }],
+ openCopiedUrlInNewTab: ["Open the clipboard's URL in a new tab", { background: true }],
enterInsertMode: ["Enter insert mode"],
@@ -220,7 +225,8 @@ var commandGroups = {
["scrollDown", "scrollUp", "scrollLeft", "scrollRight",
"scrollToTop", "scrollToBottom", "scrollToLeft", "scrollToRight", "scrollPageDown",
"scrollPageUp", "scrollFullPageUp", "scrollFullPageDown",
- "reload", "toggleViewSource", "copyCurrentUrl", "linkHints.activateModeToCopyLinkUrl", "goUp",
+ "reload", "toggleViewSource", "copyCurrentUrl", "linkHints.activateModeToCopyLinkUrl",
+ "openCopiedUrlInCurrentTab", "openCopiedUrlInNewTab", "goUp",
"enterInsertMode", "focusInput",
"linkHints.activateMode", "linkHints.activateModeToOpenInNewTab", "linkHints.activateModeWithQueue",
"activateBookmarkFindMode", "activateBookmarkFindModeToOpenInNewTab",
diff --git a/lib/clipboard.js b/lib/clipboard.js
index 1d414892..b6d3940e 100644
--- a/lib/clipboard.js
+++ b/lib/clipboard.js
@@ -1,14 +1,29 @@
var Clipboard = {
+ _createTextArea: function() {
+ var textArea = document.createElement("textarea");
+ textArea.style.position = "absolute";
+ textArea.style.left = "-100%";
+ return textArea;
+ },
+
// http://groups.google.com/group/chromium-extensions/browse_thread/thread/49027e7f3b04f68/f6ab2457dee5bf55
copy: function(data) {
- var textArea = document.createElement("textarea");
- textArea.style.position = "absolute";
- textArea.style.left = "-100%";
- textArea.value = data;
+ var textArea = this._createTextArea();
+ textArea.value = data;
+
+ document.body.appendChild(textArea);
+ textArea.select();
+ document.execCommand("Copy");
+ document.body.removeChild(textArea);
+ },
- document.body.appendChild(textArea);
- textArea.select();
- document.execCommand("Copy");
- document.body.removeChild(textArea);
- }
+ paste: function() {
+ var textArea = this._createTextArea();
+ document.body.appendChild(textArea);
+ textArea.focus();
+ document.execCommand("Paste");
+ var rv = textArea.value;
+ document.body.removeChild(textArea);
+ return rv;
+ }
};
diff --git a/manifest.json b/manifest.json
index a79fd90c..5207e1c5 100644
--- a/manifest.json
+++ b/manifest.json
@@ -10,6 +10,7 @@
"permissions": [
"tabs",
"bookmarks",
+ "clipboardRead",
"http://*/*",
"https://*/*"
],