parent
58123210ab
commit
d886d7de29
7 changed files with 82 additions and 56 deletions
@ -0,0 +1,52 @@ |
|||||||
|
import operations from 'shared/operations'; |
||||||
|
import messages from 'shared/messages'; |
||||||
|
import * as tabs from 'background/tabs'; |
||||||
|
import * as zooms from 'background/zooms'; |
||||||
|
|
||||||
|
const sendConsoleShowCommand = (tab, command) => { |
||||||
|
return browser.tabs.sendMessage(tab.id, { |
||||||
|
type: messages.CONSOLE_SHOW_COMMAND, |
||||||
|
command, |
||||||
|
}); |
||||||
|
}; |
||||||
|
|
||||||
|
const exec = (operation, tab) => { |
||||||
|
switch (operation.type) { |
||||||
|
case operations.TAB_CLOSE: |
||||||
|
return tabs.closeTab(tab.id); |
||||||
|
case operations.TAB_REOPEN: |
||||||
|
return tabs.reopenTab(); |
||||||
|
case operations.TAB_PREV: |
||||||
|
return tabs.selectPrevTab(tab.index, operation.count); |
||||||
|
case operations.TAB_NEXT: |
||||||
|
return tabs.selectNextTab(tab.index, operation.count); |
||||||
|
case operations.TAB_RELOAD: |
||||||
|
return tabs.reload(tab, operation.cache); |
||||||
|
case operations.ZOOM_IN: |
||||||
|
return zooms.zoomIn(); |
||||||
|
case operations.ZOOM_OUT: |
||||||
|
return zooms.zoomOut(); |
||||||
|
case operations.ZOOM_NEUTRAL: |
||||||
|
return zooms.neutral(); |
||||||
|
case operations.COMMAND_SHOW: |
||||||
|
return sendConsoleShowCommand(tab, ''); |
||||||
|
case operations.COMMAND_SHOW_OPEN: |
||||||
|
if (operation.alter) { |
||||||
|
// alter url
|
||||||
|
return sendConsoleShowCommand(tab, 'open ' + tab.url); |
||||||
|
} |
||||||
|
return sendConsoleShowCommand(tab, 'open '); |
||||||
|
case operations.COMMAND_SHOW_TABOPEN: |
||||||
|
if (operation.alter) { |
||||||
|
// alter url
|
||||||
|
return sendConsoleShowCommand(tab, 'tabopen ' + tab.url); |
||||||
|
} |
||||||
|
return sendConsoleShowCommand(tab, 'tabopen '); |
||||||
|
case operations.COMMAND_SHOW_BUFFER: |
||||||
|
return sendConsoleShowCommand(tab, 'buffer '); |
||||||
|
default: |
||||||
|
return Promise.resolve(); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
export { exec }; |
@ -0,0 +1,22 @@ |
|||||||
|
import { expect } from "chai"; |
||||||
|
import actions from 'settings/actions'; |
||||||
|
import settingReducer from 'settings/reducers/setting'; |
||||||
|
|
||||||
|
describe("setting reducer", () => { |
||||||
|
it('return the initial state', () => { |
||||||
|
let state = settingReducer(undefined, {}); |
||||||
|
expect(state).to.have.deep.property('settings', {}); |
||||||
|
}); |
||||||
|
|
||||||
|
it('return next state for SETTING_SET_SETTINGS', () => { |
||||||
|
let action = { |
||||||
|
type: actions.SETTING_SET_SETTINGS, |
||||||
|
settings: { value1: 'hello', value2: 'world' }, |
||||||
|
}; |
||||||
|
let state = settingReducer(undefined, action); |
||||||
|
expect(state).to.have.deep.property('settings', { |
||||||
|
value1: 'hello', |
||||||
|
value2: 'world', |
||||||
|
}); |
||||||
|
}); |
||||||
|
}); |
Reference in new issue