Chromium Code Reviews| 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/infinite_cache.h" | 5 #include "net/http/infinite_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 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 268 const std::string cache_key = cache_->GenerateKey(request); | 268 const std::string cache_key = cache_->GenerateKey(request); |
| 269 if (cache_key == kGaJsHttpUrl) { | 269 if (cache_key == kGaJsHttpUrl) { |
| 270 resource_data_->details.flags |= GA_JS_HTTP; | 270 resource_data_->details.flags |= GA_JS_HTTP; |
| 271 } else if (cache_key == kGaJsHttpsUrl) { | 271 } else if (cache_key == kGaJsHttpsUrl) { |
| 272 resource_data_->details.flags |= GA_JS_HTTPS; | 272 resource_data_->details.flags |= GA_JS_HTTPS; |
| 273 } | 273 } |
| 274 | 274 |
| 275 CryptoHash(cache_key, &resource_data_->key); | 275 CryptoHash(cache_key, &resource_data_->key); |
| 276 } | 276 } |
| 277 | 277 |
| 278 void InfiniteCacheTransaction::OnBackNavigation() { | |
| 279 if (!cache_) | |
| 280 return; | |
| 281 UMA_HISTOGRAM_BOOLEAN("InfiniteCache.BackNavigation", true); | |
| 282 } | |
| 283 | |
| 278 void InfiniteCacheTransaction::OnResponseReceived( | 284 void InfiniteCacheTransaction::OnResponseReceived( |
| 279 const HttpResponseInfo* response) { | 285 const HttpResponseInfo* response) { |
| 280 if (!cache_) | 286 if (!cache_) |
| 281 return; | 287 return; |
| 282 | 288 |
| 283 Details& details = resource_data_->details; | 289 Details& details = resource_data_->details; |
| 284 | 290 |
| 285 // Store the old flag values that we want to preserve. | 291 // Store the old flag values that we want to preserve. |
| 286 const uint32 kPreserveFlagsBitMask = (GA_JS_HTTP | GA_JS_HTTPS | DOOM_METHOD); | 292 const uint32 kPreserveFlagsBitMask = (GA_JS_HTTP | GA_JS_HTTPS | DOOM_METHOD); |
| 287 uint32 old_flag_values = details.flags & kPreserveFlagsBitMask; | 293 uint32 old_flag_values = details.flags & kPreserveFlagsBitMask; |
| (...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 515 if (!init_) | 521 if (!init_) |
| 516 return; | 522 return; |
| 517 | 523 |
| 518 if (data->details.response_size > kMaxTrackingSize) | 524 if (data->details.response_size > kMaxTrackingSize) |
| 519 return; | 525 return; |
| 520 | 526 |
| 521 if (header_->num_entries == kMaxNumEntries || header_->disabled) | 527 if (header_->num_entries == kMaxNumEntries || header_->disabled) |
| 522 return; | 528 return; |
| 523 | 529 |
| 524 UMA_HISTOGRAM_BOOLEAN("InfiniteCache.TotalRequests", true); | 530 UMA_HISTOGRAM_BOOLEAN("InfiniteCache.TotalRequests", true); |
| 531 if (data->details.flags & NO_STORE) | |
| 532 UMA_HISTOGRAM_BOOLEAN("InfiniteCache.NoStore", true); | |
| 533 | |
| 525 header_->num_requests++; | 534 header_->num_requests++; |
| 526 KeyMap::iterator i = map_.find(data->key); | 535 KeyMap::iterator i = map_.find(data->key); |
| 527 if (i != map_.end()) { | 536 if (i != map_.end()) { |
| 528 if (data->details.flags & DOOM_METHOD) { | 537 if (data->details.flags & DOOM_METHOD) { |
| 538 UMA_HISTOGRAM_BOOLEAN("InfiniteCache.DoomMethodHit", true); | |
|
gavinp
2012/10/25 18:25:47
Is this part of a separate CL that got mixed in he
rvargas (doing something else)
2012/10/25 18:32:18
part of this CL. The whole CL is about getting clo
gavinp
2012/10/25 18:56:26
Great. The CL probably needs the subject and descr
rvargas (doing something else)
2012/10/25 19:04:49
Feel free to modify it as you wish.
| |
| 529 Remove(i->second); | 539 Remove(i->second); |
| 530 map_.erase(i); | 540 map_.erase(i); |
| 531 return; | 541 return; |
| 532 } | 542 } |
| 533 data->details.use_count = i->second.use_count; | 543 data->details.use_count = i->second.use_count; |
| 534 data->details.update_count = i->second.update_count; | 544 data->details.update_count = i->second.update_count; |
| 535 bool reused = CanReuse(i->second, data->details); | 545 bool reused = CanReuse(i->second, data->details); |
| 536 bool data_changed = DataChanged(i->second, data->details); | 546 bool data_changed = DataChanged(i->second, data->details); |
| 537 bool headers_changed = HeadersChanged(i->second, data->details); | 547 bool headers_changed = HeadersChanged(i->second, data->details); |
| 538 | 548 |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 554 return; | 564 return; |
| 555 } | 565 } |
| 556 | 566 |
| 557 map_[data->key] = data->details; | 567 map_[data->key] = data->details; |
| 558 return; | 568 return; |
| 559 } | 569 } |
| 560 | 570 |
| 561 if (data->details.flags & NO_STORE) | 571 if (data->details.flags & NO_STORE) |
| 562 return; | 572 return; |
| 563 | 573 |
| 564 if (data->details.flags & DOOM_METHOD) | 574 if (data->details.flags & DOOM_METHOD) { |
| 575 UMA_HISTOGRAM_BOOLEAN("InfiniteCache.DoomMethodMiss", true); | |
| 565 return; | 576 return; |
| 577 } | |
| 566 | 578 |
| 567 map_[data->key] = data->details; | 579 map_[data->key] = data->details; |
| 568 Add(data->details); | 580 Add(data->details); |
| 569 } | 581 } |
| 570 | 582 |
| 571 void InfiniteCache::Worker::LoadData() { | 583 void InfiniteCache::Worker::LoadData() { |
| 572 if (path_.empty()) | 584 if (path_.empty()) |
| 573 return InitializeData();; | 585 return InitializeData(); |
| 574 | 586 |
| 575 PlatformFile file = base::CreatePlatformFile( | 587 PlatformFile file = base::CreatePlatformFile( |
| 576 path_, base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ, NULL, NULL); | 588 path_, base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ, NULL, NULL); |
| 577 if (file == base::kInvalidPlatformFileValue) | 589 if (file == base::kInvalidPlatformFileValue) |
| 578 return InitializeData(); | 590 return InitializeData(); |
| 579 if (!ReadData(file)) | 591 if (!ReadData(file)) |
| 580 InitializeData(); | 592 InitializeData(); |
| 581 base::ClosePlatformFile(file); | 593 base::ClosePlatformFile(file); |
| 582 if (header_->disabled) { | 594 if (header_->disabled) { |
| 583 UMA_HISTOGRAM_BOOLEAN("InfiniteCache.Full", true); | 595 UMA_HISTOGRAM_BOOLEAN("InfiniteCache.Full", true); |
| (...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1090 int InfiniteCache::FlushDataForTest(const CompletionCallback& callback) { | 1102 int InfiniteCache::FlushDataForTest(const CompletionCallback& callback) { |
| 1091 DCHECK(worker_); | 1103 DCHECK(worker_); |
| 1092 int* result = new int; | 1104 int* result = new int; |
| 1093 task_runner_->PostTaskAndReply( | 1105 task_runner_->PostTaskAndReply( |
| 1094 FROM_HERE, base::Bind(&InfiniteCache::Worker::Flush, worker_, result), | 1106 FROM_HERE, base::Bind(&InfiniteCache::Worker::Flush, worker_, result), |
| 1095 base::Bind(&OnComplete, callback, base::Owned(result))); | 1107 base::Bind(&OnComplete, callback, base::Owned(result))); |
| 1096 return net::ERR_IO_PENDING; | 1108 return net::ERR_IO_PENDING; |
| 1097 } | 1109 } |
| 1098 | 1110 |
| 1099 } // namespace net | 1111 } // namespace net |
| OLD | NEW |