the Chromium logo

The Chromium Projects

June 2021 - New features, stability fixes, Interop fixes and more!

June 2021 Chrome Interactions Highlights Archives: go/interactions-team-highlights
Chapter I: New features
<td><td>We are seeing more animations being composited.</td></td>

<td><td>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.</td></td>

<td><td>We are seeing memory regression and this is tracked by <a
href="https://crbug.com/1210221">crbug.com/1210221</a>.</td></td>
<td><td>It re-uses elastic overscroll physics from Mac overscroll.</td></td>

<td><td>Instead of translating, it applies overscroll stretch on the
transform node.</td></td>

<td><td>There are lots of follow-on work including:</td></td>

    <td><td><a
    href="https://crbug.com/1213217">crbug.com/1213217</a></td></td>

    <td><td><a
    href="https://crbug.com/1213248">crbug.com/1213248</a></td></td>

    <td><td><a
    href="https://crbug.com/1213252">crbug.com/1213252</a></td></td>

    <td><td>Enable only on Android-S</td></td>
Composite background-color animation image image image image image image image xidachen@ launched finch study for this feature and this doc summarizes its result. Here are some high-level points: Moreover, this feature is now experimental, which means one can enable it by enabling “Experimental Web Platform features” in chrome://flags. Capability Delegation Spec image mustaq@ finished the draft spec (link) and it is ready for review. Android 12 Overscroll image flackr@ has finished the initial version of working overscroll.
Chapter II: Stability fixes
<td><td>Extract the visited style even if link is unvisited during style
resolution.</td></td>

<td><td>Generate a transition if either the visited or unvisited style
changed.</td></td>

<td><td>animation.effect.getKeyframes reports unvisited style regardless of
whether visited.</td></td>

<td><td>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.</td></td>
<td><td>UMA investigation revealed <a
href="https://bugs.chromium.org/p/chromium/issues/detail?id=1082258#c7">&lt;0.005%</a>
page loads could be affected.</td></td>

<td><td>Tentatively removed the fake user activation notification from JS
play() and everything seems good as before!</td></td>
Fix privacy leak of visited links image kevers@ fixed a privacy leak issue of visited links. A repro case is shown above. The fix to the issue is: Fix a crash in Mac IME fix image flackr@ fixed a crash by performing a null check. Removed one fake user activation image mustaq@ fixed a fake activation issue as a suspect for a navigation problem.
<td><td>A detailed <a
href="https://docs.google.com/document/d/1-pqljDgzzgRVve2oWUq237JPgtT12wcoctxbtBaHZdU/edit?ts=609ec0c2#heading=h.1xrzhx8chbuz">doc</a>
describing the problem.</td></td>

<td><td>Break the feature counter into two cases. (<a
href="https://chromium-review.googlesource.com/c/chromium/src/+/2896470">CL</a>)</td></td>

<td><td>Querying UKM table shows that google.com is the major site that have
this problem.</td></td>
Chapter III: Interop fixes Overscroll-behavior image 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.
<td><td><a
href="https://docs.google.com/document/d/1e6IXv9hZQKeOsBx5ywjsBnqS0ZLW9kY2kald_RErJ0w/edit">go/chrome-android-bisect</a>
contains all the details on how to bisect on Android.</td></td>

<td><td>skobes@ used that for two recent top-controls regressions</td></td>

    <td><td><a
    href="https://crbug.com/1167400">crbug.com/1167400</a></td></td>

    <td><td><a
    href="https://crbug.com/1207888">crbug.com/1207888</a></td></td>
<td><td>The returned string is passed to PointerEventInit::setPointerType
implicitly cast to a WTF::string for the rest of its existence. What’s the
problem?</td></td>

<td><td>First, we take the strlen of the string, which is O(n)
operation.</td></td>

<td><td>Then, we allocate storage space and copy the string constant, which
is O(n) time + space.</td></td>

<td><td>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.</td></td>
<td><td>Comparing two arbitrary Strings is O(n), see EqualStringView
implementation.</td></td>

<td><td>But, comparing two AtomicStrings is O(1)! Refer to the screenshot on
the right hand side for details.</td></td>
Chapter IV: à la carte Bisecting on Android image skobes@ found that it is quite annoying to bisect on Android, but it is possible, and also that the tool could be improved. AtomicString for PointerEvent type image image flackr@ replaced char\* with AtomicString for PointerEvent type. Why? Now the String is constructed, are we done? Well, not yet, we have to compare two strings.
Chapter V: Bug Updates image image 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