1 // Copyright 2018 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "services/network/empty_url_loader_client.h"
6 
7 #include <utility>
8 
9 #include "base/bind.h"
10 #include "base/threading/sequenced_task_runner_handle.h"
11 
12 namespace network {
13 
14 // static
DrainURLRequest(mojo::PendingReceiver<mojom::URLLoaderClient> client_receiver,mojo::PendingRemote<mojom::URLLoader> url_loader)15 void EmptyURLLoaderClient::DrainURLRequest(
16     mojo::PendingReceiver<mojom::URLLoaderClient> client_receiver,
17     mojo::PendingRemote<mojom::URLLoader> url_loader) {
18   // Raw |new| is okay, because the newly constructed EmptyURLLoaderClient will
19   // delete itself after consuming all the data/callbacks.
20   new EmptyURLLoaderClient(std::move(client_receiver), std::move(url_loader));
21 }
22 
EmptyURLLoaderClient(mojo::PendingReceiver<mojom::URLLoaderClient> receiver,mojo::PendingRemote<mojom::URLLoader> url_loader)23 EmptyURLLoaderClient::EmptyURLLoaderClient(
24     mojo::PendingReceiver<mojom::URLLoaderClient> receiver,
25     mojo::PendingRemote<mojom::URLLoader> url_loader)
26     : receiver_(this, std::move(receiver)), url_loader_(std::move(url_loader)) {
27   receiver_.set_disconnect_handler(base::BindOnce(
28       &EmptyURLLoaderClient::DeleteSelf, base::Unretained(this)));
29 }
30 
~EmptyURLLoaderClient()31 EmptyURLLoaderClient::~EmptyURLLoaderClient() {}
32 
DeleteSelf()33 void EmptyURLLoaderClient::DeleteSelf() {
34   delete this;
35 }
36 
OnReceiveResponse(const mojom::URLResponseHeadPtr head)37 void EmptyURLLoaderClient::OnReceiveResponse(
38     const mojom::URLResponseHeadPtr head) {}
39 
OnReceiveRedirect(const net::RedirectInfo & redirect_info,mojom::URLResponseHeadPtr head)40 void EmptyURLLoaderClient::OnReceiveRedirect(
41     const net::RedirectInfo& redirect_info,
42     mojom::URLResponseHeadPtr head) {}
43 
OnUploadProgress(int64_t current_position,int64_t total_size,OnUploadProgressCallback callback)44 void EmptyURLLoaderClient::OnUploadProgress(int64_t current_position,
45                                             int64_t total_size,
46                                             OnUploadProgressCallback callback) {
47   std::move(callback).Run();
48 }
49 
OnReceiveCachedMetadata(mojo_base::BigBuffer data)50 void EmptyURLLoaderClient::OnReceiveCachedMetadata(mojo_base::BigBuffer data) {}
51 
OnTransferSizeUpdated(int32_t transfer_size_diff)52 void EmptyURLLoaderClient::OnTransferSizeUpdated(int32_t transfer_size_diff) {}
53 
OnStartLoadingResponseBody(mojo::ScopedDataPipeConsumerHandle body)54 void EmptyURLLoaderClient::OnStartLoadingResponseBody(
55     mojo::ScopedDataPipeConsumerHandle body) {
56   DCHECK(!response_body_drainer_);
57   response_body_drainer_ =
58       std::make_unique<mojo::DataPipeDrainer>(this, std::move(body));
59 }
60 
OnComplete(const URLLoaderCompletionStatus & status)61 void EmptyURLLoaderClient::OnComplete(const URLLoaderCompletionStatus& status) {
62   DeleteSelf();
63 }
64 
OnDataAvailable(const void * data,size_t num_bytes)65 void EmptyURLLoaderClient::OnDataAvailable(const void* data, size_t num_bytes) {
66 }
67 
OnDataComplete()68 void EmptyURLLoaderClient::OnDataComplete() {}
69 
70 }  // namespace network
71