OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/service_worker/service_worker_write_to_cache_job.h" | 5 #include "content/browser/service_worker/service_worker_write_to_cache_job.h" |
6 | 6 |
7 #include "content/browser/service_worker/service_worker_context_core.h" | 7 #include "content/browser/service_worker/service_worker_context_core.h" |
8 #include "content/browser/service_worker/service_worker_disk_cache.h" | 8 #include "content/browser/service_worker/service_worker_disk_cache.h" |
9 #include "content/browser/service_worker/service_worker_metrics.h" | 9 #include "content/browser/service_worker/service_worker_metrics.h" |
10 #include "net/base/io_buffer.h" | 10 #include "net/base/io_buffer.h" |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
187 void ServiceWorkerWriteToCacheJob::WriteHeadersToCache() { | 187 void ServiceWorkerWriteToCacheJob::WriteHeadersToCache() { |
188 if (!context_) { | 188 if (!context_) { |
189 AsyncNotifyDoneHelper(net::URLRequestStatus( | 189 AsyncNotifyDoneHelper(net::URLRequestStatus( |
190 net::URLRequestStatus::FAILED, net::ERR_FAILED)); | 190 net::URLRequestStatus::FAILED, net::ERR_FAILED)); |
191 return; | 191 return; |
192 } | 192 } |
193 writer_ = context_->storage()->CreateResponseWriter(response_id_); | 193 writer_ = context_->storage()->CreateResponseWriter(response_id_); |
194 info_buffer_ = new HttpResponseInfoIOBuffer( | 194 info_buffer_ = new HttpResponseInfoIOBuffer( |
195 new net::HttpResponseInfo(net_request_->response_info())); | 195 new net::HttpResponseInfo(net_request_->response_info())); |
196 writer_->WriteInfo( | 196 writer_->WriteInfo( |
197 info_buffer_, | 197 info_buffer_.get(), |
198 base::Bind(&ServiceWorkerWriteToCacheJob::OnWriteHeadersComplete, | 198 base::Bind(&ServiceWorkerWriteToCacheJob::OnWriteHeadersComplete, |
199 weak_factory_.GetWeakPtr())); | 199 weak_factory_.GetWeakPtr())); |
200 SetStatus(net::URLRequestStatus(net::URLRequestStatus::IO_PENDING, 0)); | 200 SetStatus(net::URLRequestStatus(net::URLRequestStatus::IO_PENDING, 0)); |
201 } | 201 } |
202 | 202 |
203 void ServiceWorkerWriteToCacheJob::OnWriteHeadersComplete(int result) { | 203 void ServiceWorkerWriteToCacheJob::OnWriteHeadersComplete(int result) { |
204 SetStatus(net::URLRequestStatus()); // Clear the IO_PENDING status | 204 SetStatus(net::URLRequestStatus()); // Clear the IO_PENDING status |
205 if (result < 0) { | 205 if (result < 0) { |
206 ServiceWorkerMetrics::CountWriteResponseResult( | 206 ServiceWorkerMetrics::CountWriteResponseResult( |
207 ServiceWorkerMetrics::WRITE_HEADERS_ERROR); | 207 ServiceWorkerMetrics::WRITE_HEADERS_ERROR); |
208 AsyncNotifyDoneHelper(net::URLRequestStatus( | 208 AsyncNotifyDoneHelper(net::URLRequestStatus( |
209 net::URLRequestStatus::FAILED, result)); | 209 net::URLRequestStatus::FAILED, result)); |
210 return; | 210 return; |
211 } | 211 } |
212 http_info_.reset(info_buffer_->http_info.release()); | 212 http_info_.reset(info_buffer_->http_info.release()); |
213 info_buffer_ = NULL; | 213 info_buffer_ = NULL; |
214 NotifyHeadersComplete(); | 214 NotifyHeadersComplete(); |
215 } | 215 } |
216 | 216 |
217 void ServiceWorkerWriteToCacheJob::WriteDataToCache(int amount_to_write) { | 217 void ServiceWorkerWriteToCacheJob::WriteDataToCache(int amount_to_write) { |
218 DCHECK_NE(0, amount_to_write); | 218 DCHECK_NE(0, amount_to_write); |
219 SetStatus(net::URLRequestStatus(net::URLRequestStatus::IO_PENDING, 0)); | 219 SetStatus(net::URLRequestStatus(net::URLRequestStatus::IO_PENDING, 0)); |
220 writer_->WriteData( | 220 writer_->WriteData( |
221 io_buffer_, amount_to_write, | 221 io_buffer_.get(), |
| 222 amount_to_write, |
222 base::Bind(&ServiceWorkerWriteToCacheJob::OnWriteDataComplete, | 223 base::Bind(&ServiceWorkerWriteToCacheJob::OnWriteDataComplete, |
223 weak_factory_.GetWeakPtr())); | 224 weak_factory_.GetWeakPtr())); |
224 } | 225 } |
225 | 226 |
226 void ServiceWorkerWriteToCacheJob::OnWriteDataComplete(int result) { | 227 void ServiceWorkerWriteToCacheJob::OnWriteDataComplete(int result) { |
227 DCHECK_NE(0, result); | 228 DCHECK_NE(0, result); |
228 io_buffer_ = NULL; | 229 io_buffer_ = NULL; |
229 if (!context_) { | 230 if (!context_) { |
230 AsyncNotifyDoneHelper(net::URLRequestStatus( | 231 AsyncNotifyDoneHelper(net::URLRequestStatus( |
231 net::URLRequestStatus::FAILED, net::ERR_FAILED)); | 232 net::URLRequestStatus::FAILED, net::ERR_FAILED)); |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
341 const net::URLRequestStatus& status) { | 342 const net::URLRequestStatus& status) { |
342 DCHECK(!status.is_io_pending()); | 343 DCHECK(!status.is_io_pending()); |
343 version_->script_cache_map()->NotifyFinishedCaching( | 344 version_->script_cache_map()->NotifyFinishedCaching( |
344 url_, status.is_success()); | 345 url_, status.is_success()); |
345 did_notify_finished_ = true; | 346 did_notify_finished_ = true; |
346 SetStatus(status); | 347 SetStatus(status); |
347 NotifyDone(status); | 348 NotifyDone(status); |
348 } | 349 } |
349 | 350 |
350 } // namespace content | 351 } // namespace content |
OLD | NEW |