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

March 2021 - Fixit week, New features, Testing, Interop, Metrics and more!

March  2021

Chrome Interactions Highlights

Archives: go/interactions-team-highlights

Chapter I: Updates

News and headlines

The above pictures show:

Bug status update

Our team did an awesome work on bug fixing this sprint...and during perf too!

This is likely due to our fixit week effort which is proudly introduced in the next chapter...

Chapter II: Fixit Week!

Overall stats

Our team had a fixit week during Mar 1~5, and the team made tremendous progress!

Bugs we closed: 40 including:

  • P1s fixed: 4

  • P2s fixed: 11

  • P3s fixed: 7

  • Others (WAIs, dups): 18

Bugs re-triaged: 19 including:

  • Fixed: 2

  • Closed: 6

  • Assigned to another team: 1

De-flake scroll snap tests

kevers@ focused on deflaking scroll snap tests during fix it week. Here are some common causes of flakes:

  • Files containing too many subtests triggering timeouts. We cannot always accelerate the scroll timing. The tests have a 6s budget and can take 3x longer than expected when machines are under load.

  • Incorrectly detecting the end of an animation. Waits on a gesture or key event resolve when queued and not when handled. This can result on the scroll end being detected before it has even started! To address, we now wait for scroll events.


  • Landed 7 CLs

  • Removed 14 lines from test expectations.

  • Fixed 10 test files

  • Closed 8 bugs

Fix pointer events flaky tests

liviutinta@’s focused on pointer events tests marked in TestExpectations file:

  • Using sendkeys instead of keyDown, keyUp

    • Landed 1 CL that fixed 4 tests.

  • Marked in TestExpectations:

    • For the remaining 8 tests in Test Expectations need implementation keyUp/keyDown as it allows for multiple keys pressed at once

    • For there’s “Element click intercepted error” thrown from test driver (2 tests)

  • Few web tests flaky because pointermove coalescing was not taken into account (1 WIP CL, 2 tests, 5 related issues)

Fixing clusterfuzz crashes

xidachen@ worked on fixing clusterfuzz crashes:

  • They usually have a minimal test case, easy to diagnose

  • These are crashes can happen in the real world

  • Often times it is due to our coding missing edge cases

Outcome: Landed 2 CLs and fixed 2 bugs. In additional to that, xidachen@ also closed a few touch-action related bugs.

Chapter III: New features

Animations in display locked subtrees

kevers@ is working on this performance optimization, which effectively “pause” CSS animations/transitions that are not rendered due to content-visibility, while direct queries must still produce correct results.

The above demo shows that animation events stop firing while content is hidden, which is a direct consequence of not updating hidden animations due to the normal passage of time. Calculations requiring a fresh style update are correctly resolved on demand.

Composite background-color animation

xidachen@ fixed a crash which is due to missing repaint. He is also working on two known problems in order to restart finch experiment.

Scroll to element

flackr@ developed a scroll-to extension

Google Meet FPS optimization

zmo@ plumbed minimum tick interval of animations, which requires

After the above change, flackr@ found that meet still wasn’t showing 60fps. More investigation shows that meet had incorrect animation. Specifically 0.6s 3 keyframe animation with steps(18) should be 30fps, but 18 animation-timing-function steps is applied between each pair of keyframes. flackr@ is currently working with meet team to further optimize this.

Penetrating context menu image selection

The feature is implemented by benwgold@ where flackr@ is an active reviewer. Specifically, this feature allows right click / long press to find images below targeted element.

In this demo,  an image label element completely covers the image. Without penetrating image selection, one could not save the image without inspecting the page.

Disable double tap to zoom

liviutinta@ landed CLs disabling DTZ for meta viewport tags such as:

  • <meta name=”viewport” content=”device-width”>

  • <meta name=”viewport” content=”initial-scale=1”> , for any initial-scale >=1 we’ll disable DTZ

  • <meta name=”viewport” content=”minimum-scale=1”>, minimum-scale >=1 implies initial-scale >= 1

  • Combinations of the above

The I2S API owners approved, and we have started finch experiment for 50% canary.

Chapter IV: Testing

Move virtual scroll-snap tests

The problem with virtual/threaded is that it doesn’t guarantee that scroll snap tests run on the compositor. Thus kevers@ moved the tests to threaded-prefer-compositing, which ensures that the composited path is being used. This change exposed that we had limited testing of scroll snap with composited scrolling and temporarily introduced 7 new entries in the TestExpectations file. These failures have now been addressed.

Automate WPT test using testdriver action API

lanwei@ kept working on automate WPT test and making good progress.

Chapter V: Stability fixes

kevers@ fixed a problem when running user code (Javascript) that can result in the destruction of an execution context. The solution is to double check if the context is used downstream of script execution.

Chapter VI: Interop fixes

Sticky interop investigation

flackr@ created meta tracking bug for this. During this sprint, 3 issues were closed. Moreover, a WPT test has been landed to track new spec scrollIntoView behavior.

Fixed falsely overconstrained stick positioning

flackr@ fixed a stick position bug. In the above demo:

  • The left one is the wrong behavior where the bottom constraint is ignored.

  • The right one shows the correct behavior. Both bottom and top constraints are used creating reveal and collapse effect.

Overscroll-behavior propagation

xidachen@ made some progress towards fixing this bug, which includes

  • Found ~15 google internal sites that might break by the incoming fix

  • Started this doc, which provided guidance on how to change their sites to avoid breakage.

  • All google internal sites listed in the doc have made changes.

  • Unfortunately the percentage of sites that might break is not going down (Beta: ~2.2%, Stable: ~0.5% of page loads)

Scroll snap behavior with scrollbar arrow keys

Resolved the scroll snap behavior for interactions with the scrollbar arrow keys during the last sprint cycle for main thread scrolling.  Fixed for composited scrolling this sprint.

Chapter VII: Metrics

Finch study: Composite relative keyframes

kevers@ launched this finch study and collected some meaningful results.

Finch study: Scroll prediction

flackr@ is launching this finch study on behave of a Microsoft engineer.



Legend (f=# frames): -5ms 0.375f 0.5f 0.625f 1.217ms 3.3ms 5.383ms

The data of “VisualJitter” suggests that more prediction means more jitter. The data of “AverageLagPresentation” suggests more prediction increases lag.

Smoothness Metric

lanwei@ explored in the smoothness metric field and did some data analysis.

Chapter VIII: à la carte

PointerEvent spec reviews

mustaq@ has almost done reviewing two significant changes from the external spec editor:

Chrome Interactions Highlights | March 2021