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

Comments by non-members will not trigger notification emails to users who starred this issue.

Issue metadata

Status: Fixed
Owner:
Closed: Jun 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 1
Type: Feature

Blocked on:
issue 608750
issue 225901
issue 563684
issue 581164
issue 602403
issue 603330
issue 603670
issue 606627
issue 608549
issue 609314

Blocking:
issue 100529
issue 453357
issue 16940
issue 68196
issue 87441
issue 166179
issue 444696
issue 601077

Restricted
  • Only users with EditIssue permission may comment.



Sign in to add a comment

Support resuming interrupted downloads

Reported by brycesto...@gmail.com, Feb 12 2009

Issue description

Google Chrome 1.0.154.48
All other browsers: OK

Download a chromium build or any file.
Download the same file again.
Chrome does not tell you the file exists and does not ask if you would like to replace it, it just 
automatically puts a "1" at the end of it and downloads it again.

It should ask if you want replace the file or create a new download with a different name, or just 
adding 1 to the end of it.


 
Showing comments 129 - 228 of 228 Older
Project Member

Comment 130 by bugdroid1@chromium.org, May 17 2013

------------------------------------------------------------------------
r200719 | asanka@chromium.org | 2013-05-17T03:54:17.992610Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/test/mock_download_item.h?r1=200719&r2=200718&pathrev=200719
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_item_impl.cc?r1=200719&r2=200718&pathrev=200719
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_item_impl.h?r1=200719&r2=200718&pathrev=200719
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/browser/download_item.h?r1=200719&r2=200718&pathrev=200719

[Downloads] Add a CanResume() method to DownloadItem.

The method indicates whether a download can be resumed. I.e.  Calling
DownloadItem::Resume() is expected to do something. It will be used by
the UI when support for downloads resumption is added.

BUG= 7648 

Review URL: https://chromiumcodereview.appspot.com/14957002
------------------------------------------------------------------------
Cc: cbentzel@chromium.org
 Issue 157082  has been merged into this issue.
Project Member

Comment 132 by bugdroid1@chromium.org, May 23 2013

------------------------------------------------------------------------
r201883 | asanka@chromium.org | 2013-05-23T20:56:37.777859Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_manager_impl.cc?r1=201883&r2=201882&pathrev=201883
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_item_impl.cc?r1=201883&r2=201882&pathrev=201883
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_browsertest.cc?r1=201883&r2=201882&pathrev=201883

[Downloads] Remove intermediate files when no longer necessary.

When cancelling or removing an interrupted download, the associated
intermediate file should also be removed. That file is only necessary if
the download is going to be resumed.

BUG= 7648 
BUG= 196806 

Review URL: https://chromiumcodereview.appspot.com/14958002
------------------------------------------------------------------------
Project Member

Comment 133 by bugdroid1@chromium.org, Jun 5 2013

------------------------------------------------------------------------
r203780 | asanka@chromium.org | 2013-06-03T21:55:45.750383Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/chrome_download_manager_delegate_unittest.cc?r1=203780&r2=203779&pathrev=203780
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_target_determiner_delegate.h?r1=203780&r2=203779&pathrev=203780
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/chrome_download_manager_delegate.cc?r1=203780&r2=203779&pathrev=203780
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_target_determiner_unittest.cc?r1=203780&r2=203779&pathrev=203780
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_target_determiner.cc?r1=203780&r2=203779&pathrev=203780
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/browser/download_item.h?r1=203780&r2=203779&pathrev=203780
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_target_determiner.h?r1=203780&r2=203779&pathrev=203780
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_item_impl.cc?r1=203780&r2=203779&pathrev=203780
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/drive/download_handler.cc?r1=203780&r2=203779&pathrev=203780

[Downloads] Handle filename determination for resumed downloads.

Interrupted downloads that are being resumed will go through another
cycle of filename determination. This allows
ChromeDownloadManagerDelegate to properly handle path reservation and
Drive downloads during resumption.

TBR=joi
BUG= 7648 

Review URL: https://chromiumcodereview.appspot.com/14640020
------------------------------------------------------------------------
Project Member

Comment 134 by bugdroid1@chromium.org, Jun 6 2013

------------------------------------------------------------------------
r204526 | asanka@chromium.org | 2013-06-06T16:54:42.480487Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_item_impl.cc?r1=204526&r2=204525&pathrev=204526
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_item_impl.h?r1=204526&r2=204525&pathrev=204526
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/webui/downloads_dom_handler.cc?r1=204526&r2=204525&pathrev=204526
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_danger_prompt.cc?r1=204526&r2=204525&pathrev=204526
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_danger_prompt_browsertest.cc?r1=204526&r2=204525&pathrev=204526
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/browser/download_item.h?r1=204526&r2=204525&pathrev=204526
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/test/download_test_observer.cc?r1=204526&r2=204525&pathrev=204526
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_manager_impl_unittest.cc?r1=204526&r2=204525&pathrev=204526
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_shelf_context_menu.cc?r1=204526&r2=204525&pathrev=204526
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/test/mock_download_item.h?r1=204526&r2=204525&pathrev=204526

Use DownloadItem::IsDone to check for terminal downloads.

When downloads can be resumed, a download transitioning to INTERRUPTED
state is not necessarily entering a terminal state. Therefore, a
download being in IN_PROGRESS state is not a sufficient indicator of
whether a download may eventually complete. Use DownloadItem::IsDone()
to indicate this.

TBR=estade
BUG= 7648 

Review URL: https://chromiumcodereview.appspot.com/16007017
------------------------------------------------------------------------
Project Member

Comment 135 by bugdroid1@chromium.org, Jun 7 2013

------------------------------------------------------------------------
r204710 | asanka@chromium.org | 2013-06-07T04:55:19.874877Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_shelf_context_menu.cc?r1=204710&r2=204709&pathrev=204710
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_shelf_context_menu.h?r1=204710&r2=204709&pathrev=204710

[Downloads] Support resuming interrupted downloads from the downloads shelf.

The download shelf context menu will have a 'Resume' item for
interrupted downloads. This option is available if
'--enable-download-resumption' flag is enabled.

BUG= 7648 

Review URL: https://chromiumcodereview.appspot.com/14955004
------------------------------------------------------------------------
Project Member

Comment 136 by bugdroid1@chromium.org, Jun 8 2013

------------------------------------------------------------------------
r204997 | asanka@chromium.org | 2013-06-08T00:45:41.110629Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/resources/downloads/downloads.js?r1=204997&r2=204996&pathrev=204997
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/webui/downloads_dom_handler.cc?r1=204997&r2=204996&pathrev=204997

[Downloads] Support resuming interrupted downloads from the downloads page.

Interrupted downloads will have a 'Resume' action next to them if they
can be resumed. This option is available if
'--enable-download-resumption' flag is enabled.

BUG= 7648 

Review URL: https://chromiumcodereview.appspot.com/14958003
------------------------------------------------------------------------
Project Member

Comment 137 by bugdroid1@chromium.org, Jun 12 2013

------------------------------------------------------------------------
r205880 | asanka@chromium.org | 2013-06-12T18:31:36.321580Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_item_impl_unittest.cc?r1=205880&r2=205879&pathrev=205880
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_item_impl.cc?r1=205880&r2=205879&pathrev=205880

Allow continuation after download is interrupted before initial rename.

If the download was interrupted before target determination, we wouldn't
set the FullPath causing the download to be restarted when resumed. We
should set the Fullpath so that it can continue instead if possible.

BUG= 7648 

Review URL: https://chromiumcodereview.appspot.com/16693003
------------------------------------------------------------------------
Blocking: chromium:87441
Project Member

Comment 139 by bugdroid1@chromium.org, Jun 21 2013

------------------------------------------------------------------------
r207710 | asanka@chromium.org | 2013-06-21T05:15:59.521365Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_manager_impl.cc?r1=207710&r2=207709&pathrev=207710
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/browser/download_url_parameters.cc?r1=207710&r2=207709&pathrev=207710
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/browser/download_url_parameters.h?r1=207710&r2=207709&pathrev=207710

[Downloads] Remove RDH from DownloadUrlParameters.

A ResourceDispatcherHost* doesn't need to be passed in
DownloadUrlParameters since there's only one instance.

BUG= 7648 

Review URL: https://chromiumcodereview.appspot.com/16875007
------------------------------------------------------------------------
Project Member

Comment 140 by bugdroid1@chromium.org, Jun 21 2013

------------------------------------------------------------------------
r207711 | asanka@chromium.org | 2013-06-21T05:16:20.127659Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/test/download_test_observer.h?r1=207711&r2=207710&pathrev=207711
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_browsertest.cc?r1=207711&r2=207710&pathrev=207711
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/test/download_test_observer.cc?r1=207711&r2=207710&pathrev=207711

[Downloads] Make DownloadTestObserverTerminal condition on IsDone

The terminal state of a download is determined by DownloadItem::IsDone()
rather than watching for a download that has a state other than
IN_PROGRESS.

BUG= 7648 

Review URL: https://chromiumcodereview.appspot.com/17450008
------------------------------------------------------------------------
Project Member

Comment 141 by bugdroid1@chromium.org, Jul 3 2013

------------------------------------------------------------------------
r210052 | asanka@chromium.org | 2013-07-03T22:23:51.772853Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/test/test_file_error_injector.cc?r1=210052&r2=210051&pathrev=210052
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_browsertest.cc?r1=210052&r2=210051&pathrev=210052

[Downloads] Add more browser tests for resumption.

During downloads resumption, most of the legwork is done by the core
downloads code in content/browser/downloads. However, the
chrome/browser/download is also responsible for download filename
determination as well as prompting the user when necessary. These are
browser tests for testing resumption at the chrome/ level.

DownloadItemImpl modified to preserve the download interrupt reason
when resuming and also making sure that OnDownloadUpdated()
notifications are sent when the value of DownloadItem::CanResume()
changes.

TBR=joi
BUG= 7648 

Review URL: https://chromiumcodereview.appspot.com/17315009
------------------------------------------------------------------------
Labels: -M-29 M-31
Blockedon: chromium:225901
Project Member

Comment 144 by bugdroid1@chromium.org, Jul 30 2013

------------------------------------------------------------------------
r214461 | asanka@chromium.org | 2013-07-30T23:02:26.678733Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_resource_handler.cc?r1=214461&r2=214460&pathrev=214461
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_resource_handler.h?r1=214461&r2=214460&pathrev=214461
   M http://src.chromium.org/viewvc/chrome/trunk/src/tools/metrics/histograms/histograms.xml?r1=214461&r2=214460&pathrev=214461
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_manager_impl.cc?r1=214461&r2=214460&pathrev=214461
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_item_impl_unittest.cc?r1=214461&r2=214460&pathrev=214461
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_stats.cc?r1=214461&r2=214460&pathrev=214461
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_item_impl.cc?r1=214461&r2=214460&pathrev=214461
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_stats.h?r1=214461&r2=214460&pathrev=214461

[Downloads] Some UMA for downloads resumption.

* Count number of requests initiated due to resumption.

* Count downloads that have a strong validator and supports range
  requests, since those are candidates for partial resumption.

* Count downloads that are interrupted after the associated WebContents
  is destroyed.

BUG= 7648 

Review URL: https://chromiumcodereview.appspot.com/20609004
------------------------------------------------------------------------
Project Member

Comment 145 by bugdroid1@chromium.org, Aug 8 2013

------------------------------------------------------------------------
r216493 | asanka@chromium.org | 2013-08-08T23:53:21.876812Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/history/download_row.h?r1=216493&r2=216492&pathrev=216493
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/history/history_unittest.cc?r1=216493&r2=216492&pathrev=216493
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/History/history.27.sql?r1=216493&r2=216492&pathrev=216493
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/download-test1.lib.mock-http-headers?r1=216493&r2=216492&pathrev=216493
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_item_impl.cc?r1=216493&r2=216492&pathrev=216493
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_item_impl.h?r1=216493&r2=216492&pathrev=216493
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/browser/download_manager.h?r1=216493&r2=216492&pathrev=216493
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/test/mock_download_manager.cc?r1=216493&r2=216492&pathrev=216493
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_browsertest.cc?r1=216493&r2=216492&pathrev=216493
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/webui/downloads_dom_handler_browsertest.cc?r1=216493&r2=216492&pathrev=216493
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_item_factory.h?r1=216493&r2=216492&pathrev=216493
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/test/mock_download_manager.h?r1=216493&r2=216492&pathrev=216493
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_manager_impl_unittest.cc?r1=216493&r2=216492&pathrev=216493
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/history/history_database.cc?r1=216493&r2=216492&pathrev=216493
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_manager_impl.cc?r1=216493&r2=216492&pathrev=216493
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/api/downloads/downloads_api_browsertest.cc?r1=216493&r2=216492&pathrev=216493
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_manager_impl.h?r1=216493&r2=216492&pathrev=216493
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/history/download_database.cc?r1=216493&r2=216492&pathrev=216493
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/history/download_database.h?r1=216493&r2=216492&pathrev=216493
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_history_unittest.cc?r1=216493&r2=216492&pathrev=216493
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_history.cc?r1=216493&r2=216492&pathrev=216493
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/history/download_row.cc?r1=216493&r2=216492&pathrev=216493

[Downloads] Persist ETag and Last-Modified headers.

These response headers are used for partial download resumption. If an
interrupted download had a valid strong ETag header and the server
supports byte range requests, then a subsequent downloads resumption
attempt could fetch part of a resource instead of the entire resource.

While the Last-Modified header is also used for validation currently,
its use will be discontinued since a matching Last-Modifed value does
not imply byte-wise equivalence.

Without persisting these headers, partial downloads resumption will
only work for downloads that are interrupted and resumed during the
same browser session.

BUG= 7648 

Review URL: https://chromiumcodereview.appspot.com/20536003
------------------------------------------------------------------------
Labels: -M-31 M-32

Comment 147 by mef@chromium.org, Oct 7 2013

Blocking: chromium:304696
Blocking: -chromium:304696
Labels: -M-32 M-33 MovedFrom-32
Moving all non essential bugs to the next Milestone.
Project Member

Comment 150 by bugdroid1@chromium.org, Nov 22 2013

Project Member

Comment 151 by bugdroid1@chromium.org, Nov 26 2013

------------------------------------------------------------------------
r237349 | asanka@chromium.org | 2013-11-26T16:57:52.593541Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/tools/testserver/testserver.py?r1=237349&r2=237348&pathrev=237349
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_resource_handler.cc?r1=237349&r2=237348&pathrev=237349

[Downloads] Don't store or use validators unless they are strong.

ETag and Last-Modified headers shouldn't be used unless they imply
byte-wise equivalence. While RFC 2616 states that a client 'MAY' use them
anyway, we are going to be conservative and only use them if they are
strong.

BUG= 7648 

Review URL: https://codereview.chromium.org/67883007
------------------------------------------------------------------------
Asanka, is this on track for M33 ? If not can you punt it to the next milestone ?
Labels: -M-33 M-34
Kicking the can down the road - asanka's been tackling some other issues lately.
Project Member

Comment 154 by bugdroid1@chromium.org, Dec 13 2013

------------------------------------------------------------------------
r240773 | asanka@chromium.org | 2013-12-13T22:20:27.719042Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_browsertest.cc?r1=240773&r2=240772&pathrev=240773
   M http://src.chromium.org/viewvc/chrome/trunk/src/tools/metrics/histograms/histograms.xml?r1=240773&r2=240772&pathrev=240773
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/tools/testserver/testserver.py?r1=240773&r2=240772&pathrev=240773
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_manager_impl.cc?r1=240773&r2=240772&pathrev=240773
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_stats.cc?r1=240773&r2=240772&pathrev=240773
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_item_impl.cc?r1=240773&r2=240772&pathrev=240773
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_stats.h?r1=240773&r2=240772&pathrev=240773
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_item_impl.h?r1=240773&r2=240772&pathrev=240773

[Downloads] Update origin info after each response.

When a download is resumed, a new URL request is sent out. The response
received for this request may contain new ETag and Last-Modified
information which should be used for subsequent resumption attempts.
Otherwise if a resource changes (along with the corresponding ETag)
subsequent partial resumption attempts will all fail even if it should
have succeeded.

BUG= 7648 

Review URL: https://codereview.chromium.org/74523002
------------------------------------------------------------------------
Project Member

Comment 155 by bugdroid1@chromium.org, Jan 14 2014

------------------------------------------------------------------------
r244657 | asanka@chromium.org | 2014-01-14T06:14:56.231104Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/plugins/plugin_installer.h?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/api/image_writer_private/write_from_url_operation.cc?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_interrupt_reasons_impl.cc?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_net_log_parameters.cc?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/webstore_installer.cc?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/drag_download_file.cc?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/webstore_installer.h?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/android_webview/browser/renderer_host/aw_resource_dispatcher_host_delegate.cc?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_item_model.cc?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_resource_handler.h?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/indexed_db/indexed_db_internals_ui.h?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/api/downloads/downloads_api.cc?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/browser/download_interrupt_reason_values.h?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/api/downloads/downloads_api_browsertest.cc?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/history/history_unittest.cc?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/api/image_writer_private/write_from_url_operation.h?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/browser/resource_dispatcher_host.h?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_item_impl.cc?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_item_model_unittest.cc?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_item_impl.h?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/loader/resource_dispatcher_host_impl.cc?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_resource_handler.cc?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/loader/resource_dispatcher_host_impl.h?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_browsertest.cc?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/indexed_db/indexed_db_internals_ui.cc?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/test/download_test_observer.cc?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_manager_impl.cc?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/test/download_test_observer.h?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/api/downloads/downloads_api.h?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/browser/download_url_parameters.h?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/browser/download_interrupt_reasons.h?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/downloads.idl?r1=244657&r2=244656&pathrev=244657
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/plugins/plugin_installer.cc?r1=244657&r2=244656&pathrev=244657

[Download] Return DownloadInterruptReason from OnStartedCallback

DownloadUrlParameters::OnStartedCallback is invoked when the server
response is received for a newly started download. If there's an error,
this callback used to receive a net::Error indicating why.

This CL changes the return value to a DownloadInterruptReason so that
the callback can indicate error conditions that affect downloads that
aren't considered errors at the network layer. Also, it avoids having to
call DownloadManager::Start() when the response indicates that a
download is not possible.

Currently downloads that fail to start return a net::Error, but those
that fail after starting return a DownloadInterruptReason. With this
change, all downloads will return a DownloadInterruptReason regardless
of when the download is interrupted.

BUG= 7648 

Review URL: https://codereview.chromium.org/114193009
------------------------------------------------------------------------

Comment 156 Deleted

Labels: -M-35 -MovedFrom-34
Labels: -Pri-1 -M-34 MovedFrom-34 Pri-2 M-35
This issue is Pri-1 but has already been moved once, therefore lowering to Pri-2 and moving to next milesone.
Labels: -M-35 MovedFrom-35
This issue has already been moved once and is lower than Priority 1,therefore removing mstone.
Project Member

Comment 160 by bugdroid1@chromium.org, Apr 23 2014

Labels: merge-merged-git-svn
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8ab0398d439a4b331f2aa654602d2b16d4b92b2e

commit 8ab0398d439a4b331f2aa654602d2b16d4b92b2e
Author: asanka@chromium.org <asanka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Wed Apr 23 22:15:12 2014 +0000

Use DownloadManager to initiate downloads from PluginInstaller.

PluginInstaller was invoking ResourceDispatcherHost::BeginDownload
directly to initiate downloads. This CL changes the initiation path to
use DownloadManager instead. DM already lives on the UI thread and
implements the logic needed to construct the URLRequest for the download
and invoke RDH on the IO thread.

Using DownloadManager for initiating downloads from the UI thread
reduces code duplication and decreases the callers of
ResourceDispatcherHost::BeginDownload. This removes one more obstacle in
the way of decoupling programmatic downloads from
ResourceDispatcherHost.

BUG= 7648 
BUG= 225901 

Review URL: https://codereview.chromium.org/230163002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@265754 0039d316-1c4b-4281-b951-d872f2087c98


Project Member

Comment 161 by bugdroid1@chromium.org, Apr 23 2014

------------------------------------------------------------------
r265754 | asanka@chromium.org | 2014-04-23T22:15:12.623676Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/plugins/plugin_installer_unittest.cc?r1=265754&r2=265753&pathrev=265754
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/plugins/plugin_installer.cc?r1=265754&r2=265753&pathrev=265754
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/plugins/plugin_installer.h?r1=265754&r2=265753&pathrev=265754
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_tests_unit.gypi?r1=265754&r2=265753&pathrev=265754

Use DownloadManager to initiate downloads from PluginInstaller.

PluginInstaller was invoking ResourceDispatcherHost::BeginDownload
directly to initiate downloads. This CL changes the initiation path to
use DownloadManager instead. DM already lives on the UI thread and
implements the logic needed to construct the URLRequest for the download
and invoke RDH on the IO thread.

Using DownloadManager for initiating downloads from the UI thread
reduces code duplication and decreases the callers of
ResourceDispatcherHost::BeginDownload. This removes one more obstacle in
the way of decoupling programmatic downloads from
ResourceDispatcherHost.

BUG= 7648 
BUG= 225901 

Review URL: https://codereview.chromium.org/230163002
-----------------------------------------------------------------
Project Member

Comment 162 by bugdroid1@chromium.org, May 15 2014

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

commit 9dd188fec7accfa360e67b8f2ba1b1c4ae923044
Author: asanka@chromium.org <asanka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Thu May 15 18:35:20 2014

[Downloads] Ask DownloadHistory if a download was from history.

Observers of downloads currently assume that any download that is
created in the IN_PROGRESS state must be a new download, while all
others were restored from history. Pending changes to how downloads are
created in response to failed requests will mean that this assumption
will no longer hold.

This CL adds a WasRestoredFromHistory() method to DownloadHistory which
determines whether a given download was restored from history.

BUG= 7648 

Review URL: https://codereview.chromium.org/230103002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@270749 0039d316-1c4b-4281-b951-d872f2087c98


Project Member

Comment 163 by bugdroid1@chromium.org, May 15 2014

------------------------------------------------------------------
r270749 | asanka@chromium.org | 2014-05-15T18:35:20.894167Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_item_model.cc?r1=270749&r2=270748&pathrev=270749
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_ui_controller_unittest.cc?r1=270749&r2=270748&pathrev=270749
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_history_unittest.cc?r1=270749&r2=270748&pathrev=270749
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_item_model.h?r1=270749&r2=270748&pathrev=270749
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_service.cc?r1=270749&r2=270748&pathrev=270749
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_ui_controller.cc?r1=270749&r2=270748&pathrev=270749
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_history.cc?r1=270749&r2=270748&pathrev=270749
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_service.h?r1=270749&r2=270748&pathrev=270749
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_ui_controller.h?r1=270749&r2=270748&pathrev=270749
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_browsertest.cc?r1=270749&r2=270748&pathrev=270749
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/download/download_history.h?r1=270749&r2=270748&pathrev=270749

[Downloads] Ask DownloadHistory if a download was from history.

Observers of downloads currently assume that any download that is
created in the IN_PROGRESS state must be a new download, while all
others were restored from history. Pending changes to how downloads are
created in response to failed requests will mean that this assumption
will no longer hold.

This CL adds a WasRestoredFromHistory() method to DownloadHistory which
determines whether a given download was restored from history.

BUG= 7648 

Review URL: https://codereview.chromium.org/230103002
-----------------------------------------------------------------
Project Member

Comment 164 by bugdroid1@chromium.org, May 20 2014

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

commit 938f37f79f5d74702420e48210afecfdb210f198
Author: asanka@chromium.org <asanka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Tue May 20 06:41:21 2014

drive::DownloadHandler should query DownloadHistory.

The drive::DownloadHandler was using the assumption that all
non-IN_PROGRESS downloads that are created were restored from history.
This is not a safe assumption.

Instead query the DownloadHistory to determine whether a new download
was restored from history or not.

Depends on https://codereview.chromium.org/230103002/ which adds a
WasDownloadRestoredFromHistory method to DownloadHistory.

BUG= 7648 

Review URL: https://codereview.chromium.org/230133002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@271595 0039d316-1c4b-4281-b951-d872f2087c98


Project Member

Comment 165 by bugdroid1@chromium.org, May 20 2014

------------------------------------------------------------------
r271595 | asanka@chromium.org | 2014-05-20T06:41:21.306358Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/drive/download_handler.cc?r1=271595&r2=271594&pathrev=271595

drive::DownloadHandler should query DownloadHistory.

The drive::DownloadHandler was using the assumption that all
non-IN_PROGRESS downloads that are created were restored from history.
This is not a safe assumption.

Instead query the DownloadHistory to determine whether a new download
was restored from history or not.

Depends on https://codereview.chromium.org/230103002/ which adds a
WasDownloadRestoredFromHistory method to DownloadHistory.

BUG= 7648 

Review URL: https://codereview.chromium.org/230133002
-----------------------------------------------------------------
 Issue 432397  has been merged into this issue.

Comment 167 by wtc@chromium.org, Nov 12 2014

Cc: -wtc@chromium.org
Cc: nyerramilli@chromium.org
 Issue 445216  has been merged into this issue.
 Issue 166179  has been merged into this issue.
Cc: gavinp@chromium.org krisr@chromium.org
 Issue 16940  has been merged into this issue.
Blocking: chromium:453357
Labels: -Pri-2 Pri-1 M-46
Restoring the original priority and setting to a near term milestone.
I don't know if M-46 is realistic (changes are pretty substantial for long-term engineering) but this has been reactivated as a bug to focus on.
Cc: -rvargas@chromium.org
Project Member

Comment 175 by bugdroid1@chromium.org, Dec 2 2015

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

commit eaa4e86fe7d9154bde31181108180480e1d603c1
Author: asanka <asanka@chromium.org>
Date: Wed Dec 02 19:32:05 2015

Use If-Range instead of If-Match/If-Unmodified-Since for partial requests.

If-Range can shortcut partial resumption requests by having the server
respond with the entire entity if there's a validator mismatch. This
cuts down resumptions by one roundtrip.

The If-Range has been in use by HttpCacheTransaction successfully and it
is not believed that availability of support is a concern.

R=rdsmith@chromium.org,svaldez@chromium.org,mkearney@chromium.org,davidben@chromium.org,isherman@chromium.org
BUG= 7648 

Review URL: https://codereview.chromium.org/1444253003

Cr-Commit-Position: refs/heads/master@{#362771}

[modify] http://crrev.com/eaa4e86fe7d9154bde31181108180480e1d603c1/chrome/browser/download/download_item_model.cc
[modify] http://crrev.com/eaa4e86fe7d9154bde31181108180480e1d603c1/chrome/browser/download/download_item_model_unittest.cc
[modify] http://crrev.com/eaa4e86fe7d9154bde31181108180480e1d603c1/chrome/common/extensions/api/downloads.idl
[modify] http://crrev.com/eaa4e86fe7d9154bde31181108180480e1d603c1/content/browser/download/download_browsertest.cc
[modify] http://crrev.com/eaa4e86fe7d9154bde31181108180480e1d603c1/content/browser/download/download_item_impl.cc
[modify] http://crrev.com/eaa4e86fe7d9154bde31181108180480e1d603c1/content/browser/download/download_manager_impl.cc
[modify] http://crrev.com/eaa4e86fe7d9154bde31181108180480e1d603c1/content/browser/download/download_resource_handler.cc
[modify] http://crrev.com/eaa4e86fe7d9154bde31181108180480e1d603c1/content/public/browser/download_interrupt_reason_values.h
[modify] http://crrev.com/eaa4e86fe7d9154bde31181108180480e1d603c1/net/tools/testserver/testserver.py
[modify] http://crrev.com/eaa4e86fe7d9154bde31181108180480e1d603c1/tools/metrics/histograms/histograms.xml

Project Member

Comment 176 by bugdroid1@chromium.org, Dec 4 2015

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

commit c7bf9bf1624d05928bbd4ee58d2c5e377fd6cd04
Author: asanka <asanka@chromium.org>
Date: Fri Dec 04 03:53:08 2015

Stop using SpawnedTestServer in DownloadContentTest.*

This CL introduces TestDownloadRequestHandler, a URLRequestJob based
interceptor that can be used to mock URLRequest behavior. The new
request handler supports simulating network and server errors, and is a
replacement for the testserver.py based test setup //content is
currently using to test download resumption.

Moving away from SpawnedTestServer allows us to re-enable the tests on
Android.

R=rdsmith@chromium.org,svaldez@chromium.org,sky@chromium.org
BUG= 215894 
BUG= 493347 
BUG= 7648 

Review URL: https://codereview.chromium.org/1203983004

Cr-Commit-Position: refs/heads/master@{#363108}

[modify] http://crrev.com/c7bf9bf1624d05928bbd4ee58d2c5e377fd6cd04/build/android/pylib/gtest/filter/content_browsertests_disabled
[modify] http://crrev.com/c7bf9bf1624d05928bbd4ee58d2c5e377fd6cd04/content/browser/download/download_browsertest.cc
[modify] http://crrev.com/c7bf9bf1624d05928bbd4ee58d2c5e377fd6cd04/content/content_tests.gypi
[add] http://crrev.com/c7bf9bf1624d05928bbd4ee58d2c5e377fd6cd04/content/public/test/test_download_request_handler.cc
[add] http://crrev.com/c7bf9bf1624d05928bbd4ee58d2c5e377fd6cd04/content/public/test/test_download_request_handler.h
[modify] http://crrev.com/c7bf9bf1624d05928bbd4ee58d2c5e377fd6cd04/net/test/embedded_test_server/default_handlers.cc
[modify] http://crrev.com/c7bf9bf1624d05928bbd4ee58d2c5e377fd6cd04/net/tools/testserver/testserver.py

Labels: -M-46 M-49
Moving the milestone to M49 where we plan to support a limited form of resumable downloads
Project Member

Comment 180 by bugdroid1@chromium.org, Dec 12 2015

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

commit b9f748afd86a5111c4ab4765176e15f5ff9030bc
Author: asanka <asanka@chromium.org>
Date: Sat Dec 12 04:14:12 2015

Cleanup DownloadItemImpl unittests.

Move test DownloadObserver out of test fixture and rename a few methods.

R=svaldez@chromium.org
BUG= 7648 

Review URL: https://codereview.chromium.org/1518093002

Cr-Commit-Position: refs/heads/master@{#364898}

[modify] http://crrev.com/b9f748afd86a5111c4ab4765176e15f5ff9030bc/content/browser/download/download_item_impl_unittest.cc

Project Member

Comment 181 by bugdroid1@chromium.org, Dec 15 2015

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

commit d738ccdbf70dff7b1aef51a7b01b084e27088d58
Author: asanka <asanka@chromium.org>
Date: Tue Dec 15 05:09:34 2015

[Downloads] Test both download resumption code paths.

Download resumption can take two different code paths depending on
whether the WebContents that initiated the download is still around when
the download is resumed or not. Make our tests go through both code
paths based on a parameterized test.

R=svaldez@chromium.org
BUG= 7648 

Review URL: https://codereview.chromium.org/1525753002

Cr-Commit-Position: refs/heads/master@{#365153}

[modify] http://crrev.com/d738ccdbf70dff7b1aef51a7b01b084e27088d58/content/browser/download/download_browsertest.cc

The following revision should've referred to this bug but was fat fingered into 7468 instead:
  https://chromium.googlesource.com/chromium/src.git/+/6ac869dac34c217329d8a23c8cb4f5472e0758df

commit 6ac869dac34c217329d8a23c8cb4f5472e0758df
Author: asanka <asanka@chromium.org>
Date: Tue Dec 15 18:47:09 2015

[Downloads] Use final URL for resumption.

If the initial download request contains multiple redirects, then the
resumption attempt should only use the final URL. Strong validators are
only valid when used against the same URL.

R=svaldez@chromium.org
BUG= 7468 

Review URL: https://codereview.chromium.org/1522893004

Cr-Commit-Position: refs/heads/master@{#365295}

[modify] http://crrev.com/6ac869dac34c217329d8a23c8cb4f5472e0758df/content/browser/download/download_item_impl.cc
[modify] http://crrev.com/6ac869dac34c217329d8a23c8cb4f5472e0758df/content/browser/download/download_item_impl_unittest.cc

Project Member

Comment 183 by bugdroid1@chromium.org, Dec 19 2015

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

commit dc5a2994948c060ab7c3a584107fa7ba21ee1486
Author: asanka <asanka@chromium.org>
Date: Sat Dec 19 04:45:39 2015

Enable download resumption by default.

BUG= 7648 

Review URL: https://codereview.chromium.org/1538933002

Cr-Commit-Position: refs/heads/master@{#366264}

[modify] http://crrev.com/dc5a2994948c060ab7c3a584107fa7ba21ee1486/chrome/browser/about_flags.cc
[modify] http://crrev.com/dc5a2994948c060ab7c3a584107fa7ba21ee1486/chrome/browser/download/download_browsertest.cc
[modify] http://crrev.com/dc5a2994948c060ab7c3a584107fa7ba21ee1486/chrome/browser/download/download_shelf_context_menu.cc
[modify] http://crrev.com/dc5a2994948c060ab7c3a584107fa7ba21ee1486/chrome/browser/download/notification/download_notification_browsertest.cc
[modify] http://crrev.com/dc5a2994948c060ab7c3a584107fa7ba21ee1486/chrome/browser/extensions/api/downloads/downloads_api_browsertest.cc
[modify] http://crrev.com/dc5a2994948c060ab7c3a584107fa7ba21ee1486/content/browser/download/download_browsertest.cc
[modify] http://crrev.com/dc5a2994948c060ab7c3a584107fa7ba21ee1486/content/browser/download/download_item_impl.cc
[modify] http://crrev.com/dc5a2994948c060ab7c3a584107fa7ba21ee1486/content/browser/download/download_item_impl_unittest.cc
[modify] http://crrev.com/dc5a2994948c060ab7c3a584107fa7ba21ee1486/content/public/common/content_features.cc
[modify] http://crrev.com/dc5a2994948c060ab7c3a584107fa7ba21ee1486/content/public/common/content_features.h
[modify] http://crrev.com/dc5a2994948c060ab7c3a584107fa7ba21ee1486/content/public/common/content_switches.cc
[modify] http://crrev.com/dc5a2994948c060ab7c3a584107fa7ba21ee1486/content/public/common/content_switches.h

Project Member

Comment 184 by bugdroid1@chromium.org, Dec 21 2015

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

commit 64114156487081d877b793d3a501a8658743141d
Author: asanka <asanka@chromium.org>
Date: Mon Dec 21 21:28:49 2015

[Downloads] Factor out request handling logic between DRH and UD.

DownloadResourceHandler and UrlDownloader both have a lot in common since they
are both responsible for driving a URL request. The only difference being that
DRH is written to be a part of the ResourceLoader stack, while UrlDownloader
drives a URLRequest on its own. This CL factors out the common bits in both so
that upcoming fixes to downloads resumption can be made and tested in one
location.

R=svaldez@chromium.org
BUG= 7648 
BUG= 225901 

Review URL: https://codereview.chromium.org/1533583002

Cr-Commit-Position: refs/heads/master@{#366459}

[modify] http://crrev.com/64114156487081d877b793d3a501a8658743141d/content/browser/download/download_browsertest.cc
[modify] http://crrev.com/64114156487081d877b793d3a501a8658743141d/content/browser/download/download_create_info.cc
[modify] http://crrev.com/64114156487081d877b793d3a501a8658743141d/content/browser/download/download_create_info.h
[modify] http://crrev.com/64114156487081d877b793d3a501a8658743141d/content/browser/download/download_manager_impl.cc
[modify] http://crrev.com/64114156487081d877b793d3a501a8658743141d/content/browser/download/download_manager_impl_unittest.cc
[modify] http://crrev.com/64114156487081d877b793d3a501a8658743141d/content/browser/download/download_request_core.cc
[modify] http://crrev.com/64114156487081d877b793d3a501a8658743141d/content/browser/download/download_request_core.h
[modify] http://crrev.com/64114156487081d877b793d3a501a8658743141d/content/browser/download/download_request_handle.cc
[modify] http://crrev.com/64114156487081d877b793d3a501a8658743141d/content/browser/download/download_request_handle.h
[modify] http://crrev.com/64114156487081d877b793d3a501a8658743141d/content/browser/download/download_resource_handler.cc
[modify] http://crrev.com/64114156487081d877b793d3a501a8658743141d/content/browser/download/download_resource_handler.h
[modify] http://crrev.com/64114156487081d877b793d3a501a8658743141d/content/browser/download/url_downloader.cc
[modify] http://crrev.com/64114156487081d877b793d3a501a8658743141d/content/browser/download/url_downloader.h
[add] http://crrev.com/64114156487081d877b793d3a501a8658743141d/content/test/data/download/gzip-content.gz
[add] http://crrev.com/64114156487081d877b793d3a501a8658743141d/content/test/data/download/gzip-content.gz.mock-http-headers

Project Member

Comment 185 by bugdroid1@chromium.org, Dec 22 2015

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

commit ad29c15e3115a256cec6ee0ab0ba3138ef087569
Author: asanka <asanka@chromium.org>
Date: Tue Dec 22 04:33:08 2015

[Download] Treat RESUMING_INTERNAL as IN_PROGRESS in DownloadItem.

The RESUMING_INTERNAL state is used to indicate that the DownloadItem
has commenced a resumption attempt. The DownloadItem will remain in this
state until the network request receives a response.

Formerly, we treated this internal state as INTERRUPTED for all entities
that are observing the download item, including the UI. However, in
retrospect, this doesn't make sense and prevents the DownloadItem from
cleanly handling cases where it needs to transition back to an
interrupted state following a resumption attempt. In the latter case,
the download would otherwise try to transition from INTERRUPTED ->
INTERRUPTED which doesn't make a whole lot of sense to an outside
observer.

In addition, keeping the download in the INTERRUPTED state prevents an
outside observer from being able to cleanly tell when a resumption
attempt has begun. Furthermore, the INTERRUPTED state exhibited while an
automatic resumption is being attempted is not actionable to all outside
observers.

To rectify these, this change makes the RESUMING_INTERNAL state be
visible to external observers as IN_PROGRESS.

BUG= 7648 
R=svaldez@chromium.org

Review URL: https://codereview.chromium.org/1544653002

Cr-Commit-Position: refs/heads/master@{#366542}

[modify] http://crrev.com/ad29c15e3115a256cec6ee0ab0ba3138ef087569/content/browser/download/download_item_impl.cc
[modify] http://crrev.com/ad29c15e3115a256cec6ee0ab0ba3138ef087569/content/browser/download/download_item_impl_unittest.cc
[modify] http://crrev.com/ad29c15e3115a256cec6ee0ab0ba3138ef087569/content/browser/download/download_manager_impl.cc

Project Member

Comment 186 by bugdroid1@chromium.org, Dec 22 2015

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

commit 5a45da8d4a87ffc6100ab8b684f3ad2eaef639b4
Author: noel <noel@chromium.org>
Date: Tue Dec 22 09:26:01 2015

Revert of [Download] Treat RESUMING_INTERNAL as IN_PROGRESS in DownloadItem. (patchset #2 id:20001 of https://codereview.chromium.org/1544653002/ )

Reason for revert:
DownloadTest.Resumption_Automatic began failing in browser_tests
on Windows-XP-SP3 after this patch landed. See:

https://build.chromium.org/p/chromium.win/builders/XP%20Tests%20%281%29/builds/42034

Reverting to see if we can green the chromium tree.

Original issue's description:
> [Download] Treat RESUMING_INTERNAL as IN_PROGRESS in DownloadItem.
>
> The RESUMING_INTERNAL state is used to indicate that the DownloadItem
> has commenced a resumption attempt. The DownloadItem will remain in this
> state until the network request receives a response.
>
> Formerly, we treated this internal state as INTERRUPTED for all entities
> that are observing the download item, including the UI. However, in
> retrospect, this doesn't make sense and prevents the DownloadItem from
> cleanly handling cases where it needs to transition back to an
> interrupted state following a resumption attempt. In the latter case,
> the download would otherwise try to transition from INTERRUPTED ->
> INTERRUPTED which doesn't make a whole lot of sense to an outside
> observer.
>
> In addition, keeping the download in the INTERRUPTED state prevents an
> outside observer from being able to cleanly tell when a resumption
> attempt has begun. Furthermore, the INTERRUPTED state exhibited while an
> automatic resumption is being attempted is not actionable to all outside
> observers.
>
> To rectify these, this change makes the RESUMING_INTERNAL state be
> visible to external observers as IN_PROGRESS.
>
> BUG= 7648 
> R=svaldez@chromium.org
>
> Committed: https://crrev.com/ad29c15e3115a256cec6ee0ab0ba3138ef087569
> Cr-Commit-Position: refs/heads/master@{#366542}

TBR=svaldez@chromium.org,asanka@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= 7648 

Review URL: https://codereview.chromium.org/1544743003

Cr-Commit-Position: refs/heads/master@{#366574}

[modify] http://crrev.com/5a45da8d4a87ffc6100ab8b684f3ad2eaef639b4/content/browser/download/download_item_impl.cc
[modify] http://crrev.com/5a45da8d4a87ffc6100ab8b684f3ad2eaef639b4/content/browser/download/download_item_impl_unittest.cc
[modify] http://crrev.com/5a45da8d4a87ffc6100ab8b684f3ad2eaef639b4/content/browser/download/download_manager_impl.cc

Project Member

Comment 187 by bugdroid1@chromium.org, Dec 22 2015

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

commit fbf8cb0e546cd5d20d660a63c8cf36c38e38e680
Author: asanka <asanka@chromium.org>
Date: Tue Dec 22 21:20:07 2015

[download] Make DownloadItemObserver be owned by DownloadItem.

Currently DownloadPathRerservationTracker creates a self owned
DownloadItem::Observer implementation called DownloadItemObserver. Make
this class be owned by DownloadItem instead via the SupportsUserData
interface.

By itself this change doesn't buy us much. However, when DownloadItems
start automatically resuming from interruptions without changing the
externally visible state, this ownership would automatically get us
lifetime managment as well as a guarantee that only one
DownloadItemObserver can exist per DownloadItem.

BUG= 7648 

Review URL: https://codereview.chromium.org/1542063003

Cr-Commit-Position: refs/heads/master@{#366654}

[modify] http://crrev.com/fbf8cb0e546cd5d20d660a63c8cf36c38e38e680/chrome/browser/download/download_path_reservation_tracker.cc

Project Member

Comment 188 by bugdroid1@chromium.org, Dec 22 2015

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

commit f13c2a3e3ed93b92dc92e5e9accc7e9fb9470bb3
Author: asanka <asanka@chromium.org>
Date: Tue Dec 22 21:59:28 2015

[download] DownloadTest.Resumption_Automatic should check final path.

Automatic resumption stresses the download target determination in ways
that regular resumption doesn't. Add a check for Resumption_Automatic
test to verify that the correct target path is determined.

R=svaldez@chromium.org
BUG= 7648 

Review URL: https://codereview.chromium.org/1549573002

Cr-Commit-Position: refs/heads/master@{#366664}

[modify] http://crrev.com/f13c2a3e3ed93b92dc92e5e9accc7e9fb9470bb3/chrome/browser/download/download_browsertest.cc

Project Member

Comment 189 by bugdroid1@chromium.org, Dec 22 2015

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

commit 0af68969edff080ce4298756432341b6cd7ddc5d
Author: asanka <asanka@chromium.org>
Date: Tue Dec 22 23:08:05 2015

[Download] Treat RESUMING_INTERNAL as IN_PROGRESS in DownloadItem.

The RESUMING_INTERNAL state is used to indicate that the DownloadItem
has commenced a resumption attempt. The DownloadItem will remain in this
state until the network request receives a response.

Formerly, we treated this internal state as INTERRUPTED for all entities
that are observing the download item, including the UI. However, in
retrospect, this doesn't make sense and prevents the DownloadItem from
cleanly handling cases where it needs to transition back to an
interrupted state following a resumption attempt. In the latter case,
the download would otherwise try to transition from INTERRUPTED ->
INTERRUPTED which doesn't make a whole lot of sense to an outside
observer.

In addition, keeping the download in the INTERRUPTED state prevents an
outside observer from being able to cleanly tell when a resumption
attempt has begun. Furthermore, the INTERRUPTED state exhibited while an
automatic resumption is being attempted is not actionable to all outside
observers.

To rectify these, this change makes the RESUMING_INTERNAL state be
visible to external observers as IN_PROGRESS.

BUG= 7648 
R=svaldez@chromium.org

Committed: https://crrev.com/ad29c15e3115a256cec6ee0ab0ba3138ef087569
Cr-Commit-Position: refs/heads/master@{#366542}

Reverted due to failure in XP bots.
Reverted: https://crrev.com/5a45da8d4a87ffc6100ab8b684f3ad2eaef639b4
Cr-Commit-Position: refs/heads/master@{#366574}

Review URL: https://codereview.chromium.org/1544653002

Cr-Commit-Position: refs/heads/master@{#366681}

[modify] http://crrev.com/0af68969edff080ce4298756432341b6cd7ddc5d/content/browser/download/download_item_impl.cc
[modify] http://crrev.com/0af68969edff080ce4298756432341b6cd7ddc5d/content/browser/download/download_item_impl_unittest.cc
[modify] http://crrev.com/0af68969edff080ce4298756432341b6cd7ddc5d/content/browser/download/download_manager_impl.cc

Blockedon: chromium:563684
Project Member

Comment 191 by bugdroid1@chromium.org, Jan 19 2016

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

commit 3e0b9d7839072b59ac19110e1e6666b93716ed41
Author: asanka <asanka@chromium.org>
Date: Tue Jan 19 17:49:11 2016

[Downloads] Mark download resumption as disabled by default.

Feature state will be controlled via a server-side field trial.

BUG= 7648 
BUG= 579108 

Review URL: https://codereview.chromium.org/1589133003

Cr-Commit-Position: refs/heads/master@{#370138}

[modify] http://crrev.com/3e0b9d7839072b59ac19110e1e6666b93716ed41/content/public/common/content_features.cc

Project Member

Comment 192 by bugdroid1@chromium.org, Jan 19 2016

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

commit b225970e1fc1b5464f593c3763db297b644d4400
Author: qinmin <qinmin@chromium.org>
Date: Tue Jan 19 21:40:41 2016

Make download resumption a user flag on android

This allows us to easily test the feature on android

BUG= 7648 

Review URL: https://codereview.chromium.org/1603153003

Cr-Commit-Position: refs/heads/master@{#370194}

[modify] http://crrev.com/b225970e1fc1b5464f593c3763db297b644d4400/chrome/browser/about_flags.cc

Project Member

Comment 193 by bugdroid1@chromium.org, Jan 20 2016

Labels: merge-merged-2623
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5071e949073b5a4007c8a59163ed0bd32b8ff742

commit 5071e949073b5a4007c8a59163ed0bd32b8ff742
Author: Asanka Herath <asanka@chromium.org>
Date: Wed Jan 20 17:53:30 2016

[Merge M49] [Downloads] Mark download resumption as disabled by default.

Feature state will be controlled via a server-side field trial.

BUG= 7648 
BUG= 579108 

Review URL: https://codereview.chromium.org/1589133003

Cr-Commit-Position: refs/heads/master@{#370138}
(cherry picked from commit 3e0b9d7839072b59ac19110e1e6666b93716ed41)

Review URL: https://codereview.chromium.org/1609333002 .

Cr-Commit-Position: refs/branch-heads/2623@{#22}
Cr-Branched-From: 92d77538a86529ca35f9220bd3cd512cbea1f086-refs/heads/master@{#369907}

[modify] http://crrev.com/5071e949073b5a4007c8a59163ed0bd32b8ff742/content/public/common/content_features.cc

Project Member

Comment 194 by bugdroid1@chromium.org, Jan 21 2016

The following revision refers to this bug:
  https://chrome-internal.googlesource.com/bling/chromium.git/+/5071e949073b5a4007c8a59163ed0bd32b8ff742

commit 5071e949073b5a4007c8a59163ed0bd32b8ff742
Author: Asanka Herath <asanka@chromium.org>
Date: Wed Jan 20 17:53:30 2016

Blockedon: chromium:581164
Project Member

Comment 196 by bugdroid1@chromium.org, Jan 26 2016

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

commit bdc7250e539a9f40f84fd157bc29481e5aac2bf8
Author: asanka <asanka@chromium.org>
Date: Tue Jan 26 02:37:44 2016

[Downloads] Avoid resetting SecureHash state across an interruption.

DownloadFileImpl/BaseFile was causing the SecureHash object to be
finalized when a download was interrupted. This caused the hash state to
be incorrect and subsequently the hash resulting from resuming the
download was also incorrect.

BUG= 7648 
BUG=581164

Review URL: https://codereview.chromium.org/1591523002

Cr-Commit-Position: refs/heads/master@{#371428}

[modify] http://crrev.com/bdc7250e539a9f40f84fd157bc29481e5aac2bf8/content/browser/download/base_file.cc
[modify] http://crrev.com/bdc7250e539a9f40f84fd157bc29481e5aac2bf8/content/browser/download/base_file.h
[modify] http://crrev.com/bdc7250e539a9f40f84fd157bc29481e5aac2bf8/content/browser/download/download_browsertest.cc
[modify] http://crrev.com/bdc7250e539a9f40f84fd157bc29481e5aac2bf8/content/browser/download/download_file_impl.cc

Project Member

Comment 197 by bugdroid1@chromium.org, Jan 28 2016

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

commit 662aed60b889672f028f1c4b8a357d7f36348efd
Author: Asanka Herath <asanka@chromium.org>
Date: Thu Jan 28 15:29:19 2016

[Merge to 49] [Downloads] Avoid resetting SecureHash state across an interruption.

DownloadFileImpl/BaseFile was causing the SecureHash object to be
finalized when a download was interrupted. This caused the hash state to
be incorrect and subsequently the hash resulting from resuming the
download was also incorrect.

BUG= 7648 
BUG=581164

Review URL: https://codereview.chromium.org/1591523002

Cr-Commit-Position: refs/heads/master@{#371428}
(cherry picked from commit bdc7250e539a9f40f84fd157bc29481e5aac2bf8)

Review URL: https://codereview.chromium.org/1648683002 .

Cr-Commit-Position: refs/branch-heads/2623@{#177}
Cr-Branched-From: 92d77538a86529ca35f9220bd3cd512cbea1f086-refs/heads/master@{#369907}

[modify] http://crrev.com/662aed60b889672f028f1c4b8a357d7f36348efd/content/browser/download/base_file.cc
[modify] http://crrev.com/662aed60b889672f028f1c4b8a357d7f36348efd/content/browser/download/base_file.h
[modify] http://crrev.com/662aed60b889672f028f1c4b8a357d7f36348efd/content/browser/download/download_browsertest.cc
[modify] http://crrev.com/662aed60b889672f028f1c4b8a357d7f36348efd/content/browser/download/download_file_impl.cc

Project Member

Comment 198 by bugdroid1@chromium.org, Jan 28 2016

The following revision refers to this bug:
  https://chrome-internal.googlesource.com/bling/chromium.git/+/662aed60b889672f028f1c4b8a357d7f36348efd

commit 662aed60b889672f028f1c4b8a357d7f36348efd
Author: Asanka Herath <asanka@chromium.org>
Date: Thu Jan 28 15:29:19 2016

Project Member

Comment 199 by bugdroid1@chromium.org, Jan 29 2016

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

commit bb028fc67f0835b30bd2ce5d953caa101c15c961
Author: asanka <asanka@chromium.org>
Date: Fri Jan 29 18:27:51 2016

Use DownloadManager to initiate downloads instead ResourceDispatcherHost

Downloads have two major failure pathways: dealing with failures before
DownloadResourceHandler/DownloadRequestCore creation, and dealing with
failures after.

Somewhat relatedly, ResourceDispatcherHost::BeginDownload() currently is
responsible for implementing some aspects of download initiation that
really don't belong there. For example, download started callbacks are
handled by ResourceDispatcherHost prior to the creation of
DownloadResourceHandler.

Both of these aren't great. In order to unify failure paths and remove
downloads handling code from ResourceDispatcherHost, we need to first
need to reduce RDH::BeginDownload callers down to just
DownloadManagerImpl. Then we can move download handling logic out of RDH
into DownloadManager.

This CL removes the only other caller of RDH::BeginDownload, which is
RenderMessageFilter. It now makes a UI thread hop to initiate a download
via DownloadManager. The overhead of the thread hop should be negligible
since the frequency of download requests are low.

The touched code paths are already being exercised by existing
content_browsertests.

R=davidben@chromium.org
BUG= 7648 

Review URL: https://codereview.chromium.org/1644743003

Cr-Commit-Position: refs/heads/master@{#372381}

[modify] http://crrev.com/bb028fc67f0835b30bd2ce5d953caa101c15c961/content/browser/renderer_host/render_message_filter.cc

Project Member

Comment 200 by bugdroid1@chromium.org, Feb 12 2016

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

commit 45579ca4f8334797d90ea510c7a74dee41e96f3b
Author: asanka <asanka@chromium.org>
Date: Fri Feb 12 23:18:16 2016

[Downloads] Enforce state transition integrity and state invariants.

DownloadItemImpl is getting pretty complicated and it's hard to keep
track of possible races. This CL tries to make things a little easier by
constraining state transitions and also asserting the state of the
DownloadItem as each state is entered.

This CL introduces two new intermediate states to DownloadItemImpl:

  - TARGET_PENDING_INTERNAL
  - TARGET_RESOLVED_INTERNAL

Of these, only TARGET_RESOLVED_INTERNAL is allowed to transition to an
interrupted state. TARGET_PENDING_INTERNAL is entered when the download
target determination cascade begins and defers any interruptions until
TARGET_RESOLVED_INTERNAL. This state also blocks download completion.
Hence transitions to INTERRUPTED and COMPLETED states must now step over
the target determination state.

Also introduce a set of tests that are designed to exercise the various
permutations of events that can occur during the target determination
phase.

BUG= 7648 

Review URL: https://codereview.chromium.org/1691543002

Cr-Commit-Position: refs/heads/master@{#375275}

[modify] http://crrev.com/45579ca4f8334797d90ea510c7a74dee41e96f3b/chrome/browser/extensions/api/downloads/downloads_api_browsertest.cc
[modify] http://crrev.com/45579ca4f8334797d90ea510c7a74dee41e96f3b/content/browser/download/download_item_impl.cc
[modify] http://crrev.com/45579ca4f8334797d90ea510c7a74dee41e96f3b/content/browser/download/download_item_impl.h
[modify] http://crrev.com/45579ca4f8334797d90ea510c7a74dee41e96f3b/content/browser/download/download_item_impl_unittest.cc

Project Member

Comment 201 by bugdroid1@chromium.org, Feb 19 2016

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

commit 00b621f5126d538df488090c19175ee892a7161b
Author: asanka <asanka@chromium.org>
Date: Fri Feb 19 18:09:23 2016

[Downloads] Always call DM::StartDownload() for explicit downloads.

Every explicitly initiated download should be represented in the UI with
the exception of downloads which are hidden or downloads which were
cancelled by the user or were blocked by a throttle. This is currently
not true for downloads whose requests fail before a response is
available (e.g. because of the hostname not being resolved) because the
DownloadManager is only notified during
DownloadResourceHandler::OnResponseStarted(). Failure to notify the
DownloadManager results in no DownloadItem being created, and
subsequently no UI being presented to the user.

The current behavior is also non-ideal for downloads resumption. When a
partial download request receives a HTTP 412 response, the current logic
invokes DownloadManager::StartDownload() with no indication that the
Content-* headers received do not apply to the desired entity. Therefore
the DownloadItem's ETag and Last-Modified headers can be incorrectly
reset after a pre-condition failure.

This CL makes the following changes:

- DownloadItem::Start() now consumes a DownloadCreateInfo since multiple
  requests can be associated with a single DownloadItem due to
  resumption. Each new request results in a Start() call.

- DownloadResourceHandler invokes DownloadManager::StartDownload() even
  when no OnResponseStarted is received. The only exception is if the
  associated renderer goes away between the time the download request is
  sent and the time the response is received.

- UrlDownloader always invokes DownloadManager::StartDownload() for all
  initiated download requests without exception.

- DownloadItemImpl invokes the delegate and requests a filename whenever
  one is needed.

- DownloadTargetDeterminer generates a valid filename even if the
  DownloadItem is not in-progress.

- DownloadUrlParameters::OnStartedCallback could now receive a valid
  DownloadItem even when the request fails.

- ResourceDispatcherHost::BeginDownload() is no longer a public API. All
  wannabe downloaders must now go through DownloadManager to initiate a
  download.

- ResourceDispatcherHostImpl is no longer responsible for invoking
  OnStartedCallback or pass through download parameters.
  DownloadRequestCore attaches the data direcly to explicit downloads.

Ideally, explicit download initiation would first start by creating a
DownloadItem. We aren't quite there yet due to the fact that consumers
of the download system make assumptions about the existence of a
download item. I.e. the fallacy that the existence of a download item
must mean that that download is a candidate to be presented to the UI or
other consumers. Once these consumers are fixed, then we can move all
explicit download request initiated into DownloadItem, thus simplifying
much of this logic.

BUG= 7648 

Review URL: https://codereview.chromium.org/148133007

Cr-Commit-Position: refs/heads/master@{#376487}

[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/chrome/browser/download/download_browsertest.cc
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/chrome/browser/download/download_target_determiner.cc
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/chrome/browser/download/download_target_determiner_unittest.cc
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/chrome/browser/extensions/api/downloads/downloads_api_browsertest.cc
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/chrome/browser/extensions/webstore_installer.cc
[add] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/chrome/test/data/downloads/download-anchor-attrib-400.html
[add] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/chrome/test/data/downloads/download-anchor-attrib-404.html
[add] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/chrome/test/data/downloads/download-anchor-attrib-name-not-resolved.html
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/download/download_browsertest.cc
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/download/download_create_info.cc
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/download/download_create_info.h
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/download/download_file_factory.cc
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/download/download_file_factory.h
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/download/download_file_impl.cc
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/download/download_file_impl.h
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/download/download_file_unittest.cc
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/download/download_item_impl.cc
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/download/download_item_impl.h
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/download/download_item_impl_unittest.cc
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/download/download_manager_impl.cc
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/download/download_manager_impl_unittest.cc
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/download/download_request_core.cc
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/download/download_request_core.h
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/download/download_resource_handler.cc
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/download/download_resource_handler.h
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/download/drag_download_file.cc
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/download/url_downloader.cc
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/download/url_downloader.h
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/loader/mime_type_resource_handler.cc
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/loader/mime_type_resource_handler_unittest.cc
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/loader/resource_dispatcher_host_impl.cc
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/loader/resource_dispatcher_host_impl.h
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/browser/loader/resource_dispatcher_host_unittest.cc
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/public/browser/download_url_parameters.h
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/public/browser/resource_dispatcher_host.h
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/public/test/test_download_request_handler.cc
[modify] https://crrev.com/00b621f5126d538df488090c19175ee892a7161b/content/public/test/test_file_error_injector.cc

Project Member

Comment 202 by bugdroid1@chromium.org, Feb 20 2016

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

commit edb920a2e81a6be07d4ef30da09e3f2e9debe0c1
Author: asanka <asanka@chromium.org>
Date: Sat Feb 20 05:19:15 2016

[Downloads] Do not store error responses during resumption.

If a server or an intermediary sends a redirect, error, or other
unexpected response during resumption, don't store it or discard the
partial download state. Instead the download item will flag itself as
interrupted again and will require an externally initiated Resume() call
to try again.

Such responses are common where captive portals or other middle boxes
are present. If such cases aren't explicitly handled, an untimely
resumption attempt could discard partial state.

As a side-effect of this patch, downloads will also not discard partial
state due to other server errors during resumption (e.g. 500).

BUG= 7648 
R=svaldez@chromium.org, davidben@chromium.org, rdevlin.cronin@chromium.org
TBR=sky@chromium.org

Review URL: https://codereview.chromium.org/1544603003

Cr-Commit-Position: refs/heads/master@{#376625}

[modify] https://crrev.com/edb920a2e81a6be07d4ef30da09e3f2e9debe0c1/chrome/app/generated_resources.grd
[modify] https://crrev.com/edb920a2e81a6be07d4ef30da09e3f2e9debe0c1/chrome/browser/download/download_item_model.cc
[modify] https://crrev.com/edb920a2e81a6be07d4ef30da09e3f2e9debe0c1/chrome/browser/download/download_item_model_unittest.cc
[modify] https://crrev.com/edb920a2e81a6be07d4ef30da09e3f2e9debe0c1/chrome/common/extensions/api/downloads.idl
[modify] https://crrev.com/edb920a2e81a6be07d4ef30da09e3f2e9debe0c1/components/history/content/browser/content_history_backend_db_unittest.cc
[modify] https://crrev.com/edb920a2e81a6be07d4ef30da09e3f2e9debe0c1/content/browser/download/download_browsertest.cc
[modify] https://crrev.com/edb920a2e81a6be07d4ef30da09e3f2e9debe0c1/content/browser/download/download_item_impl.cc
[modify] https://crrev.com/edb920a2e81a6be07d4ef30da09e3f2e9debe0c1/content/browser/download/download_request_core.cc
[modify] https://crrev.com/edb920a2e81a6be07d4ef30da09e3f2e9debe0c1/content/browser/download/download_request_core.h
[modify] https://crrev.com/edb920a2e81a6be07d4ef30da09e3f2e9debe0c1/content/browser/download/download_resource_handler.cc
[modify] https://crrev.com/edb920a2e81a6be07d4ef30da09e3f2e9debe0c1/content/browser/download/url_downloader.cc
[modify] https://crrev.com/edb920a2e81a6be07d4ef30da09e3f2e9debe0c1/content/public/browser/download_interrupt_reason_values.h

Project Member

Comment 203 by bugdroid1@chromium.org, Feb 24 2016

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

commit 25e493d6f911d215407390d2b5282bc35da1dace
Author: asanka <asanka@chromium.org>
Date: Wed Feb 24 23:20:27 2016

[Downloads] Treat ERR_NETWORK_CHANGED as INTERRUPT_REASON_NETWORK_DISCONNECTED.

This should ideally have a better named interrupt reason, but the mapping
allows the same treatment to be extended for ERR_NETWORK_CHANGED as
ERR_INTERNET_DISCONNECTED.

R=svaldez@chromium.org
BUG= 7648 

Review URL: https://codereview.chromium.org/1719283002

Cr-Commit-Position: refs/heads/master@{#377421}

[modify] https://crrev.com/25e493d6f911d215407390d2b5282bc35da1dace/content/browser/download/download_interrupt_reasons_impl.cc

Project Member

Comment 204 by bugdroid1@chromium.org, Mar 3 2016

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

commit 43b66935f03e974fe5a052fd8382e7611b60ece6
Author: asanka <asanka@chromium.org>
Date: Thu Mar 03 03:58:17 2016

[Downloads] Stop keying TestFileErrorInjector off of URLs.

DownloadFiles don't typically care about URLs. Hence the
TestFileErrorInjector shouldn't be using URLs as a key for looking up
injected errors.

Incidentally, none of the tests using TestFileErrorInjector depend on
there being a 1-1 mapping between download URLs and injected errors.
Hence, this CL removes the role that URLs were playing in
TestFileErrorInjector.

R=svaldez@chromium.org, davidben@chromium.org
BUG= 7648 

Review URL: https://codereview.chromium.org/1750943002

Cr-Commit-Position: refs/heads/master@{#378944}

[modify] https://crrev.com/43b66935f03e974fe5a052fd8382e7611b60ece6/chrome/browser/download/download_browsertest.cc
[modify] https://crrev.com/43b66935f03e974fe5a052fd8382e7611b60ece6/content/browser/download/download_browsertest.cc
[modify] https://crrev.com/43b66935f03e974fe5a052fd8382e7611b60ece6/content/public/test/test_file_error_injector.cc
[modify] https://crrev.com/43b66935f03e974fe5a052fd8382e7611b60ece6/content/public/test/test_file_error_injector.h

Project Member

Comment 205 by bugdroid1@chromium.org, Mar 3 2016

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

commit 4faa7714d832789e56fc2064ac86e3af61557bee
Author: asanka <asanka@chromium.org>
Date: Thu Mar 03 17:18:29 2016

[Downloads] Simplify DownloadContentTests.

There used to be two download resumption code paths. DownloadItemImpl
chose the applicable code path based on whether the WebContents that
initiated the download was still around. Now DownloadItemImpl
deterministically uses the no-WebContents code path. Hence the
parameterized tests that exercised both paths no longer need to do so.

BUG= 7648 

Review URL: https://codereview.chromium.org/1754703007

Cr-Commit-Position: refs/heads/master@{#379026}

[modify] https://crrev.com/4faa7714d832789e56fc2064ac86e3af61557bee/content/browser/download/download_browsertest.cc

Project Member

Comment 206 by bugdroid1@chromium.org, Mar 3 2016

Labels: merge-merged-2666
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/43b66935f03e974fe5a052fd8382e7611b60ece6

commit 43b66935f03e974fe5a052fd8382e7611b60ece6
Author: asanka <asanka@chromium.org>
Date: Thu Mar 03 03:58:17 2016

[Downloads] Stop keying TestFileErrorInjector off of URLs.

DownloadFiles don't typically care about URLs. Hence the
TestFileErrorInjector shouldn't be using URLs as a key for looking up
injected errors.

Incidentally, none of the tests using TestFileErrorInjector depend on
there being a 1-1 mapping between download URLs and injected errors.
Hence, this CL removes the role that URLs were playing in
TestFileErrorInjector.

R=svaldez@chromium.org, davidben@chromium.org
BUG= 7648 

Review URL: https://codereview.chromium.org/1750943002

Cr-Commit-Position: refs/heads/master@{#378944}

[modify] https://crrev.com/43b66935f03e974fe5a052fd8382e7611b60ece6/chrome/browser/download/download_browsertest.cc
[modify] https://crrev.com/43b66935f03e974fe5a052fd8382e7611b60ece6/content/browser/download/download_browsertest.cc
[modify] https://crrev.com/43b66935f03e974fe5a052fd8382e7611b60ece6/content/public/test/test_file_error_injector.cc
[modify] https://crrev.com/43b66935f03e974fe5a052fd8382e7611b60ece6/content/public/test/test_file_error_injector.h

Project Member

Comment 207 by bugdroid1@chromium.org, Mar 3 2016

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

commit 4faa7714d832789e56fc2064ac86e3af61557bee
Author: asanka <asanka@chromium.org>
Date: Thu Mar 03 17:18:29 2016

[Downloads] Simplify DownloadContentTests.

There used to be two download resumption code paths. DownloadItemImpl
chose the applicable code path based on whether the WebContents that
initiated the download was still around. Now DownloadItemImpl
deterministically uses the no-WebContents code path. Hence the
parameterized tests that exercised both paths no longer need to do so.

BUG= 7648 

Review URL: https://codereview.chromium.org/1754703007

Cr-Commit-Position: refs/heads/master@{#379026}

[modify] https://crrev.com/4faa7714d832789e56fc2064ac86e3af61557bee/content/browser/download/download_browsertest.cc

Project Member

Comment 208 by bugdroid1@chromium.org, Mar 15 2016

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

commit 4350f6a0843ceb70885f375f9dcf0df9c081faf0
Author: asanka <asanka@chromium.org>
Date: Tue Mar 15 02:40:57 2016

[Downloads] Rework how hashes are calculated for download files.

Prior to this CL, downloads assumed that there would be a stable
serialization of hash state. This serialization was meant to be
persisted and used if the download was subsequently resumed, thus
avoiding rehashing the portion of the download completed so far.

However, there's no standard serialization for SHA256 hash state. Any
change to the serialization format would render any historical data
invalid. While it's possible to come up with a reasonable and stable
format for hash state, the resulting complexity isn't worth it.
Fortunately, the code for persisting the hash state was never written.
Hence it's not too late to change things.

With this CL, downloads will behave as follows with respect to hashes:

* An in-progress download will calculate the hash of the bytes written
  to disk so far using a crypto::SecureHash object using SHA256.

* Progress notifications from DownloadItem / DownloadFile no longer
  report a hash state.

* If the download completes successfully, DownloadFile exposes the
  crypto::SecureHash object representing the final hash state via the
  DownloadDestinationObserver interface. DownloadItemImpl uses this
  object to calculate the final hash which is then made available via
  DownloadItem::GetHash() for completed downloads.

* In the event of an interruption, DownloadFile will expose the
  crypto::SecureHash object representing the hash state.
  DownloadItemImpl uses a clone of the hash state to obtain a SHA256
  hash of the partial data. This hash is available via
  DownloadItem::GetHash() on interrupted downloads. DownloadItemImpl
  also keeps the crypto::SecureHash object in case the download is
  resumed later.

* Resuming downloads pass the crypto::SecureHash object representing the
  partial state via DownloadSaveInfo. If a crypto::SecureHash object
  isn't available (e.g. because the download was restored from history),
  then DownloadItemImpl can optionally pass along a SHA256 hash of the
  partial file. If for some reason, the partial state of the download is
  abandoned (e.g. because of a validation error), then
  DownloadRequestCore destroys the cryto::SecureHash object and
  resets the prefix hash so that the download can restart from the
  beginning.

* When DownloadManagerImpl receives a StartDownload() callback (which
  happens when a response is available for a download request), the
  crypto::SecureHash object passed within DownloadSaveInfo is used to
  construct a new DownloadFile.

* A newly created DownloadFile assumes that a crypto::SecureHash object
  passed to it correctly represents the partial state of the partial
  file.

* In the absence of a crypto::SecureHash object, DownloadFile reads the
  partial file and calculates the partial hash state in a new
  crypto::SecureHash object. If a prefix hash value is available, then
  the hash of the partial file is matched against this prefix hash. A
  mismatch causes a FILE_HASH_MISMATCH error which in turn causes the
  download to abandon its partial state and restart.

These rules establish the following invariants:

* All downloads calculate the SHA256 hash of its contents.

* Regardless of how a download is started or resumed, by the time it is
  completed successfully, DownloadItem::GetHash() correctly reports the
  SHA256 hash of the downloaded bytes.

* Regardless of how a download is started or resumed, an interrupted
  download with a received byte count > 0 will always report the correct
  SHA256 hash of the partial data in DownloadItem::GetHash().

Note that this CL doesn't add code to persist the hash for an
interrupted download. In order to keep the size of the CL sane, the
download history changes are going to be done in a follow up CL.

BUG= 7648 
BUG= 563684 

Review URL: https://codereview.chromium.org/1751603002

Cr-Commit-Position: refs/heads/master@{#381158}

[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/chrome/browser/download/download_browsertest.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/chrome/browser/download/download_history.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/chrome/browser/download/download_history_unittest.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/chrome/browser/download/download_item_model.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/chrome/browser/download/download_item_model_unittest.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/chrome/browser/extensions/api/downloads/downloads_api_browsertest.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/chrome/common/extensions/api/downloads.idl
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/components/history/content/browser/content_history_backend_db_unittest.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/base_file.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/base_file.h
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/base_file_linux.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/base_file_mac.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/base_file_unittest.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/base_file_win.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/download_browsertest.cc
[rename] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/download_destination_observer.h
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/download_file.h
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/download_file_factory.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/download_file_factory.h
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/download_file_impl.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/download_file_impl.h
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/download_file_unittest.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/download_item_factory.h
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/download_item_impl.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/download_item_impl.h
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/download_item_impl_delegate.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/download_item_impl_delegate.h
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/download_item_impl_unittest.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/download_manager_impl.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/download_manager_impl.h
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/download_manager_impl_unittest.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/download_net_log_parameters.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/download_net_log_parameters.h
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/download_request_core.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/mock_download_file.h
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/save_file.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/save_file.h
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/browser/download/save_package.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/content_browser.gypi
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/public/browser/download_interrupt_reason_values.h
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/public/browser/download_item.h
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/public/browser/download_manager.h
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/public/browser/download_save_info.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/public/browser/download_save_info.h
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/public/browser/download_url_parameters.h
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/public/test/mock_download_manager.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/public/test/mock_download_manager.h
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/content/public/test/test_file_error_injector.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/crypto/secure_hash.h
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/crypto/secure_hash_default.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/crypto/secure_hash_openssl.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/crypto/secure_hash_unittest.cc
[modify] https://crrev.com/4350f6a0843ceb70885f375f9dcf0df9c081faf0/crypto/third_party/nss/sha512.cc

Cc: asanka@chromium.org
 Issue 595273  has been merged into this issue.
Project Member

Comment 210 by bugdroid1@chromium.org, Mar 25 2016

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

commit b1473f4c28417710cb703f87076a01e58c15a1cc
Author: asanka <asanka@chromium.org>
Date: Fri Mar 25 21:40:35 2016

[Downloads] Enable resumption by default (again)

Now that we are nearing the home stretch, switch to default again. It
was disabled so that we can control it via a server side experiment. But
now we are switching it back so that we get waterfall coverage.

BUG= 7648 

Review URL: https://codereview.chromium.org/1833153003

Cr-Commit-Position: refs/heads/master@{#383369}

[modify] https://crrev.com/b1473f4c28417710cb703f87076a01e58c15a1cc/content/public/common/content_features.cc

Blocking: 601077
Blockedon: 602403
Blockedon: 603330
Blockedon: 603670
Blockedon: 606627
Blockedon: 608549
Blockedon: 608750
Blockedon: 609255
Blockedon: 609314
Blocking: 444696
Blocking: 611745
Blockedon: -609255
Project Member

Comment 225 by bugdroid1@chromium.org, Jun 8 2016

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

commit fac8aa8c63e77e543d6ea0afe4de1929be4c8194
Author: asanka <asanka@chromium.org>
Date: Wed Jun 08 00:41:18 2016

Remove download resumption feature flag.

The feature is now available by default. We no longer need a feature
flag.

BUG= 7648 

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

[modify] https://crrev.com/fac8aa8c63e77e543d6ea0afe4de1929be4c8194/chrome/app/generated_resources.grd
[modify] https://crrev.com/fac8aa8c63e77e543d6ea0afe4de1929be4c8194/chrome/browser/about_flags.cc
[modify] https://crrev.com/fac8aa8c63e77e543d6ea0afe4de1929be4c8194/chrome/browser/download/download_browsertest.cc
[modify] https://crrev.com/fac8aa8c63e77e543d6ea0afe4de1929be4c8194/chrome/browser/download/download_shelf_context_menu.cc
[modify] https://crrev.com/fac8aa8c63e77e543d6ea0afe4de1929be4c8194/chrome/browser/extensions/api/downloads/downloads_api_browsertest.cc
[modify] https://crrev.com/fac8aa8c63e77e543d6ea0afe4de1929be4c8194/content/browser/download/download_browsertest.cc
[modify] https://crrev.com/fac8aa8c63e77e543d6ea0afe4de1929be4c8194/content/browser/download/download_item_impl.cc
[modify] https://crrev.com/fac8aa8c63e77e543d6ea0afe4de1929be4c8194/content/browser/download/download_item_impl_unittest.cc
[modify] https://crrev.com/fac8aa8c63e77e543d6ea0afe4de1929be4c8194/content/public/common/content_features.cc
[modify] https://crrev.com/fac8aa8c63e77e543d6ea0afe4de1929be4c8194/content/public/common/content_features.h

Labels: -M-49 M-51
Status: Fixed (was: Started)
Alrighty. #225 is the final commit that makes it official that Chromium finally supports downloads resumption and there's no going back. It's on by default on from M51 onwards. There will be more issues to iron out the general resilient downloads feature, but those will now count as individual bug fixes rather than changes required for a feature launch.

#0 was filed on Feb 12, 2009. Some 7 years ~4 months and 40+ CLs later, here we are. We should get a cake or something.

Thanks to ahendrickson, rdsmith, svaldez, qinmin, dbeam and others.

Congratulations!

What a long, hard slog it's been.

Blocking: -611745
Showing comments 129 - 228 of 228 Older

Sign in to add a comment