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:
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>