toolkit/content/tests/browser/browser_bug982298.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:61fee7da62a8
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/ */
3
4 Components.utils.import("resource://gre/modules/Timer.jsm");
5
6 const Ci = Components.interfaces;
7
8 let tab;
9 let browser;
10
11 const scrollHtml =
12 "<textarea id=\"textarea1\" row=2>Firefox\n\nFirefox\n\n\n\n\n\n\n\n\n\n" +
13 "</textarea><a href=\"about:blank\">blank</a>";
14
15 const scrollTest =
16 "var textarea = content.document.getElementById(\"textarea1\");" +
17 "textarea.scrollTop = textarea.scrollHeight;" +
18 "sendAsyncMessage(\"ScrollDone\", { });"
19
20 function test()
21 {
22 waitForExplicitFinish();
23
24 tab = gBrowser.addTab("data:text/html;base64," +
25 btoa(scrollHtml));
26 browser = gBrowser.getBrowserForTab(tab);
27 gBrowser.selectedTab = tab;
28
29 browser.addEventListener("load", find, true);
30 }
31
32 function find()
33 {
34 browser.removeEventListener("load", find, true);
35 let listener = {
36 onFindResult: function(aData) {
37 browser.finder.removeResultListener(listener);
38
39 ok(aData.result == Ci.nsITypeAheadFind.FIND_FOUND, "should find string");
40
41 browser.messageManager.addMessageListener("ScrollDone",
42 function f(aMsg) {
43 browser.messageManager.removeMessageListener("ScrollDone", f);
44 browser.loadURI("about:blank");
45 browser.addEventListener("load", findAgain, true);
46 });
47
48 // scroll textarea to bottom
49 browser.messageManager.loadFrameScript("data:text/javascript;base64," +
50 btoa(scrollTest), false);
51
52 },
53 };
54 browser.finder.addResultListener(listener);
55 gFindBar.onFindCommand();
56 EventUtils.sendString("F");
57 }
58
59 function findAgain()
60 {
61 browser.removeEventListener("load", findAgain, true);
62
63 ok(browser.currentURI.spec == "about:blank", "cannot navigate to about:blank");
64 let listener = {
65 onFindResult: function(aData) {
66 browser.finder.removeResultListener(listener);
67 cleanup();
68 },
69 };
70
71 browser.finder.addResultListener(listener);
72 // find again needs delay for crash test
73 setTimeout(function() {
74 // ignore exception if occured
75 try {
76 gFindBar.onFindAgainCommand(false);
77 } catch (e) {
78 }
79 cleanup();
80 }, 0);
81 }
82
83 function cleanup()
84 {
85 gBrowser.removeTab(tab);
86 finish();
87 }

mercurial