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

Side by Side Diff: chrome/browser/browsing_data/site_data_size_collector.cc

Issue 2092663002: Add a counter to calculate the total size of site data. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 months 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 "chrome/browser/browsing_data/site_data_size_collector.h"
6
7 #include "base/files/file_util.h"
8 #include "chrome/common/chrome_constants.h"
9 #include "chrome/common/pref_names.h"
10 #include "content/public/browser/browser_thread.h"
11 #include "content/public/common/content_constants.h"
12
13 SiteDataSizeCollector::SiteDataSizeCollector(Profile* profile)
14 : profile_(profile)
15 , storage_partition_(nullptr)
16 , in_flight_operations_(0)
17 , total_bytes_(0)
18 , weak_ptr_factory_(this) {
19 }
20
21 SiteDataSizeCollector::~SiteDataSizeCollector() {
22 }
23
24 void SiteDataSizeCollector::Fetch(const FetchCallback& callback) {
msramek 2016/06/23 21:30:35 Looking at BrowsingDataRemover::REMOVE_SITE_DATA,
fukino 2016/06/30 09:21:24 I'll include SITE_USAGE_DATA and WEB_APP_DATA, and
msramek 2016/06/30 13:58:10 Sounds good. Please add a TODO or file a bug for t
25 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
26 DCHECK(!callback.is_null());
27
28 fetch_callback_ = callback;
29 total_bytes_ = 0;
30 in_flight_operations_ = 0;
31
32 storage_partition_ =
33 content::BrowserContext::GetDefaultStoragePartition(profile_);
34 appcache_helper_ = new BrowsingDataAppCacheHelper(profile_);
35 cookie_helper_ = new BrowsingDataCookieHelper(
36 profile_->GetRequestContext());
37 database_helper_ = new BrowsingDataDatabaseHelper(profile_);
38 local_storage_helper_ = new BrowsingDataLocalStorageHelper(profile_);
39 indexed_db_helper_ = new BrowsingDataIndexedDBHelper(
40 storage_partition_->GetIndexedDBContext());
41 file_system_helper_ = BrowsingDataFileSystemHelper::Create(
42 storage_partition_->GetFileSystemContext());
43 quota_helper_ = BrowsingDataQuotaHelper::Create(profile_);
44 channel_id_helper_ = BrowsingDataChannelIDHelper::Create(
45 profile_->GetRequestContext());
46 service_worker_helper_ = new BrowsingDataServiceWorkerHelper(
47 storage_partition_->GetServiceWorkerContext());
48 cache_storage_helper_ = new BrowsingDataCacheStorageHelper(
49 storage_partition_->GetCacheStorageContext());
50 flash_lso_helper_ = BrowsingDataFlashLSOHelper::Create(profile_);
51
52 appcache_helper_->StartFetching(
53 base::Bind(&SiteDataSizeCollector::OnAppCacheModelInfoLoaded,
54 weak_ptr_factory_.GetWeakPtr()));
55 in_flight_operations_++;
56 cookie_helper_->StartFetching(
57 base::Bind(&SiteDataSizeCollector::OnCookiesModelInfoLoaded,
58 weak_ptr_factory_.GetWeakPtr()));
59 in_flight_operations_++;
60 database_helper_->StartFetching(
61 base::Bind(&SiteDataSizeCollector::OnDatabaseModelInfoLoaded,
62 weak_ptr_factory_.GetWeakPtr()));
63 in_flight_operations_++;
64 local_storage_helper_->StartFetching(
65 base::Bind(&SiteDataSizeCollector::OnLocalStorageModelInfoLoaded,
66 weak_ptr_factory_.GetWeakPtr()));
67 in_flight_operations_++;
68 indexed_db_helper_->StartFetching(
69 base::Bind(&SiteDataSizeCollector::OnIndexedDBModelInfoLoaded,
70 weak_ptr_factory_.GetWeakPtr()));
71 in_flight_operations_++;
72 file_system_helper_->StartFetching(
73 base::Bind(&SiteDataSizeCollector::OnFileSystemModelInfoLoaded,
74 weak_ptr_factory_.GetWeakPtr()));
75 in_flight_operations_++;
76 quota_helper_->StartFetching(
77 base::Bind(&SiteDataSizeCollector::OnQuotaModelInfoLoaded,
78 weak_ptr_factory_.GetWeakPtr()));
79 in_flight_operations_++;
80 channel_id_helper_->StartFetching(
81 base::Bind(&SiteDataSizeCollector::OnChannelIDModelInfoLoaded,
82 weak_ptr_factory_.GetWeakPtr()));
83 in_flight_operations_++;
84 service_worker_helper_->StartFetching(
85 base::Bind(&SiteDataSizeCollector::OnServiceWorkerModelInfoLoaded,
86 weak_ptr_factory_.GetWeakPtr()));
87 in_flight_operations_++;
88 cache_storage_helper_->StartFetching(
89 base::Bind(&SiteDataSizeCollector::OnCacheStorageModelInfoLoaded,
90 weak_ptr_factory_.GetWeakPtr()));
91 in_flight_operations_++;
92 flash_lso_helper_->StartFetching(
93 base::Bind(&SiteDataSizeCollector::OnFlashLSOInfoLoaded,
94 weak_ptr_factory_.GetWeakPtr()));
95 in_flight_operations_++;
96 }
97
98 void SiteDataSizeCollector::OnAppCacheModelInfoLoaded(
99 scoped_refptr<content::AppCacheInfoCollection> appcache_info) {
100 int64_t total_size = 0;
101 if (appcache_info.get()) {
102 for (const auto& origin : appcache_info->infos_by_origin) {
103 for (const auto& info : origin.second)
104 total_size += info.size;
105 }
106 }
107 OnStorageSizeFetched(total_size);
108 }
109
110 void SiteDataSizeCollector::OnCookiesModelInfoLoaded(
111 const net::CookieList& cookie_list) {
112 int64_t size = 0;
113 if (!cookie_list.empty()) {
114 // Consider cookie file size only when at least one cookie is found.
115 base::FilePath cookie_file_path = storage_partition_->GetPath()
116 .Append(chrome::kCookieFilename);
117 base::GetFileSize(cookie_file_path, &size);
118 }
119 OnStorageSizeFetched(size);
120 }
121
122 void SiteDataSizeCollector::OnDatabaseModelInfoLoaded(
123 const DatabaseInfoList& database_info_list) {
124 int64_t total_size = 0;
125 for (const auto& database_info : database_info_list)
126 total_size += database_info.size;
127 OnStorageSizeFetched(total_size);
128 }
129
130 void SiteDataSizeCollector::OnLocalStorageModelInfoLoaded(
131 const LocalStorageInfoList& local_storage_info_list) {
132 int64_t total_size = 0;
133 for (const auto& local_storage_info : local_storage_info_list)
134 total_size += local_storage_info.size;
135 OnStorageSizeFetched(total_size);
136 }
137
138 void SiteDataSizeCollector::OnIndexedDBModelInfoLoaded(
139 const std::list<content::IndexedDBInfo>& indexed_db_info_list) {
140 int64_t total_size = 0;
141 for (const auto& indexed_db_info : indexed_db_info_list)
142 total_size += indexed_db_info.size;
143 OnStorageSizeFetched(total_size);
144 }
145
146 void SiteDataSizeCollector::OnFileSystemModelInfoLoaded(
147 const FileSystemInfoList& file_system_info_list) {
148 int64_t total_size = 0;
149 for (const auto& file_system_info : file_system_info_list) {
150 for (const auto& usage : file_system_info.usage_map)
151 total_size += usage.second;
152 }
153 OnStorageSizeFetched(total_size);
154 }
155
156 void SiteDataSizeCollector::OnQuotaModelInfoLoaded(
msramek 2016/06/23 21:30:35 Quota model consists of these things: https://cs.
fukino 2016/06/30 09:21:24 It seems all sizes in quota model are already coun
157 const QuotaInfoList& quota_info_list) {
158 int64_t total_size = 0;
159 for (const auto& quota_info : quota_info_list) {
160 total_size += quota_info.temporary_usage + quota_info.persistent_usage +
161 quota_info.syncable_usage;
162 }
163 OnStorageSizeFetched(total_size);
164 }
165
166 void SiteDataSizeCollector::OnChannelIDModelInfoLoaded(
167 const ChannelIDList& channel_id_list) {
168 int64_t size = 0;
169 if (!channel_id_list.empty()) {
170 // Consider channel id file size only when at least one channel id is found.
171 base::FilePath channel_id_file_path = storage_partition_->GetPath()
172 .Append(chrome::kChannelIDFilename);
173 base::GetFileSize(channel_id_file_path, &size);
174 }
175 OnStorageSizeFetched(size);
176 }
177
178 void SiteDataSizeCollector::OnServiceWorkerModelInfoLoaded(
179 const ServiceWorkerUsageInfoList& service_worker_info_list) {
180 int64_t total_size = 0;
181 for (const auto& service_worker_info : service_worker_info_list)
182 total_size += service_worker_info.total_size_bytes;
183 OnStorageSizeFetched(total_size);
184 }
185
186 void SiteDataSizeCollector::OnCacheStorageModelInfoLoaded(
187 const CacheStorageUsageInfoList& cache_storage_info_list) {
188 int64_t total_size = 0;
189 for (const auto& cache_storage_info : cache_storage_info_list)
190 total_size += cache_storage_info.total_size_bytes;
191 OnStorageSizeFetched(total_size);
192 }
193
194 void SiteDataSizeCollector::OnFlashLSOInfoLoaded(
195 const FlashLSODomainList& domains) {
196 int64_t size = 0;
197 if (!domains.empty()) {
198 // Consider pepper data directory size only when at least one Flash LSO is
199 // found.
200 base::FilePath pepper_data_dir_path = storage_partition_->GetPath()
201 .Append(content::kPepperDataDirname);
202 size = base::ComputeDirectorySize(pepper_data_dir_path);
203 }
204 OnStorageSizeFetched(size);
205 }
206
207 void SiteDataSizeCollector::OnStorageSizeFetched(int64_t size) {
208 total_bytes_ += size;
209 if (--in_flight_operations_ == 0)
210 fetch_callback_.Run(total_bytes_);
211 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698