breadcrumbs: Highlights Archive > page_name: august-2021---new-features-fixit-testing-code-health-and-more title: August 2021 - New features, Fixit, Testing, Code health and more!
<td><td>Scroll-timelines are now progress based and not time based. Two cases where we need to preserve the “progress”:</td></td> <td><td>Switching to a scroll timeline while paused</td></td> <td><td>Switching from a scroll timeline.</td></td>
<td><td>Augment procedure to include calculation of previous progress</td></td> <td><td>Preserve position.</td></td>
<td><td>The problem with current & start times remaining as doubles is that it requires inferring a different unit depending on the timeline. Animations associated with a scroll timeline are progress based and not time based.</td></td> <td><td>This would allow:</td></td> <td><td>scrollAnimation.currentTime = CSS.percent(30);</td></td> <td><td>timeAnimation.startTime = CSSNumericValue.parse(‘-30ms’)</td></td>
<td><td>The above table shows the summary of the result with all platforms combined, canary + dev channels.</td></td> <td><td>Note that the blue ones show significant difference, the black ones are “not significant”.</td></td>
<td><td>FixIt organizers are awarding skobes@ with a <a href="https://docs.google.com/presentation/d/1ahjM6k4TjGw6Pf_DGg1d7b30xROnav-7vV9ec-6CI1U/edit#slide=id.ge570983615_0_2467">High Achievement award</a> for fixing the <a href="https://crbug.com/43170">oldest bug</a>.</td></td> <td><td>We closed <a href="https://bugs.chromium.org/p/chromium/issues/list">15 bugs</a> in total:</td></td> <td><td>Got rid of bugs with <a href="https://crbug.com/716694">52</a>, <a href="https://crbug.com/1148143">37</a>, <a href="https://crbug.com/43170">27</a> and <a href="https://crbug.com/61574">12</a> stars.</td></td> <td><td>Landed code to fix <a href="https://bugs.chromium.org/p/chromium/issues/list">7</a> of bugs.</td></td>
<td><td><td>Timeout: fixed by deferring start until ready</td></td></td> <td><td><td>Position mismatch: fixed by waiting for scroll event before checking position</td></td></td>
<td><td><td>Timeout: fixed by deferring start until after onload</td></td></td> <td><td><td>Position mismatch: fixed by allowing for fractional offset.</td></td></td> <td><td><td>Note this was the top Blink>Scroll flake!</td></td></td>
<td><td><td>Position mismatch: fixed by using established way of determining scroll thumb position and waiting on scroll event.</td></td></td>
<td><td><td>Here is the <a href="https://docs.google.com/document/d/18JIiajErikZaBzCtZvl-wwAJShqZsg0jT9wVyPBhSdU/edit">design doc</a> for WTF::HashMap<>::at() refactor.</td></td></td>
<td><td><td>3 public and 1 private constructor. All public versions end up calling the private constructor</td></td></td> <td><td><td>Unnecessary if-else construct</td></td></td> <td><td><td>Opportunity to improve efficiency with move-value semantics</td></td></td>
<td><td><td>Single constructor that takes a KeyframeModel::PropertyId argument</td></td></td> <td><td><td>Add move constructor and move assignment operator to TargetPropertyId</td></td></td> <td><td><td><a href="https://chromium-review.googlesource.com/c/chromium/src/+/3060658">Negative line count CL</a>.</td></td></td>
<td><td><td>Detailed design <a href="https://docs.google.com/document/d/12g1OLIxZk9ayLNbOI87ru_yoUUWdxcKewDLRR4tqzi8/edit#">doc</a> here.</td></td></td> <td><td><td>The refactor reduced a middle layer, and made the entire workflow simpler.</td></td></td> <td><td><td>Landed 3 CLs. (<a href="https://chromium-review.googlesource.com/c/chromium/src/+/3016115">Part1</a>, <a href="https://chromium-review.googlesource.com/c/chromium/src/+/3044499">Part2</a>, <a href="https://chromium-review.googlesource.com/c/chromium/src/+/3067315">Part3</a>)</td></td></td>
<td><td><td>Foo::Foo(Foo&& other): other is a temporary object that may have its contents reset as a result of the move. Note the r-value ref cannot be const.</td></td></td>
<td><td><td>Foo::operator=(Foo&& other): same thing. Other is temporary and may be reset.</td></td></td>
<td><td>The problem was known 3+ years ago, and we got the security bug 2+ years ago.</td></td> <td><td>We posted solution ideas but compat risks held us back. Our <a href="https://docs.google.com/document/d/1TKjjwFlQGh2LLm0_mOW6FJdmmwyOBMj_fdWJyAJ_Q50/edit">design doc</a> in early 2020 didn’t get enough traction for the same reason.</td></td> <td><td>We added UMA in late 2020 to slice the problem but got <a href="https://docs.google.com/presentation/d/1xyyeMLNFFPNlMkulSb_nVvmpOZJ6OpYyE1TNsZvFyZQ/edit#slide=id.ga4b082cc16_1_0">confusing results</a>.</td></td> <td><td>We committed to look again in Q3 this year, and coincidentally got an <a href="http://crbug.com/1233544">escalation</a> from fbeaufort@ and the Media team just in time!</td></td> <td><td>Brainstorming in early Q3 by mustaq@, flackr@ and rdcronin@ led us to a solid plan, finally!</td></td>
<td><td>This <a href="https://chromium-review.googlesource.com/c/chromium/src/+/3046841">CL</a> plumbed prefers-reduced-motion from blink to compositor and wired it up to input_proxy_client.cc to disable elastic overscroll (on Android only)</td></td>