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

Side by Side Diff: content/browser/loader/mojo_async_resource_handler.cc

Issue 2715423003: [Mojo-Loading] Use independent URLLoaderClient (Closed)
Patch Set: fix Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698