OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/sync_resource_handler.h" | 5 #include "content/browser/loader/sync_resource_handler.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "content/browser/loader/netlog_observer.h" | 8 #include "content/browser/loader/netlog_observer.h" |
9 #include "content/browser/loader/resource_dispatcher_host_impl.h" | 9 #include "content/browser/loader/resource_dispatcher_host_impl.h" |
10 #include "content/browser/loader/resource_message_filter.h" | 10 #include "content/browser/loader/resource_message_filter.h" |
11 #include "content/browser/loader/resource_request_info_impl.h" | 11 #include "content/browser/loader/resource_request_info_impl.h" |
12 #include "content/common/resource_messages.h" | 12 #include "content/common/resource_messages.h" |
13 #include "content/public/browser/resource_dispatcher_host_delegate.h" | 13 #include "content/public/browser/resource_dispatcher_host_delegate.h" |
14 #include "content/public/browser/resource_request_info.h" | 14 #include "content/public/browser/resource_request_info.h" |
15 #include "net/base/io_buffer.h" | 15 #include "net/base/io_buffer.h" |
16 #include "net/http/http_response_headers.h" | 16 #include "net/http/http_response_headers.h" |
17 #include "net/url_request/redirect_info.h" | 17 #include "net/url_request/redirect_info.h" |
18 | 18 |
19 namespace content { | 19 namespace content { |
20 | 20 |
21 SyncResourceHandler::SyncResourceHandler( | 21 SyncResourceHandler::SyncResourceHandler( |
22 net::URLRequest* request, | 22 net::URLRequest* request, |
23 IPC::Message* result_message, | 23 const SyncLoadResultCallback& result_handler, |
24 ResourceDispatcherHostImpl* resource_dispatcher_host) | 24 ResourceDispatcherHostImpl* resource_dispatcher_host) |
25 : ResourceHandler(request), | 25 : ResourceHandler(request), |
26 read_buffer_(new net::IOBuffer(kReadBufSize)), | 26 read_buffer_(new net::IOBuffer(kReadBufSize)), |
27 result_message_(result_message), | 27 result_handler_(result_handler), |
28 rdh_(resource_dispatcher_host), | 28 rdh_(resource_dispatcher_host), |
29 total_transfer_size_(0) { | 29 total_transfer_size_(0) { |
30 result_.final_url = request->url(); | 30 result_.final_url = request->url(); |
31 } | 31 } |
32 | 32 |
33 SyncResourceHandler::~SyncResourceHandler() { | 33 SyncResourceHandler::~SyncResourceHandler() { |
34 if (result_message_) { | 34 if (result_handler_) |
35 result_message_->set_reply_error(); | 35 result_handler_.Run(nullptr); |
yhirano
2016/10/05 08:49:53
This nullptr is corresponding to L427 in resource_
tzik
2016/10/06 12:52:03
Done.
| |
36 ResourceMessageFilter* filter = GetFilter(); | |
37 // If the filter doesn't exist at this point, the process has died and isn't | |
38 // waiting for the result message anymore. | |
39 if (filter) | |
40 filter->Send(result_message_); | |
41 } | |
42 } | 36 } |
43 | 37 |
44 bool SyncResourceHandler::OnRequestRedirected( | 38 bool SyncResourceHandler::OnRequestRedirected( |
45 const net::RedirectInfo& redirect_info, | 39 const net::RedirectInfo& redirect_info, |
46 ResourceResponse* response, | 40 ResourceResponse* response, |
47 bool* defer) { | 41 bool* defer) { |
48 if (rdh_->delegate()) { | 42 if (rdh_->delegate()) { |
49 rdh_->delegate()->OnRequestRedirected( | 43 rdh_->delegate()->OnRequestRedirected( |
50 redirect_info.new_url, request(), GetRequestInfo()->GetContext(), | 44 redirect_info.new_url, request(), GetRequestInfo()->GetContext(), |
51 response); | 45 response); |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
107 bool SyncResourceHandler::OnReadCompleted(int bytes_read, bool* defer) { | 101 bool SyncResourceHandler::OnReadCompleted(int bytes_read, bool* defer) { |
108 if (!bytes_read) | 102 if (!bytes_read) |
109 return true; | 103 return true; |
110 result_.data.append(read_buffer_->data(), bytes_read); | 104 result_.data.append(read_buffer_->data(), bytes_read); |
111 return true; | 105 return true; |
112 } | 106 } |
113 | 107 |
114 void SyncResourceHandler::OnResponseCompleted( | 108 void SyncResourceHandler::OnResponseCompleted( |
115 const net::URLRequestStatus& status, | 109 const net::URLRequestStatus& status, |
116 bool* defer) { | 110 bool* defer) { |
117 ResourceMessageFilter* filter = GetFilter(); | 111 ResourceMessageFilter* filter = GetFilter(); |
yhirano
2016/10/05 08:49:53
This is not used.
tzik
2016/10/06 12:52:03
Done.
| |
118 if (!filter) | 112 if (!filter) |
119 return; | 113 return; |
120 | 114 |
121 result_.error_code = status.error(); | 115 result_.error_code = status.error(); |
122 | 116 |
123 int total_transfer_size = request()->GetTotalReceivedBytes(); | 117 int total_transfer_size = request()->GetTotalReceivedBytes(); |
124 result_.encoded_data_length = total_transfer_size_ + total_transfer_size; | 118 result_.encoded_data_length = total_transfer_size_ + total_transfer_size; |
125 result_.encoded_body_length = request()->GetRawBodyBytes(); | 119 result_.encoded_body_length = request()->GetRawBodyBytes(); |
126 | 120 |
127 ResourceHostMsg_SyncLoad::WriteReplyParams(result_message_, result_); | 121 result_handler_.Run(&result_); |
128 filter->Send(result_message_); | 122 result_handler_.Reset(); |
mmenke
2016/10/05 15:21:33
base::ResetAndReturn(result_handler_).Run?
tzik
2016/10/06 12:52:03
Done.
| |
129 result_message_ = NULL; | |
130 return; | 123 return; |
131 } | 124 } |
132 | 125 |
133 void SyncResourceHandler::OnDataDownloaded(int bytes_downloaded) { | 126 void SyncResourceHandler::OnDataDownloaded(int bytes_downloaded) { |
134 // Sync requests don't involve ResourceMsg_DataDownloaded messages | 127 // Sync requests don't involve ResourceMsg_DataDownloaded messages |
135 // being sent back to renderers as progress is made. | 128 // being sent back to renderers as progress is made. |
136 } | 129 } |
137 | 130 |
138 } // namespace content | 131 } // namespace content |
OLD | NEW |