aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/background/index.js6
-rw-r--r--src/background/key-queue.js2
-rw-r--r--src/content/footer-line.js3
-rw-r--r--src/content/index.js44
-rw-r--r--src/shared/actions.js2
5 files changed, 39 insertions, 18 deletions
diff --git a/src/background/index.js b/src/background/index.js
index e8882c5..8544c0f 100644
--- a/src/background/index.js
+++ b/src/background/index.js
@@ -36,7 +36,11 @@ const doBackgroundAction = (sender, action) => {
}
const normalizeUrl = (string) => {
- return 'http://' + string;
+ try {
+ return new URL(string).href
+ } catch (e) {
+ return 'http://' + string;
+ }
}
const cmdEnterHandle = (request, sender) => {
diff --git a/src/background/key-queue.js b/src/background/key-queue.js
index acbb6e0..3f25791 100644
--- a/src/background/key-queue.js
+++ b/src/background/key-queue.js
@@ -3,6 +3,8 @@ import * as actions from '../shared/actions';
const DEFAULT_KEYMAP = [
{ keys: [{ code: KeyboardEvent.DOM_VK_SEMICOLON, shift: true }], action: [ actions.CMD_OPEN ]},
+ { keys: [{ code: KeyboardEvent.DOM_VK_O }], action: [ actions.CMD_TABS_OPEN, false ]},
+ { keys: [{ code: KeyboardEvent.DOM_VK_O, shift: true }], action: [ actions.CMD_TABS_OPEN, true ]},
{ keys: [{ code: KeyboardEvent.DOM_VK_K }], action: [ actions.SCROLL_UP, 1 ]},
{ keys: [{ code: KeyboardEvent.DOM_VK_J }], action: [ actions.SCROLL_DOWN, 1 ]},
{ keys: [{ code: KeyboardEvent.DOM_VK_G }, { code: KeyboardEvent.DOM_VK_G }], action: [ actions.SCROLL_TOP ]},
diff --git a/src/content/footer-line.js b/src/content/footer-line.js
index 39d8eaf..fc1dc7b 100644
--- a/src/content/footer-line.js
+++ b/src/content/footer-line.js
@@ -1,7 +1,7 @@
import './footer-line.css';
export default class FooterLine {
- constructor(doc) {
+ constructor(doc, initial = '') {
this.initUi(doc);
this.enteredCallback = () => {}
@@ -10,6 +10,7 @@ export default class FooterLine {
this.input.addEventListener('blur', this.handleBlur.bind(this));
this.input.addEventListener('keydown', this.handleKeydown.bind(this));
this.input.addEventListener('keyup', this.handleKeyup.bind(this));
+ this.input.value = initial;
}
initUi(doc) {
diff --git a/src/content/index.js b/src/content/index.js
index ed33961..17ab308 100644
--- a/src/content/index.js
+++ b/src/content/index.js
@@ -4,6 +4,25 @@ import * as actions from '../shared/actions';
var footer = null;
+const createFooterLine = (initial = '') => {
+ footer = new FooterLine(document, initial);
+ footer.onPromptChange((e) => {
+ let request = {
+ type: 'event.cmd.suggest',
+ text: e.target.value
+ };
+ browser.runtime.sendMessage(request);
+ });
+ footer.onEntered((e) => {
+ let request = {
+ type: 'event.cmd.enter',
+ text: e.target.value
+ };
+ browser.runtime.sendMessage(request);
+ });
+ footer.focus();
+}
+
const invokeEvent = (action) => {
if (typeof action === 'undefined' || action === null) {
return;
@@ -11,22 +30,15 @@ const invokeEvent = (action) => {
switch (action[0]) {
case actions.CMD_OPEN:
- footer = new FooterLine(document);
- footer.onPromptChange((e) => {
- let request = {
- type: 'event.cmd.suggest',
- text: e.target.value
- };
- browser.runtime.sendMessage(request);
- });
- footer.onEntered((e) => {
- let request = {
- type: 'event.cmd.enter',
- text: e.target.value
- };
- browser.runtime.sendMessage(request);
- });
- footer.focus();
+ createFooterLine();
+ break;
+ case actions.CMD_TABS_OPEN:
+ if (action[1] || false) {
+ // alter url
+ createFooterLine('open ' + window.location.href);
+ } else {
+ createFooterLine('open ');
+ }
break;
case actions.SCROLL_UP:
scrolls.scrollUp(window, action[1] || 1);
diff --git a/src/shared/actions.js b/src/shared/actions.js
index 4c9fec4..e1bf1e8 100644
--- a/src/shared/actions.js
+++ b/src/shared/actions.js
@@ -1,4 +1,5 @@
export const CMD_OPEN = 'cmd.open';
+export const CMD_TABS_OPEN = 'cmd.tabs.open';
export const TABS_PREV = 'tabs.prev';
export const TABS_NEXT = 'tabs.next';
export const SCROLL_UP = 'scroll.up';
@@ -13,6 +14,7 @@ const BACKGROUND_ACTION_SET = new Set([
const CONTENT_ACTION_SET = new Set([
CMD_OPEN,
+ CMD_TABS_OPEN,
SCROLL_UP,
SCROLL_DOWN,
SCROLL_TOP,