Merge remote-tracking branch 'origin/master' into background-adjacent-tabs

This commit is contained in:
Shin'ya Ueoka 2018-05-01 13:51:07 +09:00
commit 4d7c24f38a
120 changed files with 14625 additions and 1641 deletions

View file

@ -5,6 +5,7 @@
// NOTE: window.find is not standard API
// https://developer.mozilla.org/en-US/docs/Web/API/Window/find
import messages from 'shared/messages';
import actions from 'content/actions';
import * as consoleFrames from '../console-frames';
@ -14,6 +15,13 @@ const postPatternNotFound = (pattern) => {
'Pattern not found: ' + pattern);
};
const postPatternFound = (pattern) => {
return consoleFrames.postInfo(
window.document,
'Pattern found: ' + pattern,
);
};
const find = (string, backwards) => {
let caseSensitive = false;
let wrapScan = true;
@ -24,32 +32,49 @@ const find = (string, backwards) => {
return window.find(string, caseSensitive, backwards, wrapScan);
};
const findNext = (keyword, reset, backwards) => {
const findNext = (currentKeyword, reset, backwards) => {
if (reset) {
window.getSelection().removeAllRanges();
}
let found = find(keyword, backwards);
if (!found) {
window.getSelection().removeAllRanges();
found = find(keyword, backwards);
let promise = Promise.resolve(currentKeyword);
if (currentKeyword) {
browser.runtime.sendMessage({
type: messages.FIND_SET_KEYWORD,
keyword: currentKeyword,
});
} else {
promise = browser.runtime.sendMessage({
type: messages.FIND_GET_KEYWORD,
});
}
if (!found) {
postPatternNotFound(keyword);
}
return {
type: actions.FIND_SET_KEYWORD,
keyword,
found,
};
return promise.then((keyword) => {
let found = find(keyword, backwards);
if (!found) {
window.getSelection().removeAllRanges();
found = find(keyword, backwards);
}
if (found) {
postPatternFound(keyword);
} else {
postPatternNotFound(keyword);
}
return {
type: actions.FIND_SET_KEYWORD,
keyword,
found,
};
});
};
const next = (keyword, reset) => {
return findNext(keyword, reset, false);
const next = (currentKeyword, reset) => {
return findNext(currentKeyword, reset, false);
};
const prev = (keyword, reset) => {
return findNext(keyword, reset, true);
const prev = (currentKeyword, reset) => {
return findNext(currentKeyword, reset, true);
};
export { next, prev };

View file

@ -2,12 +2,16 @@ import operations from 'shared/operations';
import messages from 'shared/messages';
import * as scrolls from 'content/scrolls';
import * as navigates from 'content/navigates';
import * as focuses from 'content/focuses';
import * as urls from 'content/urls';
import * as consoleFrames from 'content/console-frames';
import * as addonActions from './addon';
import * as properties from 'shared/settings/properties';
// eslint-disable-next-line complexity
const exec = (operation) => {
const exec = (operation, repeat, settings) => {
let smoothscroll = settings.properties.smoothscroll ||
properties.defaults.smoothscroll;
switch (operation.type) {
case operations.ADDON_ENABLE:
return addonActions.enable();
@ -24,19 +28,19 @@ const exec = (operation) => {
type: messages.FIND_PREV,
}), '*');
case operations.SCROLL_VERTICALLY:
return scrolls.scrollVertically(window, operation.count);
return scrolls.scrollVertically(operation.count, smoothscroll, repeat);
case operations.SCROLL_HORIZONALLY:
return scrolls.scrollHorizonally(window, operation.count);
return scrolls.scrollHorizonally(operation.count, smoothscroll, repeat);
case operations.SCROLL_PAGES:
return scrolls.scrollPages(window, operation.count);
return scrolls.scrollPages(operation.count, smoothscroll, repeat);
case operations.SCROLL_TOP:
return scrolls.scrollTop(window);
return scrolls.scrollTop(smoothscroll, repeat);
case operations.SCROLL_BOTTOM:
return scrolls.scrollBottom(window);
return scrolls.scrollBottom(smoothscroll, repeat);
case operations.SCROLL_HOME:
return scrolls.scrollHome(window);
return scrolls.scrollHome(smoothscroll, repeat);
case operations.SCROLL_END:
return scrolls.scrollEnd(window);
return scrolls.scrollEnd(smoothscroll, repeat);
case operations.FOLLOW_START:
return window.top.postMessage(JSON.stringify({
type: messages.FOLLOW_START,
@ -55,12 +59,13 @@ const exec = (operation) => {
return navigates.parent(window);
case operations.NAVIGATE_ROOT:
return navigates.root(window);
case operations.FOCUS_INPUT:
return focuses.focusInput();
case operations.URLS_YANK:
urls.yank(window);
return consoleFrames.postMessage(window.document, {
type: messages.CONSOLE_SHOW_INFO,
text: 'Current url yanked',
});
return consoleFrames.postInfo(window.document, 'Current url yanked');
case operations.URLS_PASTE:
return urls.paste(window, operation.newTab ? operation.newTab : false);
default:
browser.runtime.sendMessage({
type: messages.BACKGROUND_OPERATION,

View file

@ -1,10 +1,17 @@
import actions from 'content/actions';
import * as keyUtils from 'shared/utils/keys';
import operations from 'shared/operations';
const reservedKeymaps = {
'<Esc>': { type: operations.CANCEL },
'<C-[>': { type: operations.CANCEL },
};
const set = (value) => {
let entries = [];
if (value.keymaps) {
entries = Object.entries(value.keymaps).map((entry) => {
let keymaps = Object.assign({}, value.keymaps, reservedKeymaps);
entries = Object.entries(keymaps).map((entry) => {
return [
keyUtils.fromMapKeys(entry[0]),
entry[1],