From 36f13c24fe8ea09ebbe382bab939c718dfdf69a5 Mon Sep 17 00:00:00 2001 From: Brad Werth Date: Tue, 5 Mar 2019 20:19:51 +0000 Subject: [PATCH] Bug 1490974 Part 3: Add a test that invisible text and text in option tags doesn't generate a find result. r=mikedeboer Differential Revision: https://phabricator.services.mozilla.com/D10632 --HG-- extra : moz-landing-system : lando --- toolkit/modules/tests/browser/browser.ini | 1 + ...rowser_Finder_skip_invisible_and_option.js | 41 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 toolkit/modules/tests/browser/browser_Finder_skip_invisible_and_option.js diff --git a/toolkit/modules/tests/browser/browser.ini b/toolkit/modules/tests/browser/browser.ini index 8db85782f910..6343275ac166 100644 --- a/toolkit/modules/tests/browser/browser.ini +++ b/toolkit/modules/tests/browser/browser.ini @@ -35,6 +35,7 @@ skip-if = verify && debug [browser_Finder_overflowed_textarea.js] skip-if = (verify && debug && (os == 'mac' || os == 'linux')) [browser_Finder_pointer_events_none.js] +[browser_Finder_skip_invisible_and_option.js] [browser_Finder_vertical_text.js] [browser_FinderHighlighter.js] skip-if = debug || os = "linux" diff --git a/toolkit/modules/tests/browser/browser_Finder_skip_invisible_and_option.js b/toolkit/modules/tests/browser/browser_Finder_skip_invisible_and_option.js new file mode 100644 index 000000000000..01e0a8fae9df --- /dev/null +++ b/toolkit/modules/tests/browser/browser_Finder_skip_invisible_and_option.js @@ -0,0 +1,41 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +add_task(async function test_vertical_text() { + const URI = 'a
a
'; + await BrowserTestUtils.withNewTab({ gBrowser, url: "data:text/html;charset=utf-8," + encodeURIComponent(URI) }, + async function(browser) { + let finder = browser.finder; + let listener = { + onFindResult() { + ok(false, "callback wasn't replaced"); + }, + }; + finder.addResultListener(listener); + + function waitForFind() { + return new Promise(resolve => { + listener.onFindResult = resolve; + }); + } + + // Find the target text. There should be three results. + let target = "a"; + let promiseFind = waitForFind(); + finder.fastFind(target, false, false); + let findResult = await promiseFind; + + // Check the results and repeat three times. After the final repeat, make sure we've wrapped to the beginning. + let i = 0; + for (; i < 3; i++) { + isnot(findResult.result, Ci.nsITypeAheadFind.FIND_NOTFOUND, "Should find target text '" + target + "' instance " + (i + 1) + "."); + + promiseFind = waitForFind(); + finder.findAgain(false, false, false); + findResult = await promiseFind; + } + is(findResult.result, Ci.nsITypeAheadFind.FIND_WRAPPED, "After " + (i + 1) + " searches, we should wrap to first target text."); + + finder.removeResultListener(listener); + }); +});