Chromium Code Reviews| 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_cache.h" | 5 #include "content/browser/service_worker/service_worker_cache.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
| 10 #include "base/guid.h" | 10 #include "base/guid.h" |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 124 return; | 124 return; |
| 125 } | 125 } |
| 126 | 126 |
| 127 net::CompletionCallback cache_write_callback = | 127 net::CompletionCallback cache_write_callback = |
| 128 base::Bind(&BlobReader::DidWriteDataToEntry, | 128 base::Bind(&BlobReader::DidWriteDataToEntry, |
| 129 weak_ptr_factory_.GetWeakPtr(), | 129 weak_ptr_factory_.GetWeakPtr(), |
| 130 bytes_read); | 130 bytes_read); |
| 131 | 131 |
| 132 int rv = entry_->WriteData(INDEX_RESPONSE_BODY, | 132 int rv = entry_->WriteData(INDEX_RESPONSE_BODY, |
| 133 cache_entry_offset_, | 133 cache_entry_offset_, |
| 134 buffer_, | 134 buffer_.get(), |
| 135 bytes_read, | 135 bytes_read, |
| 136 cache_write_callback, | 136 cache_write_callback, |
| 137 true /* truncate */); | 137 true /* truncate */); |
| 138 if (rv != net::ERR_IO_PENDING) | 138 if (rv != net::ERR_IO_PENDING) |
| 139 cache_write_callback.Run(rv); | 139 cache_write_callback.Run(rv); |
| 140 } | 140 } |
| 141 | 141 |
| 142 void DidWriteDataToEntry(int expected_bytes, int rv) { | 142 void DidWriteDataToEntry(int expected_bytes, int rv) { |
| 143 if (rv != expected_bytes) { | 143 if (rv != expected_bytes) { |
| 144 callback_.Run(entry_.Pass(), false); | 144 callback_.Run(entry_.Pass(), false); |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 273 base::Bind(PutDidWriteHeaders, | 273 base::Bind(PutDidWriteHeaders, |
| 274 response, | 274 response, |
| 275 callback, | 275 callback, |
| 276 base::Passed(entry.Pass()), | 276 base::Passed(entry.Pass()), |
| 277 base::Passed(blob_data_handle.Pass()), | 277 base::Passed(blob_data_handle.Pass()), |
| 278 request_context, | 278 request_context, |
| 279 buffer->size()); | 279 buffer->size()); |
| 280 | 280 |
| 281 rv = tmp_entry_ptr->WriteData(INDEX_HEADERS, | 281 rv = tmp_entry_ptr->WriteData(INDEX_HEADERS, |
| 282 0 /* offset */, | 282 0 /* offset */, |
| 283 buffer, | 283 buffer.get(), |
| 284 buffer->size(), | 284 buffer->size(), |
| 285 write_headers_callback, | 285 write_headers_callback, |
| 286 true /* truncate */); | 286 true /* truncate */); |
| 287 | 287 |
| 288 if (rv != net::ERR_IO_PENDING) | 288 if (rv != net::ERR_IO_PENDING) |
| 289 write_headers_callback.Run(rv); | 289 write_headers_callback.Run(rv); |
| 290 } | 290 } |
| 291 | 291 |
| 292 void PutDidWriteHeaders(ServiceWorkerResponse* response, | 292 void PutDidWriteHeaders(ServiceWorkerResponse* response, |
| 293 const ServiceWorkerCache::ErrorCallback& callback, | 293 const ServiceWorkerCache::ErrorCallback& callback, |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 484 } | 484 } |
| 485 | 485 |
| 486 // TODO(jkarlin): This copying of the the entire cache response into memory is | 486 // TODO(jkarlin): This copying of the the entire cache response into memory is |
| 487 // awful. Create a new interface around SimpleCache that provides access the | 487 // awful. Create a new interface around SimpleCache that provides access the |
| 488 // data directly from the file. See bug http://crbug.com/403493. | 488 // data directly from the file. See bug http://crbug.com/403493. |
| 489 response_context->blob_data->AppendData(response_context->buffer->data(), rv); | 489 response_context->blob_data->AppendData(response_context->buffer->data(), rv); |
| 490 response_context->total_bytes_read += rv; | 490 response_context->total_bytes_read += rv; |
| 491 int total_bytes_read = response_context->total_bytes_read; | 491 int total_bytes_read = response_context->total_bytes_read; |
| 492 | 492 |
| 493 // Grab some pointers before passing them in bind. | 493 // Grab some pointers before passing them in bind. |
| 494 net::IOBufferWithSize* buffer = response_context->buffer; | 494 net::IOBufferWithSize* buffer = response_context->buffer.get(); |
|
dcheng
2014/08/26 17:10:57
Note: the tool believes this to be safe because it
| |
| 495 disk_cache::Entry* tmp_entry_ptr = entry.get(); | 495 disk_cache::Entry* tmp_entry_ptr = entry.get(); |
| 496 | 496 |
| 497 net::CompletionCallback read_callback = | 497 net::CompletionCallback read_callback = |
| 498 base::Bind(MatchDidReadResponseBodyData, | 498 base::Bind(MatchDidReadResponseBodyData, |
| 499 request, | 499 request, |
| 500 callback, | 500 callback, |
| 501 blob_storage, | 501 blob_storage, |
| 502 base::Passed(entry.Pass()), | 502 base::Passed(entry.Pass()), |
| 503 base::Passed(response.Pass()), | 503 base::Passed(response.Pass()), |
| 504 base::Passed(response_context.Pass())); | 504 base::Passed(response_context.Pass())); |
| (...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 709 const base::FilePath& path, | 709 const base::FilePath& path, |
| 710 net::URLRequestContext* request_context, | 710 net::URLRequestContext* request_context, |
| 711 base::WeakPtr<storage::BlobStorageContext> blob_context) | 711 base::WeakPtr<storage::BlobStorageContext> blob_context) |
| 712 : path_(path), | 712 : path_(path), |
| 713 request_context_(request_context), | 713 request_context_(request_context), |
| 714 blob_storage_context_(blob_context), | 714 blob_storage_context_(blob_context), |
| 715 weak_ptr_factory_(this) { | 715 weak_ptr_factory_(this) { |
| 716 } | 716 } |
| 717 | 717 |
| 718 } // namespace content | 718 } // namespace content |
| OLD | NEW |