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

June 2021 (Vol 2) - New features, stability fixes, Interop fixes and more!

June  2021 (Vol 2)

Chrome Interactions Highlights

Archives: go/interactions-team-highlights

Chapter I: New features

Scroll Unification: fix autoscroll crash

kevers@ fixed an autoscroll crash. There are few problems including:

  • WeakPtrs to the same object were dereferenced on different threads.

  • Waiting for input to be processed on main

  • Waiting for a main thread hit test on the compositor

Here are the fixes:

  • WidgetInputHandlerManager is now ref counted.

  • Safe to pass around the “this” pointer for callbacks that will run on the compositor.

  • Use AsWeakPtr only for callbacks that will be run on the main thread.

  • Fixes 5 crashing tests!

Scroll Unification: untangling iframe issues


skobes@ landed the CL to handle the case when a scroll hits an iframe that isn’t scrollable for some reason. In this case, we need to look for scrollable container in the parent frame.

Composite BG-color animation

xidachen@ fixed two crash cases.

The first case is shown above where the frame is detached during animation. The fix landed here.

The second case is shown above, and the crash is due to antialiasing that changes the draw operation bounds. This is the fix.

Progress based timelines/Scroll Timelines

kevers@ made a lot of progress on specs


  • No longer need time-range for a scroll timeline; Times are converted to percentages. (patch)

  • Support duration = ‘auto’ (patch)

Here’s an example of un-timed timelines:

Another example of empowering progress based animations

  • Normalization procedure to convert time-based animations to progress-based.

  • Animations are scaled to 100% with iteration and delays adjusted accordingly.

  • Smooth integration with web-animations API

Capability Delegation is ready for TAG review

  • Also investigated possible shipping options and finalized a plan working with smcgruer@ (Web Payments) and jyasskin@ (Web Standards).

Chapter II: Stability fixes

DCHECK in ConvertTimingForCompositor

This function did a bunch of math to check whether the result is finite or not, then either abort or carry on. But what if the intermediate result is indeterminate?

To solve that, we check intermediate results if there is any risk of the following in subsequent calculations:

  • infinity - infinity

  • 0 / 0

  • infinity / infinity

  • Division by zero

FullscreenControllerInteractiveTest flaky fix


mustaq@ found an issue that might cause flakiness in a large suite of tests: an initialization problem with EmbeddedTestServer could be causing flakiness in all FullscreenControllerInteractiveTests! A fix has been landed, and we’re hopeful that flakiness will be greatly reduced moving forward.

Chapter III: Interop fixes

Fix interpolation of integers

The test case above demonstrates a bug: the 8 digit CSS number was serialized to 6 significant digits, and the out-of-bounds treatment turned it into a 0..

Below is the fix to the problem.


Our ongoing effort to reduce mis-usage of overscroll-behavior (details here) moved forward with a fix landing on Google Search.

The first graph shows the usage on Google, and the second graph shows the usage of all page load, which is about 0.3%.

There are two ways to move this forward:

  • Through devrel outreach (doc)

  • Push a spec change (proposal)

Position: sticky 100% pass rate on chrome!

flackr@ wrapped up one of our team’s key product excellence/interop OKRs by fixing all WPT tests for position:sticky. Thanks to all the folks on the DOM team that contributed. (link)

Chapter IV: Bug Updates


Our team made great progress on fixing P1&P2 bugs and the numbers are going down!

Chrome Interactions Highlights | June 2021 (Vol 2)