New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 648522 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Sep 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Mac
Pri: 1
Type: Bug-Regression



Sign in to add a comment

Regression:Flickering of resume and cancel button is seen after hitting tab key for first instance.

Reported by vku...@etouch.net, Sep 20 2016

Issue description

Chrome Version:55.0.2866.0 Revision 5237db09cd8a30328742e4f6b1ee2edb692e936b-refs/heads/master@{#419628} (32/64 Bit)
OS:Windows(7,8,8.1,10),Mac OS X(10.10.5, 10.11.4)

What steps will reproduce the problem?
(1)Launch chrome and navigate to http://www.azurespeed.com/Azure/Download
(2)Click on 2-3 download files,click on 'pause' button from list of download bar.
(3)Press ctrl+J and hit tab key till focus reaches resume and cancel button,observe.

Actual:Flickering of resume and cancel button is seen after hitting tab key for first instance.

Expected:No such flickering should be seen of resume and cancel button after hitting tab key for first instance.

This is a regression issue broken in 'M54' and below is the manual regression range:
Good build: 54.0.2838.3 
Bad build:  54.0.2839.0


 
Actual_Download.mov
8.4 MB Download
Labels: hasbisect-per-revision ReleaseBlock-Stable
Owner: dbeam@chromium.org
Status: Assigned (was: Unconfirmed)
Using the per-revision bisect providing the bisect results,
Good build: 54.0.2838.3 (Revision: 413929).
Bad build: 54.0.2839.0 (Revision: 414243).

You are probably looking for a change made after 414021 (known good), but no later than 414022 (first known bad).
CHANGELOG URL:
 https://chromium.googlesource.com/chromium/src/+log/2f760575b7f462f23bd74c42154b38d1791c4b2a..ffabcb7320d61727b552d23999d82f8aa40ed2ad

From the CL above, assigning the issue to the concern owner --
@dbeam -- Could you please look into the issue, pardon me if it has nothing to do with your changes and if possible please assign it to concern owner.

Note: Adding RB Label as this is a recent Regression. Please remove if not required.
Thank You.

Comment 2 by dbeam@chromium.org, Sep 22 2016

Cc: kenjibaheux@chromium.org
Components: Blink>Fonts
I think this is actually an issue because I removed a use of the 700 weight Roboto on this page (previously in buttons now occupied by the search box).

when the first Roboto 700 weight text is shown, there's flicker.  this is because it's actually a different font-family.

Kenji: any ideas here?  we don't want the first time a font-weight/family is used to flicker.

this is how we're loading the fonts:
https://cs.chromium.org/chromium/src/ui/webui/resources/css/roboto.css?q=Roboto.css&sq=package:chromium&dr

Comment 3 by dbeam@chromium.org, Sep 22 2016

er, actually a different src: / url() being loaded**
I'm seeing a ~40ms latency on my windows laptop (see attached timeline).

The bold font is not readily available* so Chrome ends up painting a blank button in the meantime, hence the flickering.

Are you using the Font Loading API to make sure that the fonts you will need are readily available in memory**?


*: I/O cost, decompression/font instanciation cost.
**: this should work, if not then we have a bug to fix.
Latency fonts downloads page.PNG
193 KB View Download
Project Member

Comment 5 by bugdroid1@chromium.org, Sep 22 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/19579a56f727f6577f2f97fb71fd2c1224f2c692

commit 19579a56f727f6577f2f97fb71fd2c1224f2c692
Author: dbeam <dbeam@chromium.org>
Date: Thu Sep 22 18:22:06 2016

MD Downloads: hack to fix font flicker bug

This renders a tiny bit of bold-weighted Roboto off screen so that the
first time users hit bold Roboto (i.e. with keyboard focus on
PAUSE/CANCEL/RESUME buttons) it doesn't flicker.

BUG= 640121 , 648522 
R=tsergeant@chromium.org
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation

Review-Url: https://codereview.chromium.org/2361733002
Cr-Commit-Position: refs/heads/master@{#420400}

[modify] https://crrev.com/19579a56f727f6577f2f97fb71fd2c1224f2c692/chrome/browser/resources/md_downloads/downloads.html
[modify] https://crrev.com/19579a56f727f6577f2f97fb71fd2c1224f2c692/chrome/browser/resources/md_downloads/vulcanized.html

Comment 7 by dbeam@chromium.org, Sep 22 2016

Status: Started (was: Assigned)

Comment 9 by dbeam@chromium.org, Sep 23 2016

Status: Fixed (was: Started)
Cc: ksakamoto@chromium.org
David: how did you end up fixing the issue (The hack in #5 seems to be gone, I'm only seeing calls to the font loading API)?

Was it a timing issue (call happening too late)?


When load() resolves, the Font should be ready to go (i.e. decompressed and available to Blink). So, the earlier the call is made the lower the chance of a FOUT. 

Note: for perfection, one might want to hook on the load() call(s).
JFYI, you don't have to repeat the "src:" value of @font-face in downloads.js. Instead, you can just call

document.fonts.load("bold 12px Roboto");

Comment 12 by dbeam@chromium.org, Sep 27 2016

Kenji: assuming you meant me, new FontFace('Roboto', 'url(...)', {weight: bold}).load()

Kunihiko: thank you for the tip, I will probably send you a review shortly
Project Member

Comment 13 by bugdroid1@chromium.org, Sep 28 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/857b53d7a574041a734745cd4b2b3220637122bb

commit 857b53d7a574041a734745cd4b2b3220637122bb
Author: dbeam <dbeam@chromium.org>
Date: Wed Sep 28 00:07:17 2016

MD Downloads: simplify font preloading further

R=ksakamoto@chromium.org
BUG= 648522 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation

Review-Url: https://codereview.chromium.org/2374763002
Cr-Commit-Position: refs/heads/master@{#421393}

[modify] https://crrev.com/857b53d7a574041a734745cd4b2b3220637122bb/chrome/browser/resources/md_downloads/crisper.js
[modify] https://crrev.com/857b53d7a574041a734745cd4b2b3220637122bb/chrome/browser/resources/md_downloads/downloads.js

Sign in to add a comment