<?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin" type="text/css"?> <window id="303267Test" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" width="600" height="600" onload="nextTestAsync();" title="bug 582176 test"> <script type="application/javascript" src= "chrome://mochikit/content/chrome-harness.js" /> <script type="application/javascript" src="docshell_helpers.js" /> <script type="application/javascript"><![CDATA[ // Define the generator-iterator for the tests. var tests = testIterator(); //// // Execute the next test in the generator function. // function nextTestAsync() { SimpleTest.executeSoon(tests.next.bind(tests)); } //// // Generator function for test steps for bug 582176: // Description goes here. // function testIterator() { var browser = document.getElementById('content'); browser.addEventListener("pageshow", nextTestAsync, true); enableBFCache(true); var notificationCount = 0; var observer = { observe: function(aSubject, aTopic, aData) { is(aSubject, browser.contentWindow, "correct subject"); is(aTopic, "content-document-global-created", "correct topic"); is(aData, "http://mochi.test:8888", "correct data"); notificationCount++; } }; os = Components.classes["@mozilla.org/observer-service;1"]. getService(Components.interfaces.nsIObserverService); os.addObserver(observer, "content-document-global-created", false); browser.loadURI("http://mochi.test:8888/tests/docshell/test/chrome/582176_dummy.html"); yield undefined; is(browser.contentWindow.testVar, undefined, "variable unexpectedly there already"); browser.contentWindow.wrappedJSObject.testVar = 1; is(notificationCount, 1, "Should notify on first navigation"); browser.loadURI("http://mochi.test:8888/tests/docshell/test/chrome/582176_dummy.html?2"); yield undefined; is(browser.contentWindow.wrappedJSObject.testVar, undefined, "variable should no longer be there"); is(notificationCount, 2, "Should notify on second navigation"); browser.goBack(); yield undefined; is(browser.contentWindow.wrappedJSObject.testVar, 1, "variable should still be there"); is(notificationCount, 2, "Should not notify on back navigation"); browser.loadURI("http://mochi.test:8888/tests/docshell/test/chrome/582176_xml.xml"); yield undefined; is(browser.contentDocument.body.textContent, "xslt result", "Transform performed successfully"); is(notificationCount, 3, "Should notify only once on XSLT navigation"); os.removeObserver(observer, "content-document-global-created") // Tell the framework the test is finished. Include the final 'yield' // statement to prevent a StopIteration exception from being thrown. finish(); yield undefined; } ]]></script> <browser type="content-primary" flex="1" id="content" src="about:blank"/> </window>