From a61f37ad61da8766bf74d5a8b26e53390cb5b6c9 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Wed, 13 Sep 2017 21:55:09 +0900 Subject: content operations --- src/content/index.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'src/content') diff --git a/src/content/index.js b/src/content/index.js index 12d079f..1bba656 100644 --- a/src/content/index.js +++ b/src/content/index.js @@ -1,7 +1,11 @@ import '../console/console-frame.scss'; import * as inputActions from '../actions/input'; import * as consoleFrames from '../console/frames'; +import * as scrolls from '../content/scrolls'; +import * as histories from '../content/histories'; import actions from '../actions'; +import Follow from '../content/follow'; +import operations from '../operations'; import contentReducer from '../reducers/content'; consoleFrames.initialize(window.document); @@ -22,11 +26,37 @@ window.addEventListener("keypress", (e) => { }); }); +const execOperation = (operation) => { + switch (operation.type) { + case operations.SCROLL_LINES: + return scrolls.scrollLines(window, operation.count); + case operations.SCROLL_PAGES: + return scrolls.scrollPages(window, operation.count); + case operations.SCROLL_TOP: + return scrolls.scrollTop(window); + case operations.SCROLL_BOTTOM: + return scrolls.scrollBottom(window); + case operations.SCROLL_LEFT: + return scrolls.scrollLeft(window); + case operations.SCROLL_RIGHT: + return scrolls.scrollRight(window); + case operations.FOLLOW_START: + return new Follow(window.document, operation.newTab); + case operations.HISTORY_PREV: + return histories.prev(window); + case operations.HISTORY_NEXT: + return histories.next(window); + } +} + browser.runtime.onMessage.addListener((action) => { switch (action.type) { case actions.CONSOLE_HIDE: window.focus(); return consoleFrames.blur(window.document); + case 'require.content.operation': + execOperation(action.operation); + return Promise.resolve(); case 'vimvixen.command.enter': return browser.runtime.sendMessage({ type: 'event.cmd.enter', -- cgit v1.2.3