| 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 "net/http/http_cache.h" | 5 #include "net/http/http_cache.h" | 
| 6 | 6 | 
| 7 #include <algorithm> | 7 #include <algorithm> | 
| 8 | 8 | 
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" | 
| 10 | 10 | 
| 11 #if defined(OS_POSIX) | 11 #if defined(OS_POSIX) | 
| 12 #include <unistd.h> | 12 #include <unistd.h> | 
| 13 #endif | 13 #endif | 
| 14 | 14 | 
| 15 #include "base/bind.h" | 15 #include "base/bind.h" | 
| 16 #include "base/bind_helpers.h" | 16 #include "base/bind_helpers.h" | 
| 17 #include "base/callback.h" | 17 #include "base/callback.h" | 
| 18 #include "base/format_macros.h" | 18 #include "base/format_macros.h" | 
| 19 #include "base/location.h" | 19 #include "base/location.h" | 
| 20 #include "base/memory/ref_counted.h" | 20 #include "base/memory/ref_counted.h" | 
| 21 #include "base/message_loop.h" | 21 #include "base/message_loop.h" | 
|  | 22 #include "base/metrics/field_trial.h" | 
| 22 #include "base/pickle.h" | 23 #include "base/pickle.h" | 
| 23 #include "base/stl_util.h" | 24 #include "base/stl_util.h" | 
| 24 #include "base/string_number_conversions.h" | 25 #include "base/string_number_conversions.h" | 
| 25 #include "base/string_util.h" | 26 #include "base/string_util.h" | 
| 26 #include "base/stringprintf.h" | 27 #include "base/stringprintf.h" | 
| 27 #include "net/base/io_buffer.h" | 28 #include "net/base/io_buffer.h" | 
| 28 #include "net/base/load_flags.h" | 29 #include "net/base/load_flags.h" | 
| 29 #include "net/base/net_errors.h" | 30 #include "net/base/net_errors.h" | 
| 30 #include "net/disk_cache/disk_cache.h" | 31 #include "net/disk_cache/disk_cache.h" | 
| 31 #include "net/http/http_cache_transaction.h" | 32 #include "net/http/http_cache_transaction.h" | 
| (...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 402                               int buf_len) { | 403                               int buf_len) { | 
| 403   if (!buf_len) | 404   if (!buf_len) | 
| 404     return; | 405     return; | 
| 405 | 406 | 
| 406   // Do lazy initialization of disk cache if needed. | 407   // Do lazy initialization of disk cache if needed. | 
| 407   if (!disk_cache_.get()) { | 408   if (!disk_cache_.get()) { | 
| 408     // We don't care about the result. | 409     // We don't care about the result. | 
| 409     CreateBackend(NULL, net::CompletionCallback()); | 410     CreateBackend(NULL, net::CompletionCallback()); | 
| 410   } | 411   } | 
| 411 | 412 | 
| 412   HttpCache::Transaction* trans = new HttpCache::Transaction(this, NULL); | 413   HttpCache::Transaction* trans = new HttpCache::Transaction(this, NULL, NULL); | 
| 413   MetadataWriter* writer = new MetadataWriter(trans); | 414   MetadataWriter* writer = new MetadataWriter(trans); | 
| 414 | 415 | 
| 415   // The writer will self destruct when done. | 416   // The writer will self destruct when done. | 
| 416   writer->Write(url, expected_response_time, buf, buf_len); | 417   writer->Write(url, expected_response_time, buf, buf_len); | 
| 417 } | 418 } | 
| 418 | 419 | 
| 419 void HttpCache::CloseAllConnections() { | 420 void HttpCache::CloseAllConnections() { | 
| 420   net::HttpNetworkLayer* network = | 421   net::HttpNetworkLayer* network = | 
| 421       static_cast<net::HttpNetworkLayer*>(network_layer_.get()); | 422       static_cast<net::HttpNetworkLayer*>(network_layer_.get()); | 
| 422   HttpNetworkSession* session = network->GetSession(); | 423   HttpNetworkSession* session = network->GetSession(); | 
| (...skipping 14 matching lines...) Expand all  Loading... | 
| 437   if (!disk_cache_.get()) | 438   if (!disk_cache_.get()) | 
| 438     return; | 439     return; | 
| 439 | 440 | 
| 440   HttpRequestInfo request_info; | 441   HttpRequestInfo request_info; | 
| 441   request_info.url = url; | 442   request_info.url = url; | 
| 442   request_info.method = http_method; | 443   request_info.method = http_method; | 
| 443   std::string key = GenerateCacheKey(&request_info); | 444   std::string key = GenerateCacheKey(&request_info); | 
| 444   disk_cache_->OnExternalCacheHit(key); | 445   disk_cache_->OnExternalCacheHit(key); | 
| 445 } | 446 } | 
| 446 | 447 | 
|  | 448 void HttpCache::InitializeInfiniteCache(const FilePath& path) { | 
|  | 449   if (base::FieldTrialList::FindFullName("InfiniteCache") != "Yes") | 
|  | 450     return; | 
|  | 451   // To be enabled after everything is fully wired. | 
|  | 452   // infinite_cache_.Init(path); | 
|  | 453 } | 
|  | 454 | 
| 447 int HttpCache::CreateTransaction(scoped_ptr<HttpTransaction>* trans, | 455 int HttpCache::CreateTransaction(scoped_ptr<HttpTransaction>* trans, | 
| 448                                  HttpTransactionDelegate* delegate) { | 456                                  HttpTransactionDelegate* delegate) { | 
| 449   // Do lazy initialization of disk cache if needed. | 457   // Do lazy initialization of disk cache if needed. | 
| 450   if (!disk_cache_.get()) { | 458   if (!disk_cache_.get()) { | 
| 451     // We don't care about the result. | 459     // We don't care about the result. | 
| 452     CreateBackend(NULL, net::CompletionCallback()); | 460     CreateBackend(NULL, net::CompletionCallback()); | 
| 453   } | 461   } | 
| 454 | 462 | 
| 455   trans->reset(new HttpCache::Transaction(this, delegate)); | 463   InfiniteCacheTransaction* infinite_cache_transaction = | 
|  | 464       infinite_cache_.CreateInfiniteCacheTransaction(); | 
|  | 465   trans->reset(new HttpCache::Transaction(this, delegate, | 
|  | 466                                           infinite_cache_transaction)); | 
| 456   return OK; | 467   return OK; | 
| 457 } | 468 } | 
| 458 | 469 | 
| 459 HttpCache* HttpCache::GetCache() { | 470 HttpCache* HttpCache::GetCache() { | 
| 460   return this; | 471   return this; | 
| 461 } | 472 } | 
| 462 | 473 | 
| 463 HttpNetworkSession* HttpCache::GetSession() { | 474 HttpNetworkSession* HttpCache::GetSession() { | 
| 464   net::HttpNetworkLayer* network = | 475   net::HttpNetworkLayer* network = | 
| 465       static_cast<net::HttpNetworkLayer*>(network_layer_.get()); | 476       static_cast<net::HttpNetworkLayer*>(network_layer_.get()); | 
| (...skipping 681 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1147     building_backend_ = false; | 1158     building_backend_ = false; | 
| 1148     DeletePendingOp(pending_op); | 1159     DeletePendingOp(pending_op); | 
| 1149   } | 1160   } | 
| 1150 | 1161 | 
| 1151   // The cache may be gone when we return from the callback. | 1162   // The cache may be gone when we return from the callback. | 
| 1152   if (!item->DoCallback(result, backend)) | 1163   if (!item->DoCallback(result, backend)) | 
| 1153     item->NotifyTransaction(result, NULL); | 1164     item->NotifyTransaction(result, NULL); | 
| 1154 } | 1165 } | 
| 1155 | 1166 | 
| 1156 }  // namespace net | 1167 }  // namespace net | 
| OLD | NEW | 
|---|