tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 13acc94592ff9a9fab0461f1218e54dfa2b2e683
parent 0204112e3ace2d15bdda8075145cfc6ddd07814f
Author: Oriol Brufau <obrufau@igalia.com>
Date:   Thu,  9 Oct 2025 16:29:39 +0000

Bug 1991296 [wpt PR 55119] - New attempt to land #55075, a=testonly

Automatic update from web-platform-tests
New attempt to land #55075

That PR didn't land because of some weird check failures.

--

wpt-commits: 0aa9fbfcdab453380068ddcf07124f7f9a806903
wpt-pr: 55119

Diffstat:
Atesting/web-platform/tests/css/cssom-view/scrollIntoView-iframes.html | 82+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atesting/web-platform/tests/css/cssom-view/support/scrollIntoView-iframes-child.html | 23+++++++++++++++++++++++
2 files changed, 105 insertions(+), 0 deletions(-)

diff --git a/testing/web-platform/tests/css/cssom-view/scrollIntoView-iframes.html b/testing/web-platform/tests/css/cssom-view/scrollIntoView-iframes.html @@ -0,0 +1,82 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSSOM View Test: scrollIntoView in iframes</title> +<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com"> +<link rel="author" title="Martin Robinson" href="mailto:mrobinson@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview"> +<meta name="assert" content="Checks that scrollIntoView inside and iframe can scroll in the parent document if it has the same origin."> + +<style> +.scroller { + overflow: hidden; + height: 500px; + border: solid; +} +.scroller::before { + content: ""; + display: block; + height: 500px; +} +.scroller::after { + content: ""; + display: block; + height: 300px; +} +iframe { + height: 1000px; + border: none; +} +</style> + +<div id="log"></div> + +<div class="scroller"> + <iframe id="same-origin-iframe"></iframe> +</div> +<div class="scroller"> + <iframe id="cross-origin-iframe" sandbox="allow-scripts"></iframe> +</div> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> +let sameOriginIframe = document.getElementById("same-origin-iframe"); +let crossOriginIframe = document.getElementById("cross-origin-iframe"); +let sameOriginWindow = sameOriginIframe.contentWindow; +let crossOriginWindow = crossOriginIframe.contentWindow; + +promise_setup(() => Promise.all([ + new Promise(resolve => { + sameOriginIframe.addEventListener("load", resolve); + sameOriginIframe.src = "support/scrollIntoView-iframes-child.html"; + }), + new Promise(resolve => { + crossOriginIframe.addEventListener("load", resolve); + crossOriginIframe.src = "support/scrollIntoView-iframes-child.html"; + }) +])); + +promise_test(async () => { + assert_equals(sameOriginWindow.scrollY, 100, "scrollY"); +}, "scrollIntoView in same-origin iframe can scroll in inner window"); + +promise_test(async () => { + assert_equals(sameOriginIframe.parentElement.scrollTop, 1200, "scrollTop"); +}, "scrollIntoView in same-origin iframe can scroll in parent window"); + +promise_test(async () => { + let scrollY = await new Promise(resolve => { + addEventListener("message", event => { + if (event.source === crossOriginWindow) { + resolve(event.data); + } + }); + crossOriginWindow.postMessage("scrollY", "*"); + }); + assert_equals(scrollY, 100, "scrollY"); +}, "scrollIntoView in cross-origin iframe can scroll in inner window"); + +promise_test(async () => { + assert_equals(crossOriginIframe.parentElement.scrollTop, 0, "scrollTop"); +}, "scrollIntoView in cross-origin iframe can't scroll in parent window"); +</script> diff --git a/testing/web-platform/tests/css/cssom-view/support/scrollIntoView-iframes-child.html b/testing/web-platform/tests/css/cssom-view/support/scrollIntoView-iframes-child.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<style> +body { + margin: 0; + padding-top: 1000px; +} +#target { + height: 100px; + width: 100px; + background: green; +} +</style> +<div id="target"></div> +<script> +target.scrollIntoView({block: "center"}); + +addEventListener("message", event => { + if (event.data === "scrollY") { + event.source.postMessage(scrollY, "*"); + } +}); +</script>