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

Issue 656321 link

Starred by 2 users

Issue metadata

Status: WontFix
Owner: ----
Closed: Oct 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 1
Type: Bug



Sign in to add a comment

header animation doesn't fire on dev channel

Project Member Reported by ojan@chromium.org, Oct 15 2016

Issue description

1. Go to https://blog.google/topics/journalism-news/labeling-fact-check-articles-google-news/
2. Scroll up and down so the header does it's animation.

On Chrome 53 on Android the header expands out when you get close to the top of the viewport. On Chrome 55, it doesn't expand out when you hit the top of the viewport at all. But, if you then start another scroll that hits the pull-to-refresh behavior, it expands out once you start that gesture.
 

Comment 1 by bokan@chromium.org, Oct 17 2016

Cc: -bokan@chromium.org
Labels: Hotlist-Input-Dev
Owner: bokan@chromium.org
Status: Assigned (was: Untriaged)
I'll take a first look.

Comment 2 by bokan@chromium.org, Oct 18 2016

Cc: skyos...@chromium.org alexclarke@chromium.org
It looks like the animation does occur, but you have to leave it scrolled at the top for a little while. The header animation appears to be controlled from a timer that gets set from onScroll. It looks like the issue is that we're deferring that timer from firing as part of our "expensive task deferral" ( issue 574343 ) but that should have launched in M53 so I'm not sure what the difference is. Should also note, the repro is not consistent, I had to restart Chrome and navigate to the page a few times.

Sami/Alex, are you aware of any changes to scheduling that may have changed here recently? I suppose another possibility might be that something else got more expensive which is causing the timer to get flagged as long running.

Comment 3 by bokan@chromium.org, Oct 18 2016

For a more consistent repro, continually fling down while the page is loading looks like it causes the time to be flagged.
Cc: altimin@chromium.org
I'll confirm later, but it might be related to one of Sami's interventions.

+altimin@ as FYI
I tried this on a nexus 7v2, I didn't notice the animation getting blocked although it was animating at low FPS (perhaps 20fps) and looked a bit bad.

If the scheduler is expecting a touch start soon, then it will block loading and timer tasks if deemed expensive.  Specifically if the 99% run time is >50 ms.

In this case on the 7v2 the expected_timer_task_duration was 10.254ms so it wasn't getting blocked however expected_loading_task_duration was 70.6184ms so they where.

If at all possible code should really be using rAF for JS controlled animation.

Comment 6 by bokan@chromium.org, Oct 21 2016

Owner: ----

Comment 7 by bokan@chromium.org, Oct 21 2016

Cc: bokan@chromium.org
So this is a P1; we really should have an owner. alexclarke@ are you indicating this isn't a scheduling issue by un-assigning yourself?
Status: WontFix (was: Assigned)
I chatted to Sami and we think this is working as intended.  We've been telling web devs for years to use rAF for animations. 

Looking at the source code I can see it's trying to update the animation at 10hz.  They can do this with rAF by ticking the animation every 6th frame.

I've filed an internal bug: https://b.corp.google.com/issues/32367396

Sign in to add a comment