From 12db4943ee54e1b0b48c806cde589254cb6fef51 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Sat, 11 Nov 2017 15:53:46 +0900 Subject: show error on find and wrap search --- src/content/actions/find.js | 47 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 37 insertions(+), 10 deletions(-) (limited to 'src/content/actions') diff --git a/src/content/actions/find.js b/src/content/actions/find.js index 2d301fb..ac1b842 100644 --- a/src/content/actions/find.js +++ b/src/content/actions/find.js @@ -6,6 +6,13 @@ // https://developer.mozilla.org/en-US/docs/Web/API/Window/find import actions from 'content/actions'; +import * as consoleFrames from '../console-frames'; + +const postPatternNotFound = (pattern) => { + return consoleFrames.postError( + window.document, + 'Pattern not found: ' + pattern); +}; const show = () => { return { type: actions.FIND_SHOW }; @@ -15,22 +22,42 @@ const hide = () => { return { type: actions.FIND_HIDE }; }; -const next = (keyword) => { - // TODO Error on no matched - window.find(keyword, false, false, true, false, true); - return { - type: actions.FIND_SET_KEYWORD, - keyword, - }; +const find = (string, backwards) => { + let caseSensitive = false; + let wrapScan = true; + + + // NOTE: aWholeWord dows not implemented, and aSearchInFrames does not work + // because of same origin policy + return window.find(string, caseSensitive, backwards, wrapScan); }; -const prev = (keyword) => { - // TODO Error on no matched - window.find(keyword, false, true, true, false, true); +const findNext = (keyword, reset, backwards) => { + if (reset) { + window.getSelection().removeAllRanges(); + } + + let found = find(keyword, backwards); + if (!found) { + window.getSelection().removeAllRanges(); + found = find(keyword, backwards); + } + if (!found) { + postPatternNotFound(keyword); + } return { type: actions.FIND_SET_KEYWORD, keyword, + found, }; }; +const next = (keyword, reset) => { + return findNext(keyword, reset, false); +}; + +const prev = (keyword, reset) => { + return findNext(keyword, reset, true); +}; + export { show, hide, next, prev }; -- cgit v1.2.3