Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(378)

Side by Side Diff: content/browser/cache_storage/cache_storage_index.cc

Issue 2416713002: Write out CacheStorageCache size to index file. (Closed)
Patch Set: Only updating cache sizes for non-doomed caches Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/browser/cache_storage/cache_storage_index.h"
6
7 #include <utility>
8
9 namespace content {
10
11 CacheStorageIndex::CacheStorageIndex(const CacheStorageIndex& other) {
12 for (const auto& cache_metadata : other.ordered_cache_metadata_)
13 Insert(cache_metadata);
14 }
15
16 CacheStorageIndex::CacheStorageIndex() = default;
17
18 CacheStorageIndex::~CacheStorageIndex() = default;
19
20 CacheStorageIndex& CacheStorageIndex::operator=(CacheStorageIndex&& rhs) {
21 ordered_cache_metadata_ = std::move(rhs.ordered_cache_metadata_);
22 cache_metadata_map_ = std::move(rhs.cache_metadata_map_);
23 storage_size_ = rhs.storage_size_;
24 rhs.storage_size_ = CacheStorage::kSizeUnknown;
25 return *this;
26 }
27
28 CacheStorageIndex& CacheStorageIndex::operator=(const CacheStorageIndex& rhs) {
29 ordered_cache_metadata_.clear();
30 cache_metadata_map_.clear();
31 for (const auto& metadata : rhs.ordered_cache_metadata_)
32 Insert(metadata);
33 storage_size_ = rhs.storage_size_;
34 return *this;
35 }
36
37 void CacheStorageIndex::Insert(const CacheMetadata& cache_metadata) {
38 DCHECK(cache_metadata_map_.find(cache_metadata.name) ==
39 cache_metadata_map_.end());
40 ordered_cache_metadata_.push_back(cache_metadata);
41 cache_metadata_map_[cache_metadata.name] = --ordered_cache_metadata_.end();
42 storage_size_ = CacheStorage::kSizeUnknown;
43 }
44
45 void CacheStorageIndex::Delete(const std::string& cache_name) {
46 auto it = cache_metadata_map_.find(cache_name);
47 DCHECK(it != cache_metadata_map_.end());
48 ordered_cache_metadata_.erase(it->second);
49 cache_metadata_map_.erase(it);
50 storage_size_ = CacheStorage::kSizeUnknown;
51 }
52
53 bool CacheStorageIndex::SetCacheSize(const std::string& cache_name,
54 int64_t size) {
55 auto it = cache_metadata_map_.find(cache_name);
56 DCHECK(it != cache_metadata_map_.end());
57 if (it->second->size == size)
58 return false;
59 it->second->size = size;
60 storage_size_ = CacheStorage::kSizeUnknown;
61 return true;
62 }
63
64 int64_t CacheStorageIndex::GetCacheSize(const std::string& cache_name) const {
65 const auto& it = cache_metadata_map_.find(cache_name);
66 if (it == cache_metadata_map_.end())
67 return CacheStorage::kSizeUnknown;
68 return it->second->size;
69 }
70
71 int64_t CacheStorageIndex::GetStorageSize() {
72 if (storage_size_ == CacheStorage::kSizeUnknown)
73 UpdateStorageSize();
74 return storage_size_;
75 }
76
77 void CacheStorageIndex::UpdateStorageSize() {
78 int64_t storage_size = 0;
79 storage_size_ = CacheStorage::kSizeUnknown;
80 for (const CacheMetadata& info : ordered_cache_metadata_) {
81 if (info.size == CacheStorage::kSizeUnknown)
82 return;
83 storage_size += info.size;
84 }
85 storage_size_ = storage_size;
86 }
87
88 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698