mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-09 21:00:42 +02:00
Automatic update from web-platform-tests Add WPTs for Scroll To Text security restrictions. This patch adds tests for the specified security restrictions for scroll to text: https://wicg.github.io/ScrollToTextFragment/#should-allow-text-fragment - Test for navigation without a user activation. - Test for window.open() navigation without 'noopener' option. - Test for navigation within an iframe - Test for same document navigations. Tested updated WPT locally with run_web_tests.py --additional-driver-flag= '--enable-blink-features=TextFragmentIdentifiers' Change-Id: Ia70e32a42d629fe6f9ec28b89c3167a1c1efbd8f Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1894302 Reviewed-by: David Bokan <bokan@chromium.org> Commit-Queue: Nick Burris <nburris@chromium.org> Cr-Commit-Position: refs/heads/master@{#712331} -- wpt-commits: c1c27e227840599ad09a150f74851cbd9238c9b9 wpt-pr: 20048
57 lines
1.6 KiB
HTML
57 lines
1.6 KiB
HTML
<!doctype html>
|
|
<title>Navigating to a same-document text fragment directive</title>
|
|
<meta charset=utf-8>
|
|
<link rel="help" href="https://wicg.github.io/ScrollToTextFragment/">
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="/resources/testdriver.js"></script>
|
|
<script src="/resources/testdriver-vendor.js"></script>
|
|
<script>
|
|
function isInView(element) {
|
|
let rect = element.getBoundingClientRect();
|
|
return rect.top >= 0 && rect.top <= window.innerHeight;
|
|
}
|
|
|
|
function checkScroll(resolve) {
|
|
let position = 'unknown';
|
|
if (window.scrollY == 0)
|
|
position = 'top';
|
|
else if (isInView(document.getElementById('text')))
|
|
position = 'text';
|
|
|
|
resolve(position);
|
|
}
|
|
|
|
function runTest() {
|
|
promise_test(t => new Promise(resolve => {
|
|
window.location.href = "#:~:text=test";
|
|
requestAnimationFrame(function() {
|
|
checkScroll(resolve);
|
|
});
|
|
}).then(position => {
|
|
assert_equals(position, 'top');
|
|
assert_equals(window.location.href.indexOf(':~:'), -1, 'Expected fragment directive to be stripped from the URL.');
|
|
}), 'Test that a text fragment directive cannot be activated on a same-document navigation');
|
|
|
|
promise_test(t => new Promise(resolve => {
|
|
window.location.href = "#text";
|
|
requestAnimationFrame(function() {
|
|
checkScroll(resolve);
|
|
});
|
|
}).then(position => {
|
|
assert_equals(position, 'text');
|
|
}), 'Sanity check that the text element can be navigated by element ID');
|
|
}
|
|
</script>
|
|
<style>
|
|
body {
|
|
height: 3200px;
|
|
}
|
|
#text {
|
|
position: absolute;
|
|
top: 3000px;
|
|
}
|
|
</style>
|
|
<body onload="runTest()">
|
|
<p id="text">This is a test page</p>
|
|
</body>
|