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