1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/toolkit/content/tests/browser/browser_bug982298.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,87 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + * http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +Components.utils.import("resource://gre/modules/Timer.jsm"); 1.8 + 1.9 +const Ci = Components.interfaces; 1.10 + 1.11 +let tab; 1.12 +let browser; 1.13 + 1.14 +const scrollHtml = 1.15 + "<textarea id=\"textarea1\" row=2>Firefox\n\nFirefox\n\n\n\n\n\n\n\n\n\n" + 1.16 + "</textarea><a href=\"about:blank\">blank</a>"; 1.17 + 1.18 +const scrollTest = 1.19 + "var textarea = content.document.getElementById(\"textarea1\");" + 1.20 + "textarea.scrollTop = textarea.scrollHeight;" + 1.21 + "sendAsyncMessage(\"ScrollDone\", { });" 1.22 + 1.23 +function test() 1.24 +{ 1.25 + waitForExplicitFinish(); 1.26 + 1.27 + tab = gBrowser.addTab("data:text/html;base64," + 1.28 + btoa(scrollHtml)); 1.29 + browser = gBrowser.getBrowserForTab(tab); 1.30 + gBrowser.selectedTab = tab; 1.31 + 1.32 + browser.addEventListener("load", find, true); 1.33 +} 1.34 + 1.35 +function find() 1.36 +{ 1.37 + browser.removeEventListener("load", find, true); 1.38 + let listener = { 1.39 + onFindResult: function(aData) { 1.40 + browser.finder.removeResultListener(listener); 1.41 + 1.42 + ok(aData.result == Ci.nsITypeAheadFind.FIND_FOUND, "should find string"); 1.43 + 1.44 + browser.messageManager.addMessageListener("ScrollDone", 1.45 + function f(aMsg) { 1.46 + browser.messageManager.removeMessageListener("ScrollDone", f); 1.47 + browser.loadURI("about:blank"); 1.48 + browser.addEventListener("load", findAgain, true); 1.49 + }); 1.50 + 1.51 + // scroll textarea to bottom 1.52 + browser.messageManager.loadFrameScript("data:text/javascript;base64," + 1.53 + btoa(scrollTest), false); 1.54 + 1.55 + }, 1.56 + }; 1.57 + browser.finder.addResultListener(listener); 1.58 + gFindBar.onFindCommand(); 1.59 + EventUtils.sendString("F"); 1.60 +} 1.61 + 1.62 +function findAgain() 1.63 +{ 1.64 + browser.removeEventListener("load", findAgain, true); 1.65 + 1.66 + ok(browser.currentURI.spec == "about:blank", "cannot navigate to about:blank"); 1.67 + let listener = { 1.68 + onFindResult: function(aData) { 1.69 + browser.finder.removeResultListener(listener); 1.70 + cleanup(); 1.71 + }, 1.72 + }; 1.73 + 1.74 + browser.finder.addResultListener(listener); 1.75 + // find again needs delay for crash test 1.76 + setTimeout(function() { 1.77 + // ignore exception if occured 1.78 + try { 1.79 + gFindBar.onFindAgainCommand(false); 1.80 + } catch (e) { 1.81 + } 1.82 + cleanup(); 1.83 + }, 0); 1.84 +} 1.85 + 1.86 +function cleanup() 1.87 +{ 1.88 + gBrowser.removeTab(tab); 1.89 + finish(); 1.90 +}