Teams‎ > ‎Animations Team‎ > ‎Highlights Archive‎ > ‎

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.

There is a performance regression ( 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.

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.

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 and find the element with the help of QuerySelector().


Elastic overscroll

 flackr@ fixed two problems in elastic overscroll.

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.

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

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.

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

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.

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

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)