--- breadcrumbs: - - /teams - Teams - - /teams/animations - Animations Team - - /teams/animations/highlights-archive - Highlights Archive page_name: june-2021---new-features-stability-fixes-interop-fixes-and-more title: June 2021 - New features, stability fixes, Interop fixes and more! ---

June 2021 | Chrome Interactions Highlights | Archives: go/interactions-team-highlights

| Chapter I: New features |
|

Composite background-color animation xidachen@ launched finch study for this feature and this doc summarizes its result. Here are some high-level points: We are seeing more animations being composited. Unfortunately we don’t see improvement in the “PercentDroppedFrame”, which reflects the smoothness of the animations overall. One possible reason is that background-color animation is mostly applied on small buttons and it is not the dominant factor of dropped animation frames. We are seeing memory regression and this is tracked by crbug.com/1210221. Moreover, this feature is now experimental, which means one can enable it by enabling “Experimental Web Platform features” in chrome://flags. Capability Delegation Spec mustaq@ finished the draft spec (link) and it is ready for review. Android 12 Overscroll flackr@ has finished the initial version of working overscroll. It re-uses elastic overscroll physics from Mac overscroll. Instead of translating, it applies overscroll stretch on the transform node. There are lots of follow-on work including: crbug.com/1213217 crbug.com/1213248 crbug.com/1213252 Enable only on Android-S

Chapter II: Stability fixes

Fix privacy leak of visited links kevers@ fixed a privacy leak issue of visited links. A repro case is shown above. The fix to the issue is: Extract the visited style even if link is unvisited during style resolution. Generate a transition if either the visited or unvisited style changed. animation.effect.getKeyframes reports unvisited style regardless of whether visited. Visually render with the correct style. This is possible since the interpolation code retains a pair of colors to interpolate corresponding to the visited and unvisited style. Fix a crash in Mac IME fix flackr@ fixed a crash by performing a null check. Removed one fake user activation mustaq@ fixed a fake activation issue as a suspect for a navigation problem. UMA investigation revealed <0.005% page loads could be affected. Tentatively removed the fake user activation notification from JS play() and everything seems good as before!

Chapter III: Interop fixes Overscroll-behavior xidachen@ kept working on the bug, where chrome propagates overscroll-behavior from the <body> element, while by spec it should be from the <html> element. A detailed doc describing the problem. Break the feature counter into two cases. (CL) Querying UKM table shows that google.com is the major site that have this problem.

Chapter IV: à la carte Bisecting on Android skobes@ found that it is quite annoying to bisect on Android, but it is possible, and also that the tool could be improved. go/chrome-android-bisect contains all the details on how to bisect on Android. skobes@ used that for two recent top-controls regressions crbug.com/1167400 crbug.com/1207888 AtomicString for PointerEvent type flackr@ replaced char\* with AtomicString for PointerEvent type. Why? The returned string is passed to PointerEventInit::setPointerType implicitly cast to a WTF::string for the rest of its existence. What’s the problem? First, we take the strlen of the string, which is O(n) operation. Then, we allocate storage space and copy the string constant, which is O(n) time + space. If we instead construct a String from another String, then it just adds a ref to the StringImpl, and that’s O(1). Refer to the screenshot on the left hand side for details. Now the String is constructed, are we done? Well, not yet, we have to compare two strings. Comparing two arbitrary Strings is O(n), see EqualStringView implementation. But, comparing two AtomicStrings is O(1)! Refer to the screenshot on the right hand side for details.

Chapter V: Bug Updates Our team kept on top of bugs. We closed almost the same amount of P1 bugs vs opened P1 bugs.

Chrome Interactions Highlights | June 2021 | go/interactions-team