diff -r 000000000000 -r 6474c204b198 toolkit/content/tests/browser/browser_bug982298.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/toolkit/content/tests/browser/browser_bug982298.js Wed Dec 31 06:09:35 2014 +0100
@@ -0,0 +1,87 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+Components.utils.import("resource://gre/modules/Timer.jsm");
+
+const Ci = Components.interfaces;
+
+let tab;
+let browser;
+
+const scrollHtml =
+ "blank";
+
+const scrollTest =
+ "var textarea = content.document.getElementById(\"textarea1\");" +
+ "textarea.scrollTop = textarea.scrollHeight;" +
+ "sendAsyncMessage(\"ScrollDone\", { });"
+
+function test()
+{
+ waitForExplicitFinish();
+
+ tab = gBrowser.addTab("data:text/html;base64," +
+ btoa(scrollHtml));
+ browser = gBrowser.getBrowserForTab(tab);
+ gBrowser.selectedTab = tab;
+
+ browser.addEventListener("load", find, true);
+}
+
+function find()
+{
+ browser.removeEventListener("load", find, true);
+ let listener = {
+ onFindResult: function(aData) {
+ browser.finder.removeResultListener(listener);
+
+ ok(aData.result == Ci.nsITypeAheadFind.FIND_FOUND, "should find string");
+
+ browser.messageManager.addMessageListener("ScrollDone",
+ function f(aMsg) {
+ browser.messageManager.removeMessageListener("ScrollDone", f);
+ browser.loadURI("about:blank");
+ browser.addEventListener("load", findAgain, true);
+ });
+
+ // scroll textarea to bottom
+ browser.messageManager.loadFrameScript("data:text/javascript;base64," +
+ btoa(scrollTest), false);
+
+ },
+ };
+ browser.finder.addResultListener(listener);
+ gFindBar.onFindCommand();
+ EventUtils.sendString("F");
+}
+
+function findAgain()
+{
+ browser.removeEventListener("load", findAgain, true);
+
+ ok(browser.currentURI.spec == "about:blank", "cannot navigate to about:blank");
+ let listener = {
+ onFindResult: function(aData) {
+ browser.finder.removeResultListener(listener);
+ cleanup();
+ },
+ };
+
+ browser.finder.addResultListener(listener);
+ // find again needs delay for crash test
+ setTimeout(function() {
+ // ignore exception if occured
+ try {
+ gFindBar.onFindAgainCommand(false);
+ } catch (e) {
+ }
+ cleanup();
+ }, 0);
+}
+
+function cleanup()
+{
+ gBrowser.removeTab(tab);
+ finish();
+}