Chromium Code Reviews| 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 <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/containers/hash_tables.h" | 10 #include "base/containers/hash_tables.h" |
| 11 #include "base/logging.h" | 11 #include "base/logging.h" |
| 12 #include "base/macros.h" | 12 #include "base/macros.h" |
| 13 #include "base/strings/string_number_conversions.h" | 13 #include "base/strings/string_number_conversions.h" |
| 14 #include "base/time/time.h" | 14 #include "base/time/time.h" |
| 15 #include "content/browser/loader/netlog_observer.h" | 15 #include "content/browser/loader/netlog_observer.h" |
| 16 #include "content/browser/loader/resource_dispatcher_host_impl.h" | 16 #include "content/browser/loader/resource_dispatcher_host_impl.h" |
| 17 #include "content/browser/loader/resource_request_info_impl.h" | 17 #include "content/browser/loader/resource_request_info_impl.h" |
| 18 #include "content/common/resource_request_completion_status.h" | 18 #include "content/common/resource_request_completion_status.h" |
| 19 #include "content/public/browser/global_request_id.h" | |
| 19 #include "content/public/browser/resource_dispatcher_host_delegate.h" | 20 #include "content/public/browser/resource_dispatcher_host_delegate.h" |
| 20 #include "content/public/common/resource_response.h" | 21 #include "content/public/common/resource_response.h" |
| 21 #include "mojo/public/c/system/data_pipe.h" | 22 #include "mojo/public/c/system/data_pipe.h" |
| 22 #include "mojo/public/cpp/system/data_pipe.h" | 23 #include "mojo/public/cpp/system/data_pipe.h" |
| 23 #include "net/base/io_buffer.h" | 24 #include "net/base/io_buffer.h" |
| 24 #include "net/base/load_flags.h" | 25 #include "net/base/load_flags.h" |
| 25 #include "net/base/mime_sniffer.h" | 26 #include "net/base/mime_sniffer.h" |
| 26 #include "net/url_request/redirect_info.h" | 27 #include "net/url_request/redirect_info.h" |
| 27 | 28 |
| 28 namespace content { | 29 namespace content { |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 104 net::URLRequest* request, | 105 net::URLRequest* request, |
| 105 ResourceDispatcherHostImpl* rdh, | 106 ResourceDispatcherHostImpl* rdh, |
| 106 mojo::InterfaceRequest<mojom::URLLoader> mojo_request, | 107 mojo::InterfaceRequest<mojom::URLLoader> mojo_request, |
| 107 mojom::URLLoaderClientPtr url_loader_client) | 108 mojom::URLLoaderClientPtr url_loader_client) |
| 108 : ResourceHandler(request), | 109 : ResourceHandler(request), |
| 109 rdh_(rdh), | 110 rdh_(rdh), |
| 110 binding_(this, std::move(mojo_request)), | 111 binding_(this, std::move(mojo_request)), |
| 111 url_loader_client_(std::move(url_loader_client)) { | 112 url_loader_client_(std::move(url_loader_client)) { |
| 112 DCHECK(url_loader_client_); | 113 DCHECK(url_loader_client_); |
| 113 InitializeResourceBufferConstants(); | 114 InitializeResourceBufferConstants(); |
| 115 // This unretained pointer is safe because the callback will never be called | |
| 116 // after |this| destruction. | |
|
mmenke
2016/11/03 18:17:41
nit: "after |this| is destroyed."
Could optional
yhirano
2016/11/08 11:52:23
Done.
| |
| 117 binding_.set_connection_error_handler( | |
| 118 base::Bind(&MojoAsyncResourceHandler::Cancel, base::Unretained(this))); | |
| 114 } | 119 } |
| 115 | 120 |
| 116 MojoAsyncResourceHandler::~MojoAsyncResourceHandler() { | 121 MojoAsyncResourceHandler::~MojoAsyncResourceHandler() { |
| 117 if (has_checked_for_sufficient_resources_) | 122 if (has_checked_for_sufficient_resources_) |
| 118 rdh_->FinishedWithResourcesForRequest(request()); | 123 rdh_->FinishedWithResourcesForRequest(request()); |
| 119 } | 124 } |
| 120 | 125 |
| 121 bool MojoAsyncResourceHandler::OnRequestRedirected( | 126 bool MojoAsyncResourceHandler::OnRequestRedirected( |
| 122 const net::RedirectInfo& redirect_info, | 127 const net::RedirectInfo& redirect_info, |
| 123 ResourceResponse* response, | 128 ResourceResponse* response, |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 230 } | 235 } |
| 231 | 236 |
| 232 void MojoAsyncResourceHandler::OnDataDownloaded(int bytes_downloaded) { | 237 void MojoAsyncResourceHandler::OnDataDownloaded(int bytes_downloaded) { |
| 233 // Not implemented. | 238 // Not implemented. |
| 234 } | 239 } |
| 235 | 240 |
| 236 void MojoAsyncResourceHandler::FollowRedirect() { | 241 void MojoAsyncResourceHandler::FollowRedirect() { |
| 237 NOTIMPLEMENTED(); | 242 NOTIMPLEMENTED(); |
| 238 } | 243 } |
| 239 | 244 |
| 240 void MojoAsyncResourceHandler::Cancel() { | |
| 241 NOTIMPLEMENTED(); | |
| 242 } | |
| 243 | |
| 244 void MojoAsyncResourceHandler::ResumeForTesting() { | 245 void MojoAsyncResourceHandler::ResumeForTesting() { |
| 245 Resume(); | 246 Resume(); |
| 246 } | 247 } |
| 247 | 248 |
| 248 void MojoAsyncResourceHandler::SetAllocationSizeForTesting(size_t size) { | 249 void MojoAsyncResourceHandler::SetAllocationSizeForTesting(size_t size) { |
| 249 g_allocation_size = size; | 250 g_allocation_size = size; |
| 250 } | 251 } |
| 251 | 252 |
| 252 MojoResult MojoAsyncResourceHandler::BeginWrite(void** data, | 253 MojoResult MojoAsyncResourceHandler::BeginWrite(void** data, |
| 253 uint32_t* available) { | 254 uint32_t* available) { |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 387 return true; | 388 return true; |
| 388 | 389 |
| 389 controller()->CancelWithError(net::ERR_INSUFFICIENT_RESOURCES); | 390 controller()->CancelWithError(net::ERR_INSUFFICIENT_RESOURCES); |
| 390 return false; | 391 return false; |
| 391 } | 392 } |
| 392 | 393 |
| 393 void MojoAsyncResourceHandler::OnWritable(MojoResult unused) { | 394 void MojoAsyncResourceHandler::OnWritable(MojoResult unused) { |
| 394 Resume(); | 395 Resume(); |
| 395 } | 396 } |
| 396 | 397 |
| 398 void MojoAsyncResourceHandler::Cancel() { | |
| 399 const ResourceRequestInfoImpl* info = GetRequestInfo(); | |
| 400 ResourceDispatcherHostImpl::Get()->CancelRequestFromRenderer( | |
| 401 GlobalRequestID(info->GetChildID(), info->GetRequestID())); | |
| 402 } | |
| 403 | |
| 397 } // namespace content | 404 } // namespace content |
| OLD | NEW |