New issue
Advanced search Search tips

Issue 802891 link

Starred by 0 users

Issue metadata

Status: Verified
Owner:
Closed: Jan 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: iOS
Pri: 1
Type: Bug-Regression



Sign in to add a comment

Progress bar at zero percent is displayed forever when Download manager is displayed

Project Member Reported by srikanthg@chromium.org, Jan 16 2018

Issue description

App Version: 64.0.3282.97 beta
iOS Version: 11.2.5 beta#5, 11.1.1
Device: iPhoneX, iPhone8 (iPhones only)
URL: thinkbroadband.com/download

Steps to reproduce:
  1. Launch Google Chrome
  2. Navigate to above webpage and tap on any sample file to download

Observed results: Download manager is displayed, but blue color progress bar indicator with zero percent loading status is displayed.
This is displayed even after going to a new tab and editing omnibox.

Expected results: Progress bar should't be displayed.

Good Version: 64.0.3282.85 #8a31e74
Bad Version: 64.0.3282.87 #7b3d320

Number of times you were able to reproduce: 5/5
Bug reproducible after clean install: Yes
Bug reproducible after clearing cache and cookies: Yes
Bug reproducible on Chrome Mobile on Android: NA
Bug reproducible on Safari/Firefox: Firefox: NA, Safari: NA
Bug reproducible on current stable build (App Version, iOS Version): M63 NO
Bug reproducible on the current beta channel build (App Version, iOS Version): M64 Yes

Link to video/image: https://drive.google.com/file/d/18ThGugPJLRhMcX1nrOj00t3Cdn41UfuK/view 
 
Cc: gambard@chromium.org sczs@chromium.org
Labels: ReleaseBlock-Stable M-64
Owner: kkhorimoto@chromium.org
Status: Assigned (was: Untriaged)
Most likely culprit: https://chromium-review.googlesource.com/c/chromium/src/+/841529
Eugene, do you have a good sample site that can trigger the download manager UI?  thinkbroadband.com/download isn't working for me.
Status: Started (was: Assigned)
file://123 will trigger download manager UI :)
Thanks Eugene and Srikanth!  I'm able to repro on ToT with the clean toolbar flag disabled, and am working on a fix now.
I've created crrev.com/c/874993 to fix this issue.  Since this is very late in the branch, we should consider what the best choice here should be.  Some options:

1) Land the CL and cherry-pick.  This solution has the greatest upside, since it will eliminate this bug for M64.  It's a 1-line change, and that change goes through |-updateToolbarState|, which was designed to be called repeatedly.  As such, adding a call here seems to be a minimal risk.  That being said, this is very late in the branch, and cherry-picking new changes may result in a different regression that will likely not be caught in time for the release.
2) Revert the CL that introduced the bug (crrev.com/c/841529).  This would reintroduce Issue 787795 (both the original bug and the secondary bug mentioned in comment 10).  The original bug where it's possible to load a page without a progress bar has potential security implications since users who are acclimated to this behavior could be susceptible to malicious pages that rewrite the DOM to look like a trusted page.  If the progress bar was not displayed for some page loads, this attack would require looking at the URL in the omnibox.
3) Don't cherry pick the new fix (crrev.com/c/87499), and leave the original fix (crrev.com/c/841529) on branch.  That would mean that this bug will NOT be fixed for M64.  That being said, I think that the security implications of having a hanging progress bar for download manager are far more benign than if we went with option (2).  Moreover, option (2) potentially could affect a wider range of page loads, as downloading files on iOS is a bit of an edge case.

I think that (1) is the best option because this seems like a low-risk change, and it would result in the best user experience.

Comment 8 by cma...@chromium.org, Jan 18 2018

Cc: srikanthg@chromium.org
I also prefer (1) not sure about others. Eugene, can you take a look?
Another option is not fixing this bug at all. (1) looks safe, but it indeed may result in a different (possibly more severe) regression.

Should we fix this bug for the respin instead?
Agreed.  While I'm fairly confident that the fix is low-risk, releasing it in a refresh would give us some time for more testing.  Since download manager is (at least in my browsing behavior) an edge case, this seems like a good combination of getting the fix for 64 while mitigating some of the risk of a late merge.
Project Member

Comment 11 by bugdroid1@chromium.org, Jan 18 2018

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

commit b0e6ca3348abcfa85501286b335844806e81c79e
Author: Kurt Horimoto <kkhorimoto@chromium.org>
Date: Thu Jan 18 22:17:39 2018

[iOS] Fix legacy toolbar progress bar for downloaded files.

The prior implementation of |-currentPageLoadStarted| directly called
|-startProgressBar| rather than going through |-updateToolbarState|.
|-updateToolbarState| changes the WebToolbarController's |loading|
property, and optionally calls |-startProgressBar| or
|-stopProgressBar| when the value changed.

When a file is downloaded, we receive |-currentPageLoadStarted| for
the started load, then immediatly receive |-updateToolbarState| when
the WebState::IsLoading() is reset to false (since the download manager
is native UI and isn't actually downloaded from the server).  Since
WebToolbarController's |loading| property was not getting reset to YES
in the |-currentPageLoadStarted| call, the |-updateToolbarState| call
with WebState::IsLoading() == false failed to hide the progress bar
since the value matches the WebToolbarController's previous |loading|
value.

This CL updates |-currentPageLoadStarted| to call |-updateToolbarState|
so that the internal property is consistent with the toolbar model and
the progress bar can be hidden correctly when the load finishes.

Bug:  802891 
Cq-Include-Trybots: master.tryserver.chromium.mac:ios-simulator-cronet;master.tryserver.chromium.mac:ios-simulator-full-configs
Change-Id: I6f88c501e8448752b1f4efaf61aef0e264953824
Reviewed-on: https://chromium-review.googlesource.com/874993
Reviewed-by: Sergio Collazos <sczs@chromium.org>
Reviewed-by: Eugene But <eugenebut@chromium.org>
Commit-Queue: Kurt Horimoto <kkhorimoto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#530296}
[modify] https://crrev.com/b0e6ca3348abcfa85501286b335844806e81c79e/ios/chrome/browser/ui/toolbar/web_toolbar_controller.mm

Labels: -ReleaseBlock-Stable
Status: Fixed (was: Started)
The fix has landed.  Per offline discussion, I'm removing the RBS label from this bug.  In the event that we need to disable the clean toolbar in M65, this fix will be on that branch and the progress bar will behave correctly for download manager.
Labels: Merge-TBD
[Auto-generated comment by a script] We noticed that this issue is targeted for M-64; it appears the fix may have landed after branch point, meaning a merge might be required. Please confirm if a merge is required here - if so add Merge-Request-64 label, otherwise remove Merge-TBD label. Thanks.
Thanks!
Labels: -Merge-TBD
Status: Verified (was: Fixed)
Issue verified 
Version: Chrome Canary 66.0.3329.0
Device: iPhone 8
iOS: 11.1.2

No blue color progress bar indicator on download manager is displayed
https://drive.google.com/open?id=17ZIV556ipw-p4N2Coo8wQNj3p1VVUOC3

Sign in to add a comment