Skip to content

Commit

Permalink
[rust png] Stall the test HTTP request at a slightly later offset.
Browse files Browse the repository at this point in the history
After this CL, the HTTP request for a PNG image will stall for 2 seconds
at a slightly later offset than before.  Before this CL, it would stall
at the beginning of the next frame's metadata chunk (`fcTL`).  After
this CL it will stall at the begining of the next frame's data chunk
(`fdAT`).

See the bug for more details on why this change has been picked as a way
forward.

Bug: 393205780
Change-Id: Ic4d3ed45f43815c65320a41bb6b9d92b7368640e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6227950
Commit-Queue: Łukasz Anforowicz <[email protected]>
Reviewed-by: Michal Mocny <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1416219}
  • Loading branch information
anforowicz authored and chromium-wpt-export-bot committed Feb 5, 2025
1 parent 93527fd commit f158680
Showing 1 changed file with 21 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,29 @@
assert_implements(window.LargestContentfulPaint,
"LargestContentfulPaint is not implemented");
const beforeLoad = performance.now();
// 262 is the size of the animated PNG up until the first frame,
// including the chunk that starts the second frame (indicating that
// the first frame data is done).
// The trickle pipe delays the response after the first frame by 1 second.

// Offsets inside `anim-gr.png`:
// IHDR: 8..33
// acTL: 33..53
// fcTL (1st frame): 53..91
// IDAT (1st frame): 91..254
// fcTL (2nd frame): 254..292
// fcTL payload starts at offset 262
// fdAT (2nd frame): 292..448
// fdAT payload starts at offset 304
//
// The HTTP request below will stall for 2 seconds after all pixels of
// the 1st frame are available, but before any 2nd frame pixels are
// available. The test will verify that LargestContentfulPaint fires
// "immediately", without waiting for the rest of the bytes.
//
// See https://crbug.com/393205780 why this offset (and not an earlier
// one) is used in the test.
const url = window.location.origin +
`/images/anim-gr.png?pipe=trickle(262:d${delay_pipe_value})`;
`/images/anim-gr.png?pipe=trickle(304:d${delay_pipe_value})`;

const entry = await load_and_observe(url);
// anim-gr.png is 100 by 50.
const size = 100 * 50;
const size = 100 * 50; // `anim-gr.png` is 100 by 50.
checkImage(entry, url, 'image_id', size, beforeLoad, ["animated"]);
}, "Same origin animated image is observable and has a first frame.");
</script>
Expand Down

0 comments on commit f158680

Please sign in to comment.