blob: 073e0f6e06f98bf800f3947c63fe911937923eb2 [file] [log] [blame]
<!DOCTYPE html>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
body {
height: 2000px;
width: 2000px;
}
#fragment {
position: absolute;
top: 800px;
background-color: #faa;
display: block;
height: 100px;
width: 100px;
}
</style>
<body>
<a id="fragment" name="fragment" class='box'></a>
</body>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script type="text/javascript">
'use strict';
async_test(function(t) {
history.scrollRestoration = 'manual';
assert_equals(history.scrollRestoration, 'manual');
location.hash = '#fragment';
assert_equals(window.scrollY, 800, 'new navigations should scroll to fragment');
// create a new entry and reset the scroll before verification
history.pushState(null, null, '#done');
window.scrollTo(0, 0);
assert_equals(window.scrollY, 0, 'should reset scroll before verification');
setTimeout(function() {
// setup verification
window.addEventListener('hashchange', t.step_func(function() {
assert_equals(location.hash, '#fragment');
assert_equals(history.scrollRestoration, 'manual');
// navigating back should give precedent to history restoration which is 'manual'
assert_equals(window.scrollX, 0, 'should not scroll to fragment');
assert_equals(window.scrollY, 0, 'should not scroll to fragment');
t.done();
}));
// kick off verification
window.history.back();
}, 0);
}, 'Manual scroll restoration should take precedent over scrolling to fragment in cross doc navigation');
</script>