summaryrefslogtreecommitdiff
path: root/chromium/content/browser/download/download_response_handler.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/download/download_response_handler.cc')
-rw-r--r--chromium/content/browser/download/download_response_handler.cc102
1 files changed, 55 insertions, 47 deletions
diff --git a/chromium/content/browser/download/download_response_handler.cc b/chromium/content/browser/download/download_response_handler.cc
index d2d198a7cc3..5ab73c4e1fc 100644
--- a/chromium/content/browser/download/download_response_handler.cc
+++ b/chromium/content/browser/download/download_response_handler.cc
@@ -6,9 +6,9 @@
#include <memory>
-#include "content/browser/download/download_stats.h"
+#include "components/download/public/common/download_stats.h"
+#include "components/download/public/common/download_url_parameters.h"
#include "content/browser/download/download_utils.h"
-#include "content/public/browser/download_url_parameters.h"
#include "net/http/http_status_code.h"
#include "net/log/net_log_with_source.h"
@@ -16,32 +16,34 @@ namespace content {
namespace {
-mojom::NetworkRequestStatus ConvertInterruptReasonToMojoNetworkRequestStatus(
- DownloadInterruptReason reason) {
+download::mojom::NetworkRequestStatus
+ConvertInterruptReasonToMojoNetworkRequestStatus(
+ download::DownloadInterruptReason reason) {
switch (reason) {
- case DOWNLOAD_INTERRUPT_REASON_NONE:
- return mojom::NetworkRequestStatus::OK;
- case DOWNLOAD_INTERRUPT_REASON_NETWORK_TIMEOUT:
- return mojom::NetworkRequestStatus::NETWORK_TIMEOUT;
- case DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED:
- return mojom::NetworkRequestStatus::NETWORK_DISCONNECTED;
- case DOWNLOAD_INTERRUPT_REASON_NETWORK_SERVER_DOWN:
- return mojom::NetworkRequestStatus::NETWORK_SERVER_DOWN;
- case DOWNLOAD_INTERRUPT_REASON_SERVER_NO_RANGE:
- return mojom::NetworkRequestStatus::SERVER_NO_RANGE;
- case DOWNLOAD_INTERRUPT_REASON_SERVER_CONTENT_LENGTH_MISMATCH:
- return mojom::NetworkRequestStatus::SERVER_CONTENT_LENGTH_MISMATCH;
- case DOWNLOAD_INTERRUPT_REASON_SERVER_UNREACHABLE:
- return mojom::NetworkRequestStatus::SERVER_UNREACHABLE;
- case DOWNLOAD_INTERRUPT_REASON_SERVER_CERT_PROBLEM:
- return mojom::NetworkRequestStatus::SERVER_CERT_PROBLEM;
- case DOWNLOAD_INTERRUPT_REASON_USER_CANCELED:
- return mojom::NetworkRequestStatus::USER_CANCELED;
- case DOWNLOAD_INTERRUPT_REASON_NETWORK_FAILED:
- return mojom::NetworkRequestStatus::NETWORK_FAILED;
+ case download::DOWNLOAD_INTERRUPT_REASON_NONE:
+ return download::mojom::NetworkRequestStatus::OK;
+ case download::DOWNLOAD_INTERRUPT_REASON_NETWORK_TIMEOUT:
+ return download::mojom::NetworkRequestStatus::NETWORK_TIMEOUT;
+ case download::DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED:
+ return download::mojom::NetworkRequestStatus::NETWORK_DISCONNECTED;
+ case download::DOWNLOAD_INTERRUPT_REASON_NETWORK_SERVER_DOWN:
+ return download::mojom::NetworkRequestStatus::NETWORK_SERVER_DOWN;
+ case download::DOWNLOAD_INTERRUPT_REASON_SERVER_NO_RANGE:
+ return download::mojom::NetworkRequestStatus::SERVER_NO_RANGE;
+ case download::DOWNLOAD_INTERRUPT_REASON_SERVER_CONTENT_LENGTH_MISMATCH:
+ return download::mojom::NetworkRequestStatus::
+ SERVER_CONTENT_LENGTH_MISMATCH;
+ case download::DOWNLOAD_INTERRUPT_REASON_SERVER_UNREACHABLE:
+ return download::mojom::NetworkRequestStatus::SERVER_UNREACHABLE;
+ case download::DOWNLOAD_INTERRUPT_REASON_SERVER_CERT_PROBLEM:
+ return download::mojom::NetworkRequestStatus::SERVER_CERT_PROBLEM;
+ case download::DOWNLOAD_INTERRUPT_REASON_USER_CANCELED:
+ return download::mojom::NetworkRequestStatus::USER_CANCELED;
+ case download::DOWNLOAD_INTERRUPT_REASON_NETWORK_FAILED:
+ return download::mojom::NetworkRequestStatus::NETWORK_FAILED;
default:
NOTREACHED();
- return mojom::NetworkRequestStatus::NETWORK_FAILED;
+ return download::mojom::NetworkRequestStatus::NETWORK_FAILED;
}
}
@@ -50,11 +52,12 @@ mojom::NetworkRequestStatus ConvertInterruptReasonToMojoNetworkRequestStatus(
DownloadResponseHandler::DownloadResponseHandler(
network::ResourceRequest* resource_request,
Delegate* delegate,
- std::unique_ptr<DownloadSaveInfo> save_info,
+ std::unique_ptr<download::DownloadSaveInfo> save_info,
bool is_parallel_request,
bool is_transient,
bool fetch_error_body,
- DownloadSource download_source,
+ const std::string& request_origin,
+ download::DownloadSource download_source,
std::vector<GURL> url_chain)
: delegate_(delegate),
started_(false),
@@ -64,12 +67,15 @@ DownloadResponseHandler::DownloadResponseHandler(
referrer_(resource_request->referrer),
is_transient_(is_transient),
fetch_error_body_(fetch_error_body),
+ request_origin_(request_origin),
download_source_(download_source),
has_strong_validators_(false),
is_partial_request_(save_info_->offset > 0),
- abort_reason_(DOWNLOAD_INTERRUPT_REASON_NONE) {
- if (!is_parallel_request)
- RecordDownloadCountWithSource(UNTHROTTLED_COUNT, download_source);
+ abort_reason_(download::DOWNLOAD_INTERRUPT_REASON_NONE) {
+ if (!is_parallel_request) {
+ download::RecordDownloadCountWithSource(download::UNTHROTTLED_COUNT,
+ download_source);
+ }
if (resource_request->request_initiator.has_value())
origin_ = resource_request->request_initiator.value().GetURL();
}
@@ -90,8 +96,9 @@ void DownloadResponseHandler::OnReceiveResponse(
// |RecordDownloadSourcePageTransitionType| here.
if (head.headers) {
has_strong_validators_ = head.headers->HasStrongValidators();
- RecordDownloadHttpResponseCode(head.headers->response_code());
- RecordDownloadContentDisposition(create_info_->content_disposition);
+ download::RecordDownloadHttpResponseCode(head.headers->response_code());
+ download::RecordDownloadContentDisposition(
+ create_info_->content_disposition);
}
// Blink verifies that the requester of this download is allowed to set a
@@ -105,27 +112,27 @@ void DownloadResponseHandler::OnReceiveResponse(
create_info_->save_info->suggested_name.clear();
}
- if (create_info_->result != DOWNLOAD_INTERRUPT_REASON_NONE)
- OnResponseStarted(mojom::DownloadStreamHandlePtr());
+ if (create_info_->result != download::DOWNLOAD_INTERRUPT_REASON_NONE)
+ OnResponseStarted(download::mojom::DownloadStreamHandlePtr());
}
-std::unique_ptr<DownloadCreateInfo>
+std::unique_ptr<download::DownloadCreateInfo>
DownloadResponseHandler::CreateDownloadCreateInfo(
const network::ResourceResponseHead& head) {
// TODO(qinmin): instead of using NetLogWithSource, introduce new logging
// class for download.
- auto create_info = std::make_unique<DownloadCreateInfo>(
+ auto create_info = std::make_unique<download::DownloadCreateInfo>(
base::Time::Now(), std::move(save_info_));
- DownloadInterruptReason result =
+ download::DownloadInterruptReason result =
head.headers
? HandleSuccessfulServerResponse(
*head.headers, create_info->save_info.get(), fetch_error_body_)
- : DOWNLOAD_INTERRUPT_REASON_NONE;
+ : download::DOWNLOAD_INTERRUPT_REASON_NONE;
create_info->total_bytes = head.content_length > 0 ? head.content_length : 0;
create_info->result = result;
- if (result == DOWNLOAD_INTERRUPT_REASON_NONE)
+ if (result == download::DOWNLOAD_INTERRUPT_REASON_NONE)
create_info->remote_address = head.socket_address.host();
create_info->method = method_;
create_info->connection_info = head.connection_info;
@@ -136,6 +143,7 @@ DownloadResponseHandler::CreateDownloadCreateInfo(
create_info->offset = create_info->save_info->offset;
create_info->mime_type = head.mime_type;
create_info->fetch_error_body = fetch_error_body_;
+ create_info->request_origin = request_origin_;
create_info->download_source = download_source_;
HandleResponseHeaders(head.headers.get(), create_info.get());
@@ -147,9 +155,9 @@ void DownloadResponseHandler::OnReceiveRedirect(
const network::ResourceResponseHead& head) {
if (is_partial_request_) {
// A redirect while attempting a partial resumption indicates a potential
- // middle box. Trigger another interruption so that the DownloadItem can
- // retry.
- abort_reason_ = DOWNLOAD_INTERRUPT_REASON_SERVER_UNREACHABLE;
+ // middle box. Trigger another interruption so that the
+ // download::DownloadItem can retry.
+ abort_reason_ = download::DOWNLOAD_INTERRUPT_REASON_SERVER_UNREACHABLE;
OnComplete(network::URLLoaderCompletionStatus(net::OK));
return;
}
@@ -178,8 +186,8 @@ void DownloadResponseHandler::OnStartLoadingResponseBody(
if (started_)
return;
- mojom::DownloadStreamHandlePtr stream_handle =
- mojom::DownloadStreamHandle::New();
+ download::mojom::DownloadStreamHandlePtr stream_handle =
+ download::mojom::DownloadStreamHandle::New();
stream_handle->stream = std::move(body);
stream_handle->client_request = mojo::MakeRequest(&client_ptr_);
OnResponseStarted(std::move(stream_handle));
@@ -187,7 +195,7 @@ void DownloadResponseHandler::OnStartLoadingResponseBody(
void DownloadResponseHandler::OnComplete(
const network::URLLoaderCompletionStatus& status) {
- DownloadInterruptReason reason = HandleRequestCompletionStatus(
+ download::DownloadInterruptReason reason = HandleRequestCompletionStatus(
static_cast<net::Error>(status.error_code), has_strong_validators_,
cert_status_, abort_reason_);
@@ -204,11 +212,11 @@ void DownloadResponseHandler::OnComplete(
create_info_ = CreateDownloadCreateInfo(network::ResourceResponseHead());
create_info_->result = reason;
- OnResponseStarted(mojom::DownloadStreamHandlePtr());
+ OnResponseStarted(download::mojom::DownloadStreamHandlePtr());
}
void DownloadResponseHandler::OnResponseStarted(
- mojom::DownloadStreamHandlePtr stream_handle) {
+ download::mojom::DownloadStreamHandlePtr stream_handle) {
started_ = true;
delegate_->OnResponseStarted(std::move(create_info_),
std::move(stream_handle));