breadcrumbs: '' page_name: july-2021---new-features-fixit-stability-security-fixes-interop-fixes-and-more title: 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

image

kevers@ landed a CL to composite multiple transformations.

Background

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

Previously, we could only composite a single transformation.

Challenges

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.

Solution

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](https://github.com/w3ctag/design-reviews/issues/655) delays,
no-breakage during holiday shopping, and motivating Stripe changes. Thanks
to smcgruer@ and jyasskin@.

Android Elastic Overscroll

image image

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

imageimage

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

image

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

image

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

image

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

image

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

image

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](https://chromium-review.googlesource.com/c/chromium/src/+/3016756)).

Long term, find a way to [compress
string](https://bugs.chromium.org/p/chromium/issues/detail?id=1227747).

Chapter IV: Interop fixes

Simplify pointer-events spec tracking of changed targets

image

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

image

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

Chapter VI: Bug Updates

image image

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

go/interactions-team