set find keyword from background

jh-changes
Shin'ya Ueoka 7 years ago
parent 24e72aa6e0
commit 92f8365be7
  1. 25
      src/content/actions/find.js
  2. 2
      src/content/reducers/find.js
  3. 2
      test/content/reducers/find.test.js

@ -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';
@ -31,11 +32,24 @@ 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 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,
});
}
return promise.then((keyword) => {
let found = find(keyword, backwards);
if (!found) {
window.getSelection().removeAllRanges();
@ -52,14 +66,15 @@ const findNext = (keyword, reset, backwards) => {
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 };

@ -1,7 +1,7 @@
import actions from 'content/actions';
const defaultState = {
keyword: '',
keyword: null,
found: false,
};

@ -5,7 +5,7 @@ import findReducer from 'content/reducers/find';
describe("find reducer", () => {
it('return the initial state', () => {
let state = findReducer(undefined, {});
expect(state).to.have.property('keyword', '');
expect(state).to.have.property('keyword', null);
expect(state).to.have.property('found', false);
});