July 2021 - New features, fixit, stability/security fixes, interop fixes and more!

July  2021

Chrome Interactions Highlights

Archives: go/interactions-team-highlights

Chapter I: New features

Composite multiple transformations

kevers@ landed a CL to composite multiple transformations.


  • CSS has 4 transformation properties: translate, scale, rotate and transform.

  • Previously, we could only composite a single transformation.


  • Compositor only know about transform, and the others were converted.

  • Ordering is important

  • WorkletAnimations tick later than the rest to allow time for worklet code to run.


  • Expand set of target properties in CC

  • ScopedCompoundTransformResolver

Capability Delegation

mustaq@ finalized Q3-Q4 shipping plan:

  • origin trial at M94

  • ship at M96 without PaymentRequest changes, and

  • ship PaymentRequest changes after holidays.

  • We considered possible TAG delays, no-breakage during holiday shopping, and motivating Stripe changes.  Thanks to smcgruer@ and jyasskin@.

Android Elastic Overscroll


flackr@ has landed all patches for elastic overscroll, which includes:

  • Transform overscroll stretch

  • Pixel shader stretch

  • Disable glow when stretch is enabled

  • Disable stretch on webview when native stretch is used

  • Disable stretch in non-scrollable directions

  • Only enable stretch on Android 12 or later

Memory.GPU.PrivateMemoryFootprint and Memory.GPU.PeakMemoryUsage2.Scroll

The preliminary finch result for “Android Elastic Overscroll” is shown above. The only substantial difference seemed to be GPU memory usage:

  • Roughly 10% increase in Memory.GPU.PeakMemoryUsage2.Scroll

  • Slightly increase in Memory.Gpu.PrivateMemoryFootprint

Chapter II: Fixit

Fix a float-cast-overflow

xidachen@ fixed a float-cast-overflow bug. There is no local repro, and a speculative fix actually fixed the problem.

Fix a float-cast-overflow

xidachen@ added more documentation in the csspaint/ folder to explain the workflow of the paint worklet.

Fix a flaky animations layout test

This layout test is one of the top flakes under the Blink>Animation category. The root cause seems to be a precision issue with animation time comparison, which is addressed in this CL.

Fix a few PointerLock crashes

mustaq@ fixed a 9-year-old exit instruction bug between fullscreen and repeated lock-unlock requests, by untangling exit instruction confusion between browser-vs-content fullscreen exit instructions to keep the “nested fullscreening” case clear to users.

Also fixed a crash with repeated locks around a removed element.

Chapter III: Stability/security fixes

Chrome_Android: Crash report

flackr@ fixed a crash on chrome android. The fix is that the overscroll stretch effect node needed an output clip set (CL). 

Prevent script execution during lifecycle update

flackr@ landed a fix that prevents further security bugs resulting from accidentally running script during the lifecycle. Specific exceptions made for cases where script execution is known to be safe or handled:

  • ResizeObserver

  • IntersectionObserver

  • PaintWorklet::Paint

  • LayoutWorklet

  • Plugin::Dispose*

Crashed hittesting with “uneditable” editable elements

mustaq@ fixed a crash bug. The root cause is simply that hittest code is unaware that the contenteditable element is not editable (CL).

Binary size increase

flackr@ investigated a binary size increase bug on Android, where Android stretch shader adds a large (~6KB) shader string (shown above).

  • Short term, only include shader string on Android (CL).

  • Long term, find a way to compress string.

Chapter IV: Interop fixes

Simplify pointer-events spec tracking of changed targets

flackr@ simplifies pointer-events spec. Previously the spec had a dirty flag which lazily updated the targets of coalesced/predicted events.

  • Leaks implementation details into the spec

Updated this to immediately update the dependent lists

  • Remove dirty flag

  • Well-known when targets change.

Chapter V: à la carte

Refactor native paintworklet

xidachen@ proposed a refactor to the native paintworklet code. Detailed doc is here, the first CL has landed. 

Scroll Unification - Google Docs jumpy scrollbar drags

skobes@ landed a CL that fixes a jumpy scrollbar bug.

Chapter VI: Bug Updates


The increase in P1 bugs appears to be linked to influx of fixit-2021-testing-flaky bugs. Some efforts is required to properly triage them.

Chrome Interactions Highlights | July 2021