зеркало из https://github.com/mozilla/gecko-dev.git
162 строки
5.6 KiB
HTML
162 строки
5.6 KiB
HTML
<?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[
|
|
const {BrowserTestUtils} = ChromeUtils.import("resource://testing-common/BrowserTestUtils.jsm");
|
|
var imports = [ "SimpleTest", "is", "isnot", "ok"];
|
|
for (var name of imports) {
|
|
window[name] = window.arguments[0][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.legacySHistory.PurgeHistory(history.count);
|
|
|
|
window.close();
|
|
window.arguments[0].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() {
|
|
gTestsIterator.next();
|
|
}
|
|
|
|
function* testsIterator() {
|
|
// No-store tests
|
|
var testName = "[nostore]";
|
|
|
|
// Load a page with a no-store header
|
|
BrowserTestUtils.loadURI(gBrowser, 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>";
|
|
BrowserTestUtils.loadURI(gBrowser, 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)
|
|
BrowserTestUtils.loadURI(gBrowser, 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");
|
|
|
|
BrowserTestUtils.loadURI(gBrowser, 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");
|
|
|
|
finish();
|
|
}
|
|
]]></script>
|
|
|
|
<browser type="content" primary="true" flex="1" id="content" src="about:blank"/>
|
|
</window>
|