S5: the gap beside a lagging Chromium page shows the page's color in every motion frame

Merged
LA
1d ago
+30-7

Summary

m20 item 1: in a key resize, a divider drag or a spring, a Chromium page can still show its last, smaller frame for a few refreshes. Until now the gap beside that frame showed the pane ground, and the page's own color appeared there only during the window's live resize. Now the host view under the page paints the page's background color whenever that color is known. At rest the page covers the host view, so nothing changes there.

Unchanged: see-through pages (cmux pages), and pages before their first real page, which keep the pane ground.

Testing

Command (fleet): cmux-ci run --class light --script scripts/ci/package-test-lane.sh --ref SHA --arg=suite --arg=Packages/macOS/CmuxNext --arg=CEFPageFrameOwnerTests --env CMUX_CI_XCODE_APP=/Applications/Xcode_26.6.app

  • RED (fails as expected): the test commit (621e7fee30b on the old stack, e8e7e7aa353 here). Step f4e4a0f8289ab01da40b73e6: theGapBesideASmallerPageShowsThePagesColorOutsideALiveResize fails because the host view shows the pane ground.
  • GREEN at the head: PENDING.

Observed / Not run

  • Observed: the fleet red run above.
  • Not run: a film of this head. Films run after merge (m19).

Changelog

Fixed: While a pane is resized, the space beside a Chromium page that is still drawing shows the page's own background color instead of the pane color.

Proof

No capture: the change is a fill color that shows only while a page lags its pane. A pane-resize film shows it after merge.


Autofix with [code]smith
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

Fixes the gap beside a Chromium page that lags its pane during a resize so the page's own background color appears there in every motion frame.

Until now the host view under the page painted the pane ground except during the window's live resize, so a key resize, divider drag, or spring showed the wrong color. It now paints the page's background whenever that color is known; at rest the page covers it. See-through pages and pages before their first real frame keep the pane ground.

The S5 tests now pin browserResize.layerHosting off, since #36311 made it default on and would otherwise keep pages hosted when the S5 switch is off.