OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/loader/mojo_async_resource_handler.h" | 5 #include "content/browser/loader/mojo_async_resource_handler.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 void InitializeResourceBufferConstants() { | 55 void InitializeResourceBufferConstants() { |
56 static bool did_init = false; | 56 static bool did_init = false; |
57 if (did_init) | 57 if (did_init) |
58 return; | 58 return; |
59 did_init = true; | 59 did_init = true; |
60 | 60 |
61 GetNumericArg("resource-buffer-size", &g_allocation_size); | 61 GetNumericArg("resource-buffer-size", &g_allocation_size); |
62 } | 62 } |
63 | 63 |
64 void NotReached(mojom::URLLoaderAssociatedRequest mojo_request, | 64 void NotReached(mojom::URLLoaderAssociatedRequest mojo_request, |
65 mojom::URLLoaderClientAssociatedPtr url_loader_client) { | 65 mojom::URLLoaderClientPtr url_loader_client) { |
66 NOTREACHED(); | 66 NOTREACHED(); |
67 } | 67 } |
68 | 68 |
69 } // namespace | 69 } // namespace |
70 | 70 |
71 // This class is for sharing the ownership of a ScopedDataPipeProducerHandle | 71 // This class is for sharing the ownership of a ScopedDataPipeProducerHandle |
72 // between WriterIOBuffer and MojoAsyncResourceHandler. | 72 // between WriterIOBuffer and MojoAsyncResourceHandler. |
73 class MojoAsyncResourceHandler::SharedWriter final | 73 class MojoAsyncResourceHandler::SharedWriter final |
74 : public base::RefCountedThreadSafe<SharedWriter> { | 74 : public base::RefCountedThreadSafe<SharedWriter> { |
75 public: | 75 public: |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
110 // This member is for keeping the writer alive. | 110 // This member is for keeping the writer alive. |
111 scoped_refptr<SharedWriter> writer_; | 111 scoped_refptr<SharedWriter> writer_; |
112 | 112 |
113 DISALLOW_COPY_AND_ASSIGN(WriterIOBuffer); | 113 DISALLOW_COPY_AND_ASSIGN(WriterIOBuffer); |
114 }; | 114 }; |
115 | 115 |
116 MojoAsyncResourceHandler::MojoAsyncResourceHandler( | 116 MojoAsyncResourceHandler::MojoAsyncResourceHandler( |
117 net::URLRequest* request, | 117 net::URLRequest* request, |
118 ResourceDispatcherHostImpl* rdh, | 118 ResourceDispatcherHostImpl* rdh, |
119 mojom::URLLoaderAssociatedRequest mojo_request, | 119 mojom::URLLoaderAssociatedRequest mojo_request, |
120 mojom::URLLoaderClientAssociatedPtr url_loader_client, | 120 mojom::URLLoaderClientPtr url_loader_client, |
121 ResourceType resource_type) | 121 ResourceType resource_type) |
122 : ResourceHandler(request), | 122 : ResourceHandler(request), |
123 rdh_(rdh), | 123 rdh_(rdh), |
124 binding_(this, std::move(mojo_request)), | 124 binding_(this, std::move(mojo_request)), |
125 handle_watcher_(FROM_HERE), | 125 handle_watcher_(FROM_HERE), |
126 url_loader_client_(std::move(url_loader_client)), | 126 url_loader_client_(std::move(url_loader_client)), |
127 weak_factory_(this) { | 127 weak_factory_(this) { |
128 DCHECK(url_loader_client_); | 128 DCHECK(url_loader_client_); |
129 InitializeResourceBufferConstants(); | 129 InitializeResourceBufferConstants(); |
130 // This unretained pointer is safe, because |binding_| is owned by |this| and | 130 // This unretained pointer is safe, because |binding_| is owned by |this| and |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 } | 186 } |
187 | 187 |
188 NetLogObserver::PopulateResponseInfo(request(), response); | 188 NetLogObserver::PopulateResponseInfo(request(), response); |
189 response->head.encoded_data_length = request()->raw_header_size(); | 189 response->head.encoded_data_length = request()->raw_header_size(); |
190 reported_total_received_bytes_ = response->head.encoded_data_length; | 190 reported_total_received_bytes_ = response->head.encoded_data_length; |
191 | 191 |
192 response->head.request_start = request()->creation_time(); | 192 response->head.request_start = request()->creation_time(); |
193 response->head.response_start = base::TimeTicks::Now(); | 193 response->head.response_start = base::TimeTicks::Now(); |
194 sent_received_response_message_ = true; | 194 sent_received_response_message_ = true; |
195 | 195 |
196 mojom::DownloadedTempFileAssociatedPtrInfo downloaded_file_ptr; | 196 mojom::DownloadedTempFilePtr downloaded_file_ptr; |
197 if (!response->head.download_file_path.empty()) { | 197 if (!response->head.download_file_path.empty()) { |
198 downloaded_file_ptr = DownloadedTempFileImpl::Create(info->GetChildID(), | 198 downloaded_file_ptr = DownloadedTempFileImpl::Create(info->GetChildID(), |
199 info->GetRequestID()); | 199 info->GetRequestID()); |
200 rdh_->RegisterDownloadedTempFile(info->GetChildID(), info->GetRequestID(), | 200 rdh_->RegisterDownloadedTempFile(info->GetChildID(), info->GetRequestID(), |
201 response->head.download_file_path); | 201 response->head.download_file_path); |
202 } | 202 } |
203 | 203 |
204 url_loader_client_->OnReceiveResponse(response->head, | 204 url_loader_client_->OnReceiveResponse(response->head, |
205 std::move(downloaded_file_ptr)); | 205 std::move(downloaded_file_ptr)); |
206 | 206 |
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
554 std::unique_ptr<UploadProgressTracker> | 554 std::unique_ptr<UploadProgressTracker> |
555 MojoAsyncResourceHandler::CreateUploadProgressTracker( | 555 MojoAsyncResourceHandler::CreateUploadProgressTracker( |
556 const tracked_objects::Location& from_here, | 556 const tracked_objects::Location& from_here, |
557 UploadProgressTracker::UploadProgressReportCallback callback) { | 557 UploadProgressTracker::UploadProgressReportCallback callback) { |
558 return base::MakeUnique<UploadProgressTracker>(from_here, std::move(callback), | 558 return base::MakeUnique<UploadProgressTracker>(from_here, std::move(callback), |
559 request()); | 559 request()); |
560 } | 560 } |
561 | 561 |
562 void MojoAsyncResourceHandler::OnTransfer( | 562 void MojoAsyncResourceHandler::OnTransfer( |
563 mojom::URLLoaderAssociatedRequest mojo_request, | 563 mojom::URLLoaderAssociatedRequest mojo_request, |
564 mojom::URLLoaderClientAssociatedPtr url_loader_client) { | 564 mojom::URLLoaderClientPtr url_loader_client) { |
565 binding_.Unbind(); | 565 binding_.Unbind(); |
566 binding_.Bind(std::move(mojo_request)); | 566 binding_.Bind(std::move(mojo_request)); |
567 binding_.set_connection_error_handler( | 567 binding_.set_connection_error_handler( |
568 base::Bind(&MojoAsyncResourceHandler::Cancel, base::Unretained(this))); | 568 base::Bind(&MojoAsyncResourceHandler::Cancel, base::Unretained(this))); |
569 url_loader_client_ = std::move(url_loader_client); | 569 url_loader_client_ = std::move(url_loader_client); |
570 } | 570 } |
571 | 571 |
572 void MojoAsyncResourceHandler::SendUploadProgress( | 572 void MojoAsyncResourceHandler::SendUploadProgress( |
573 const net::UploadProgress& progress) { | 573 const net::UploadProgress& progress) { |
574 url_loader_client_->OnUploadProgress( | 574 url_loader_client_->OnUploadProgress( |
575 progress.position(), progress.size(), | 575 progress.position(), progress.size(), |
576 base::Bind(&MojoAsyncResourceHandler::OnUploadProgressACK, | 576 base::Bind(&MojoAsyncResourceHandler::OnUploadProgressACK, |
577 weak_factory_.GetWeakPtr())); | 577 weak_factory_.GetWeakPtr())); |
578 } | 578 } |
579 | 579 |
580 void MojoAsyncResourceHandler::OnUploadProgressACK() { | 580 void MojoAsyncResourceHandler::OnUploadProgressACK() { |
581 if (upload_progress_tracker_) | 581 if (upload_progress_tracker_) |
582 upload_progress_tracker_->OnAckReceived(); | 582 upload_progress_tracker_->OnAckReceived(); |
583 } | 583 } |
584 | 584 |
585 } // namespace content | 585 } // namespace content |
OLD | NEW |