tor-browser

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

commit f907cbe2900754709ecb889d0cd9a1e3209217e2
parent 9d3e2a12d3bba107f2cd1145fac85016328d8d22
Author: Koji Ishii <kojii@chromium.org>
Date:   Tue, 21 Oct 2025 10:49:54 +0000

Bug 1995487 [wpt PR 55568] - [iframe] Resize on `DOMContentLoaded`, a=testonly

Automatic update from web-platform-tests
[iframe] Resize on `DOMContentLoaded`

This patch changes to resize responsive iframes on the
`DOMContentLoaded` event, in addition to the `load` event.

No behavior changes as changes are under a runtime flag.

Bug: 418397278
Change-Id: I81cc34408964cda1b7233c99ec876e8f08c79fde
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7061690
Auto-Submit: Koji Ishii <kojii@chromium.org>
Reviewed-by: Kent Tamura <tkent@chromium.org>
Commit-Queue: Koji Ishii <kojii@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1532775}

--

wpt-commits: e5f7d98f0724537350a56f16a493be3550fbfea8
wpt-pr: 55568

Diffstat:
Atesting/web-platform/tests/css/css-sizing/responsive-iframe/resources/1x1-navy.png | 0
Atesting/web-platform/tests/css/css-sizing/responsive-iframe/resources/iframe-contents-dom-content-loaded.html | 24++++++++++++++++++++++++
Atesting/web-platform/tests/css/css-sizing/responsive-iframe/resources/slow-image.py | 16++++++++++++++++
Atesting/web-platform/tests/css/css-sizing/responsive-iframe/responsive-iframe-dom-content-loaded.tentative.html | 31+++++++++++++++++++++++++++++++
4 files changed, 71 insertions(+), 0 deletions(-)

diff --git a/testing/web-platform/tests/css/css-sizing/responsive-iframe/resources/1x1-navy.png b/testing/web-platform/tests/css/css-sizing/responsive-iframe/resources/1x1-navy.png Binary files differ. diff --git a/testing/web-platform/tests/css/css-sizing/responsive-iframe/resources/iframe-contents-dom-content-loaded.html b/testing/web-platform/tests/css/css-sizing/responsive-iframe/resources/iframe-contents-dom-content-loaded.html @@ -0,0 +1,24 @@ +<!doctype HTML> +<head> +<style> +* { margin: 0 } +</style> +<meta name="responsive-embedded-sizing"> +</head> +<div id="target" style="width: 100px"> + <img src="slow-image.py?name=1x1-navy.png" width="1" height="1"> +</div> +<script> +document.addEventListener('DOMContentLoaded', () => { + target.style.height = '200px'; + window.parent.postMessage({ + type: 'DOMContentLoaded', + }, '*'); +}); +window.addEventListener('load', () => { + target.style.height = '400px'; + window.parent.postMessage({ + type: 'load', + }, '*'); +}); +</script> diff --git a/testing/web-platform/tests/css/css-sizing/responsive-iframe/resources/slow-image.py b/testing/web-platform/tests/css/css-sizing/responsive-iframe/resources/slow-image.py @@ -0,0 +1,16 @@ +import os.path +import time + +def main(request, response): + # Sleep for 500ms to delay the `load` events. + time.sleep(0.5) + + name = request.GET.first(b"name") + path = os.path.join(os.path.dirname(__file__), name) + body = open(path, u"rb").read() + + response.headers.set(b"Content-Type", b"image") + response.headers.set(b"Content-Length", len(body)) + response.headers.set(b"Cache-control", b"no-cache, must-revalidate") + + response.content = body diff --git a/testing/web-platform/tests/css/css-sizing/responsive-iframe/responsive-iframe-dom-content-loaded.tentative.html b/testing/web-platform/tests/css/css-sizing/responsive-iframe/responsive-iframe-dom-content-loaded.tentative.html @@ -0,0 +1,31 @@ +<!doctype HTML> +<title>Test that `DOMContentLoaded` triggers resizing.</title> +<link rel="author" href="mailto:kojii@chromium.org"> +<link rel="help" href="https://drafts.csswg.org/css-sizing/"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style> +iframe { + contain-intrinsic-size: from-element; +} +</style> +<iframe id="target" frameborder=0 src="resources/iframe-contents-dom-content-loaded.html"></iframe> +<script> +async_test(t => { + window.addEventListener('message', t.step_func(e => { + const type = e.data.type; + if (type === 'DOMContentLoaded') { + // The resize may not be synchronous, so wait for an animation frame. + requestAnimationFrame(t.step_func(() => { + assert_equals(target.offsetHeight, 200); + })); + } else if (type === 'load') { + requestAnimationFrame(t.step_func(() => { + assert_equals(target.offsetHeight, 400); + t.done(); + })); + } + })); +}, "`DOMContentLoaded` triggers resizing"); +</script> +</body>