summaryrefslogtreecommitdiffstats
path: root/toolkit/content/tests/browser/browser_bug982298.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/content/tests/browser/browser_bug982298.js')
-rw-r--r--toolkit/content/tests/browser/browser_bug982298.js70
1 files changed, 70 insertions, 0 deletions
diff --git a/toolkit/content/tests/browser/browser_bug982298.js b/toolkit/content/tests/browser/browser_bug982298.js
new file mode 100644
index 000000000..047340c5c
--- /dev/null
+++ b/toolkit/content/tests/browser/browser_bug982298.js
@@ -0,0 +1,70 @@
+const scrollHtml =
+ "<textarea id=\"textarea1\" row=2>Firefox\n\nFirefox\n\n\n\n\n\n\n\n\n\n" +
+ "</textarea><a href=\"about:blank\">blank</a>";
+
+add_task(function*() {
+ let url = "data:text/html;base64," + btoa(scrollHtml);
+ yield BrowserTestUtils.withNewTab({gBrowser, url}, function*(browser) {
+ let awaitFindResult = new Promise(resolve => {
+ let listener = {
+ onFindResult(aData) {
+ info("got find result");
+ browser.finder.removeResultListener(listener);
+
+ ok(aData.result == Ci.nsITypeAheadFind.FIND_FOUND, "should find string");
+ resolve();
+ },
+ onCurrentSelection() {},
+ onMatchesCountResult() {}
+ };
+ info("about to add results listener, open find bar, and send 'F' string");
+ browser.finder.addResultListener(listener);
+ });
+ gFindBar.onFindCommand();
+ EventUtils.sendString("F");
+ info("added result listener and sent string 'F'");
+ yield awaitFindResult;
+
+ let awaitScrollDone = BrowserTestUtils.waitForMessage(browser.messageManager, "ScrollDone");
+ // scroll textarea to bottom
+ const scrollTest =
+ "var textarea = content.document.getElementById(\"textarea1\");" +
+ "textarea.scrollTop = textarea.scrollHeight;" +
+ "sendAsyncMessage(\"ScrollDone\", { });"
+ browser.messageManager.loadFrameScript("data:text/javascript;base64," +
+ btoa(scrollTest), false);
+ yield awaitScrollDone;
+ info("got ScrollDone event");
+ yield BrowserTestUtils.loadURI(browser, "about:blank");
+ yield BrowserTestUtils.browserLoaded(browser);
+
+ ok(browser.currentURI.spec == "about:blank", "got load event for about:blank");
+
+ let awaitFindResult2 = new Promise(resolve => {
+ let listener = {
+ onFindResult(aData) {
+ info("got find result #2");
+ browser.finder.removeResultListener(listener);
+ resolve();
+ },
+ onCurrentSelection() {},
+ onMatchesCountResult() {}
+ };
+
+ browser.finder.addResultListener(listener);
+ info("added result listener");
+ });
+ // find again needs delay for crash test
+ setTimeout(function() {
+ // ignore exception if occured
+ try {
+ info("about to send find again command");
+ gFindBar.onFindAgainCommand(false);
+ info("sent find again command");
+ } catch (e) {
+ info("got exception from onFindAgainCommand: " + e);
+ }
+ }, 0);
+ yield awaitFindResult2;
+ });
+});