<?xml version="1.0"?> <!-- This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> <?xml-stylesheet href="chrome://global/skin" type="text/css"?> <window id="215405Test" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" width="600" height="600" onload="onLoad();" title="215405 test"> <script type="application/javascript"><![CDATA[ var imports = [ "SimpleTest", "is", "isnot", "ok"]; for (var name of imports) { window[name] = window.opener.wrappedJSObject[name]; } const text="MOZILLA"; const nostoreURI = "http://mochi.test:8888/tests/docshell/test/chrome/" + "215405_nostore.html"; const nocacheURI = "https://example.com:443/tests/docshell/test/chrome/" + "215405_nocache.html"; var gBrowser; var gTestsIterator; var scrollX = 0; var scrollY = 0; function finish() { gBrowser.removeEventListener("pageshow", eventListener, true); // Work around bug 467960 var history = gBrowser.webNavigation.sessionHistory; history.PurgeHistory(history.count); window.close(); window.opener.wrappedJSObject.SimpleTest.finish(); } function onLoad(e) { gBrowser = document.getElementById("content"); gBrowser.addEventListener("pageshow", eventListener, true); gTestsIterator = testsIterator(); nextTest(); } function eventListener(event) { setTimeout(nextTest, 0); } function nextTest() { try { gTestsIterator.next(); } catch (err if err instanceof StopIteration) { finish(); } } function testsIterator() { // No-store tests var testName = "[nostore]"; // Load a page with a no-store header gBrowser.loadURI(nostoreURI); yield undefined; // Now that the page has loaded, amend the form contents var form = gBrowser.contentDocument.getElementById("inp"); form.value = text; // Attempt to scroll the page var originalXPosition = gBrowser.contentWindow.scrollX; var originalYPosition = gBrowser.contentWindow.scrollY; var scrollToX = gBrowser.contentWindow.scrollMaxX; var scrollToY = gBrowser.contentWindow.scrollMaxY; gBrowser.contentWindow.scrollBy(scrollToX, scrollToY); // Save the scroll position for future comparison scrollX = gBrowser.contentWindow.scrollX; scrollY = gBrowser.contentWindow.scrollY; isnot(scrollX, originalXPosition, testName + " failed to scroll window horizontally"); isnot(scrollY, originalYPosition, testName + " failed to scroll window vertically"); // Load a new document into the browser var simple = "data:text/html,<html><head><title>test2</title></head>" + "<body>test2</body></html>"; gBrowser.loadURI(simple); yield undefined; // Now go back in history. First page should not have been cached. gBrowser.goBack(); yield undefined; // First uncacheable page will now be reloaded. Check scroll position // restored, and form contents not is(gBrowser.contentWindow.scrollX, scrollX, testName + " horizontal axis scroll position not correctly restored"); is(gBrowser.contentWindow.scrollY, scrollY, testName + " vertical axis scroll position not correctly restored"); var formValue = gBrowser.contentDocument.getElementById("inp").value; isnot(formValue, text, testName + " form value incorrectly restored"); // https no-cache testName = "[nocache]"; // Load a page with a no-cache header. This should not be // restricted like no-store (bug 567365) gBrowser.loadURI(nocacheURI); yield undefined; // Now that the page has loaded, amend the form contents form = gBrowser.contentDocument.getElementById("inp"); form.value = text; // Attempt to scroll the page originalXPosition = gBrowser.contentWindow.scrollX; originalYPosition = gBrowser.contentWindow.scrollY; scrollToX = gBrowser.contentWindow.scrollMaxX; scrollToY = gBrowser.contentWindow.scrollMaxY; gBrowser.contentWindow.scrollBy(scrollToX, scrollToY); // Save the scroll position for future comparison scrollX = gBrowser.contentWindow.scrollX; scrollY = gBrowser.contentWindow.scrollY; isnot(scrollX, originalXPosition, testName + " failed to scroll window horizontally"); isnot(scrollY, originalYPosition, testName + " failed to scroll window vertically"); gBrowser.loadURI(simple); yield undefined; // Now go back in history to the cached page. gBrowser.goBack(); yield undefined; // First page will now be reloaded. Check scroll position // and form contents are restored is(gBrowser.contentWindow.scrollX, scrollX, testName + " horizontal axis scroll position not correctly restored"); is(gBrowser.contentWindow.scrollY, scrollY, testName + " vertical axis scroll position not correctly restored"); var formValue = gBrowser.contentDocument.getElementById("inp").value; is(formValue, text, testName + " form value not correctly restored"); // nextTest has to be called from here, as no events are fired in this // step setTimeout(nextTest, 0); yield undefined; } ]]></script> <browser type="content-primary" flex="1" id="content" src="about:blank"/> </window>