breadcrumbs: Highlights Archive > page_name: august-2021-vol-2---new-features-code-health-stability-security-fixes title: August 2021 (Vol.2) - New features, Code health, Stability/security fixes


August 2021 (Vol. 2)

Chrome Interactions Highlights

Archives: go/interactions-team-highlights

Chapter I: New features

Composite BG-color animation

xidachen@ resolved a few problems and this feature is now close to finch on Beta. Specifically we have enabled field trial testing (CL) so all perf bots can run tests with this feature. All regressions and improvements are summarized here.

We have resolved the memory increase (CL). Here is an example where a perf test used to crash due to OOM now works fine.

image

There is a performance regression (crbug.com/1238554) that has been addressed as well. It was fixed by this CL where we found that we were doing a lot of un-necessary work which slows it down.

Note that the above curve has improved, but didn’t go back to the original level. With further investigation, we found that the root cause is because the tests aren’t well written. Specifically, the tests contains background-color animation on a solid-color layer, and our system has optimizations towards solid-color layer which is not implemented in CompositeBGColorAnimation yet.

image

A pinpoint job was started where the layer made to be not long solid-color and the above shows the result. The right column is with CompositeBGColorAnimation and we can see that it actually made a performance improvement.

image

mehdika@ modified Element Fragment code (that already exists) to work for any other element.

For now we just scroll to the element, later we will add more features like
highlight the element, etc.

We use the [following
syntax](https://github.com/WICG/scroll-to-text-fragment/blob/main/EXTENSIONS.md#proposed-solution)
and find the element with the help of QuerySelector().

    https://example.org#:~:selector(type=CssSelector,value=img\[src$="example.org"\])

Elastic overscroll

flackr@ fixed two problems in elastic overscroll.

image

The first problem is the subtle shift in content during overscroll bounce. The fix is to use ScrollTree::container_bounds which includes container_bounds_delta.

image

image

Another fix is to reduce elastic overscroll stretch. Particularly, we have updated parameters in ElasticOverscrollControllerExponential to more closely match native overscroll.

Chapter II: Code health

Native paint worklet

image

xidachen@ moved some common variables && APIs among different native paint definitions to their super class, which results in a negative line count CL.

Chapter III: Stability/security fixes

Elastic overscroll crash

flackr@ fixed a crash in blink::ElasticOverscrollController::ObserveGestureEventAndResult.

image image

The above shows the stack trace, which indicates that ObserveGestureEventAndResult is called on nullptr ElasticOverscrollController.

image image

It looks like we have added check, as shown in the above. But why didn’t it crash before? It appears that the crash is from the posted task.

image

Further investigation shows that the ElasticOverscroll is now controlled dynamically by prefers-reduced-motion, so the fix is to check that too.

Chapter IV: Interop fixes

image

skobes@ fixed a bug where scrollTo doesn’t abort mouse wheel scroll animation. The solution is to cancel impl-side scroll animation when we get a programmatic scroll. This also fixed a bug in scroll unification.

Chrome Interactions Highlights | August 2021 (Vol. 2)

go/interactions-team