Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Issue 23496076: WIP - Refactor programmatic downloads

Created:
7 years, 3 months ago by asanka
Modified:
7 years, 3 months ago
Reviewers:
CC:
chromium-reviews
Visibility:
Public.

Description

NOT FOR COMMIT. This is a combination of a number of proposed CLs. ------------------------------------------------------------ WIP - Refactor programmatic downloads Explicit downloads no longer need to pretend that they were initiated by a renderer. Introduce a UrlDownloader class that handles explicit downloads. Also moves the core of DownloadResourceHandler out into a separate class so that the logic can be shared with the URLRequestDelegate. Change DownloadUrlParameters::OnStartedCallback to take a DownloadInterruptReason instead of a net::Error. Also introduce a new download interrupt reason to indicate that the requested URL was not allowed. BUG=7648, 225901 ------------------------------------------------------------ Rename DownloadRequestHandleInterface Now just called DownloadRequestHandle. BUG=7648 ------------------------------------------------------------ Merge creation of DownloadItem and SavePackage item. BUG=6025 BUG=7648 ------------------------------------------------------------ Use DownloadManager from RenderMessageFilter This may not be completely correct since there should not be any functional difference between a request intiated via a renderer ResourceRequest vs. one intiated via an <a download> link. Should consider reverting this or modifying this to use a modified ResourceRequest. BUG=225901 ------------------------------------------------------------ Use DownloadManager for PluginInstaller. PluginInstaller was invoking the BeginDownload method of ResourceDispatcherHostImpl even though the request wasn't being initiated from a renderer. Go through the DownloadManager instead since the PluginInstaller is initiating a programmatic download. BUG=225901 ------------------------------------------------------------ Update origin info after on 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 ------------------------------------------------------------ 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 ------------------------------------------------------------ Cleanup DownloadResourceHandler * Avoid duplicate assignments. * Don't calculate whether strong validators are present in an HTTP response. A spec compliant implementation of this determination is already present elsewhere. This is in preparation for removing the dependency of downloads on WebContents. BUG=7648, 225901

Patch Set 1 #

Unified diffs Side-by-side diffs Delta from patch set Stats (+2056 lines, -1356 lines) Patch
M chrome/browser/download/download_browsertest.cc View 5 chunks +9 lines, -5 lines 0 comments Download
M chrome/browser/download/download_item_model.cc View 5 chunks +18 lines, -8 lines 0 comments Download
M chrome/browser/download/download_item_model_unittest.cc View 2 chunks +4 lines, -0 lines 0 comments Download
M chrome/browser/extensions/api/downloads/downloads_api.h View 1 chunk +1 line, -1 line 0 comments Download
M chrome/browser/extensions/api/downloads/downloads_api.cc View 3 chunks +7 lines, -7 lines 0 comments Download
M chrome/browser/extensions/api/downloads/downloads_api_browsertest.cc View 1 chunk +1 line, -1 line 0 comments Download
M chrome/browser/extensions/api/recovery_private/write_from_url_operation.h View 2 chunks +3 lines, -2 lines 0 comments Download
M chrome/browser/extensions/api/recovery_private/write_from_url_operation.cc View 2 chunks +6 lines, -5 lines 0 comments Download
M chrome/browser/extensions/webstore_installer.h View 2 chunks +3 lines, -2 lines 0 comments Download
M chrome/browser/extensions/webstore_installer.cc View 1 chunk +6 lines, -4 lines 0 comments Download
M chrome/browser/plugins/plugin_installer.h View 2 chunks +3 lines, -2 lines 0 comments Download
M chrome/browser/plugins/plugin_installer.cc View 4 chunks +21 lines, -52 lines 0 comments Download
M chrome/common/extensions/api/downloads.idl View 1 chunk +1 line, -0 lines 0 comments Download
M content/browser/download/download_browsertest.cc View 5 chunks +10 lines, -8 lines 0 comments Download
M content/browser/download/download_create_info.h View 4 chunks +18 lines, -7 lines 0 comments Download
M content/browser/download/download_create_info.cc View 1 chunk +21 lines, -25 lines 0 comments Download
M content/browser/download/download_interrupt_reasons_impl.cc View 1 chunk +1 line, -1 line 0 comments Download
M content/browser/download/download_item_factory.h View 2 chunks +1 line, -11 lines 0 comments Download
M content/browser/download/download_item_impl.h View 6 chunks +14 lines, -14 lines 0 comments Download
M content/browser/download/download_item_impl.cc View 16 chunks +86 lines, -100 lines 0 comments Download
M content/browser/download/download_item_impl_unittest.cc View 12 chunks +28 lines, -23 lines 0 comments Download
M content/browser/download/download_manager_impl.h View 6 chunks +38 lines, -26 lines 0 comments Download
M content/browser/download/download_manager_impl.cc View 12 chunks +113 lines, -191 lines 0 comments Download
M content/browser/download/download_manager_impl_unittest.cc View 5 chunks +7 lines, -35 lines 0 comments Download
M content/browser/download/download_net_log_parameters.cc View 3 chunks +3 lines, -3 lines 0 comments Download
M content/browser/download/download_request_handle.h View 2 chunks +15 lines, -59 lines 0 comments Download
M content/browser/download/download_request_handle.cc View 1 chunk +1 line, -79 lines 0 comments Download
A content/browser/download/download_request_model.h View 1 chunk +107 lines, -0 lines 0 comments Download
A content/browser/download/download_request_model.cc View 1 chunk +443 lines, -0 lines 0 comments Download
M content/browser/download/download_resource_handler.h View 4 chunks +5 lines, -46 lines 0 comments Download
M content/browser/download/download_resource_handler.cc View 10 chunks +163 lines, -348 lines 0 comments Download
M content/browser/download/download_stats.h View 2 chunks +9 lines, -4 lines 0 comments Download
M content/browser/download/download_stats.cc View 4 chunks +9 lines, -4 lines 0 comments Download
M content/browser/download/drag_download_file.cc View 1 chunk +4 lines, -3 lines 0 comments Download
M content/browser/download/save_package.cc View 4 chunks +19 lines, -34 lines 0 comments Download
A content/browser/download/url_downloader.h View 1 chunk +74 lines, -0 lines 0 comments Download
A content/browser/download/url_downloader.cc View 1 chunk +233 lines, -0 lines 0 comments Download
A content/browser/download/url_downloader_unittest.cc View 1 chunk +397 lines, -0 lines 0 comments Download
M content/browser/indexed_db/indexed_db_internals_ui.h View 2 chunks +3 lines, -3 lines 0 comments Download
M content/browser/indexed_db/indexed_db_internals_ui.cc View 1 chunk +4 lines, -4 lines 0 comments Download
M content/browser/loader/buffered_resource_handler.cc View 1 chunk +3 lines, -8 lines 0 comments Download
M content/browser/loader/resource_dispatcher_host_impl.h View 3 chunks +1 line, -19 lines 0 comments Download
M content/browser/loader/resource_dispatcher_host_impl.cc View 9 chunks +4 lines, -140 lines 0 comments Download
A content/browser/net/referrer.h View 1 chunk +20 lines, -0 lines 0 comments Download
A content/browser/net/referrer.cc View 1 chunk +38 lines, -0 lines 0 comments Download
M content/browser/renderer_host/render_message_filter.cc View 3 chunks +28 lines, -16 lines 0 comments Download
M content/content_browser.gypi View 3 chunks +6 lines, -0 lines 0 comments Download
M content/content_tests.gypi View 1 chunk +1 line, -0 lines 0 comments Download
M content/public/browser/download_interrupt_reason_values.h View 1 chunk +6 lines, -0 lines 0 comments Download
M content/public/browser/download_interrupt_reasons.h View 1 chunk +1 line, -1 line 0 comments Download
M content/public/browser/download_manager.h View 1 chunk +6 lines, -8 lines 0 comments Download
M content/public/browser/download_url_parameters.h View 3 chunks +5 lines, -4 lines 0 comments Download
M content/public/browser/resource_dispatcher_host.h View 2 chunks +1 line, -22 lines 0 comments Download
M content/public/test/download_test_observer.h View 3 chunks +8 lines, -5 lines 0 comments Download
M content/public/test/download_test_observer.cc View 2 chunks +3 lines, -3 lines 0 comments Download
M content/public/test/mock_download_manager.h View 1 chunk +6 lines, -7 lines 0 comments Download
M content/public/test/mock_download_manager.cc View 1 chunk +4 lines, -5 lines 0 comments Download
M net/tools/testserver/testserver.py View 2 chunks +6 lines, -1 line 0 comments Download

Powered by Google App Engine
This is Rietveld 408576698