summaryrefslogtreecommitdiffstats
path: root/dom/bindings/test/test_kill_longrunning_prerendered_content.xul
diff options
context:
space:
mode:
Diffstat (limited to 'dom/bindings/test/test_kill_longrunning_prerendered_content.xul')
-rw-r--r--dom/bindings/test/test_kill_longrunning_prerendered_content.xul85
1 files changed, 85 insertions, 0 deletions
diff --git a/dom/bindings/test/test_kill_longrunning_prerendered_content.xul b/dom/bindings/test/test_kill_longrunning_prerendered_content.xul
new file mode 100644
index 000000000..d86b15ad9
--- /dev/null
+++ b/dom/bindings/test/test_kill_longrunning_prerendered_content.xul
@@ -0,0 +1,85 @@
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
+<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml"
+ onload="runTest();">
+ <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
+
+<script class="testbody" type="application/javascript">
+<![CDATA[
+
+ SimpleTest.waitForExplicitFinish();
+
+ function Listener(aBrowser, aPrerendered, aCallback) {
+ this.init(aBrowser, aPrerendered, aCallback);
+ }
+
+ Listener.prototype = {
+ init: function(aBrowser, aCallback) {
+ this.mBrowser = aBrowser;
+ this.mCallback = aCallback;
+ },
+ QueryInterface: function(aIID) {
+ if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||
+ aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
+ aIID.equals(Components.interfaces.nsISupports))
+ return this;
+ throw Components.results.NS_NOINTERFACE;
+ },
+ onStateChange : function(aWebProgress, aRequest, aStateFlags, aStatus) {
+ if ((aStateFlags & Components.interfaces.nsIWebProgressListener.STATE_STOP) &&
+ (aStateFlags & Components.interfaces.nsIWebProgressListener.STATE_IS_DOCUMENT)) {
+ setTimeout(this.mCallback, 0);
+ }
+ },
+ onProgressChange : function(aWebProgress, aRequest,
+ aCurSelfProgress, aMaxSelfProgress,
+ aCurTotalProgress, aMaxTotalProgress) {},
+ onLocationChange : function(aWebProgress, aRequest, aLocation, aFlags) {},
+ onStatusChange : function(aWebProgress, aRequest, aStatus, aMessage) {},
+ onSecurityChange : function(aWebProgress, aRequest, aState) {},
+ mBrowser: null,
+ mPrerendered: false,
+ mCallback: null
+ };
+
+ var progress, progressListener;
+
+ function runTest() {
+ SpecialPowers.pushPrefEnv({
+ "set": [
+ ["dom.max_script_run_time", 1]
+ ]
+ }, function() {
+ test(function() {
+ ok("The page is successfully interrupted.");
+ SimpleTest.finish();
+ });
+ });
+ }
+
+ function test(aCallback) {
+ var browser = document.getElementById("prerendered");;
+ progressListener = new Listener(browser, aCallback);
+ var docShell = browser.docShell;
+ progress = docShell.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
+ .getInterface(Components.interfaces.nsIWebProgress);
+ progress.addProgressListener(progressListener,
+ Components.interfaces.nsIWebProgress.NOTIFY_ALL);
+ browser.loadURI("data:text/html,<script>;for(;;);</script" + ">");
+ }
+
+]]>
+</script>
+
+<body id="html_body" xmlns="http://www.w3.org/1999/xhtml">
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1050456">Mozilla Bug 1050456</a>
+<p id="display"></p>
+
+<pre id="test">
+</pre>
+</body>
+<browser prerendered="true" id="prerendered"/>
+</window>