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 "webkit/quota/usage_tracker.h" | 5 #include "webkit/quota/usage_tracker.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <deque> | 8 #include <deque> |
9 #include <set> | 9 #include <set> |
10 #include <string> | 10 #include <string> |
(...skipping 18 matching lines...) Expand all Loading... |
29 // origins. This class is self-destructed. | 29 // origins. This class is self-destructed. |
30 class ClientUsageTracker::GatherUsageTaskBase : public QuotaTask { | 30 class ClientUsageTracker::GatherUsageTaskBase : public QuotaTask { |
31 public: | 31 public: |
32 GatherUsageTaskBase( | 32 GatherUsageTaskBase( |
33 UsageTracker* tracker, | 33 UsageTracker* tracker, |
34 QuotaClient* client) | 34 QuotaClient* client) |
35 : QuotaTask(tracker), | 35 : QuotaTask(tracker), |
36 client_(client), | 36 client_(client), |
37 tracker_(tracker), | 37 tracker_(tracker), |
38 current_gathered_usage_(0), | 38 current_gathered_usage_(0), |
39 weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { | 39 weak_factory_(this) { |
40 DCHECK(tracker_); | 40 DCHECK(tracker_); |
41 DCHECK(client_); | 41 DCHECK(client_); |
42 client_tracker_ = base::AsWeakPtr( | 42 client_tracker_ = base::AsWeakPtr( |
43 tracker_->GetClientTracker(client_->id())); | 43 tracker_->GetClientTracker(client_->id())); |
44 DCHECK(client_tracker_.get()); | 44 DCHECK(client_tracker_.get()); |
45 } | 45 } |
46 virtual ~GatherUsageTaskBase() {} | 46 virtual ~GatherUsageTaskBase() {} |
47 | 47 |
48 // Get total usage for the given |origins|. | 48 // Get total usage for the given |origins|. |
49 void GetUsageForOrigins(const std::set<GURL>& origins, StorageType type) { | 49 void GetUsageForOrigins(const std::set<GURL>& origins, StorageType type) { |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
146 // type. This class is self-destructed. | 146 // type. This class is self-destructed. |
147 class ClientUsageTracker::GatherGlobalUsageTask | 147 class ClientUsageTracker::GatherGlobalUsageTask |
148 : public GatherUsageTaskBase { | 148 : public GatherUsageTaskBase { |
149 public: | 149 public: |
150 GatherGlobalUsageTask( | 150 GatherGlobalUsageTask( |
151 UsageTracker* tracker, | 151 UsageTracker* tracker, |
152 QuotaClient* client) | 152 QuotaClient* client) |
153 : GatherUsageTaskBase(tracker, client), | 153 : GatherUsageTaskBase(tracker, client), |
154 client_(client), | 154 client_(client), |
155 non_cached_global_usage_(0), | 155 non_cached_global_usage_(0), |
156 weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { | 156 weak_factory_(this) { |
157 DCHECK(tracker); | 157 DCHECK(tracker); |
158 DCHECK(client); | 158 DCHECK(client); |
159 } | 159 } |
160 virtual ~GatherGlobalUsageTask() {} | 160 virtual ~GatherGlobalUsageTask() {} |
161 | 161 |
162 protected: | 162 protected: |
163 virtual void Run() OVERRIDE { | 163 virtual void Run() OVERRIDE { |
164 client_->GetOriginsForType(tracker()->type(), | 164 client_->GetOriginsForType(tracker()->type(), |
165 base::Bind(&GatherUsageTaskBase::GetUsageForOrigins, | 165 base::Bind(&GatherUsageTaskBase::GetUsageForOrigins, |
166 weak_factory_.GetWeakPtr())); | 166 weak_factory_.GetWeakPtr())); |
(...skipping 27 matching lines...) Expand all Loading... |
194 class ClientUsageTracker::GatherHostUsageTask | 194 class ClientUsageTracker::GatherHostUsageTask |
195 : public GatherUsageTaskBase { | 195 : public GatherUsageTaskBase { |
196 public: | 196 public: |
197 GatherHostUsageTask( | 197 GatherHostUsageTask( |
198 UsageTracker* tracker, | 198 UsageTracker* tracker, |
199 QuotaClient* client, | 199 QuotaClient* client, |
200 const std::string& host) | 200 const std::string& host) |
201 : GatherUsageTaskBase(tracker, client), | 201 : GatherUsageTaskBase(tracker, client), |
202 client_(client), | 202 client_(client), |
203 host_(host), | 203 host_(host), |
204 weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { | 204 weak_factory_(this) { |
205 DCHECK(client_); | 205 DCHECK(client_); |
206 } | 206 } |
207 virtual ~GatherHostUsageTask() {} | 207 virtual ~GatherHostUsageTask() {} |
208 | 208 |
209 protected: | 209 protected: |
210 virtual void Run() OVERRIDE { | 210 virtual void Run() OVERRIDE { |
211 client_->GetOriginsForHost(tracker()->type(), host_, | 211 client_->GetOriginsForHost(tracker()->type(), host_, |
212 base::Bind(&GatherUsageTaskBase::GetUsageForOrigins, | 212 base::Bind(&GatherUsageTaskBase::GetUsageForOrigins, |
213 weak_factory_.GetWeakPtr())); | 213 weak_factory_.GetWeakPtr())); |
214 } | 214 } |
215 | 215 |
216 virtual void Completed() OVERRIDE { | 216 virtual void Completed() OVERRIDE { |
217 client_tracker()->GatherHostUsageComplete(host_, current_gathered_usage()); | 217 client_tracker()->GatherHostUsageComplete(host_, current_gathered_usage()); |
218 } | 218 } |
219 | 219 |
220 private: | 220 private: |
221 QuotaClient* client_; | 221 QuotaClient* client_; |
222 std::string host_; | 222 std::string host_; |
223 base::WeakPtrFactory<GatherUsageTaskBase> weak_factory_; | 223 base::WeakPtrFactory<GatherUsageTaskBase> weak_factory_; |
224 | 224 |
225 DISALLOW_COPY_AND_ASSIGN(GatherHostUsageTask); | 225 DISALLOW_COPY_AND_ASSIGN(GatherHostUsageTask); |
226 }; | 226 }; |
227 | 227 |
228 // UsageTracker ---------------------------------------------------------- | 228 // UsageTracker ---------------------------------------------------------- |
229 | 229 |
230 UsageTracker::UsageTracker(const QuotaClientList& clients, StorageType type, | 230 UsageTracker::UsageTracker(const QuotaClientList& clients, StorageType type, |
231 SpecialStoragePolicy* special_storage_policy) | 231 SpecialStoragePolicy* special_storage_policy) |
232 : type_(type), | 232 : type_(type), |
233 weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { | 233 weak_factory_(this) { |
234 for (QuotaClientList::const_iterator iter = clients.begin(); | 234 for (QuotaClientList::const_iterator iter = clients.begin(); |
235 iter != clients.end(); | 235 iter != clients.end(); |
236 ++iter) { | 236 ++iter) { |
237 client_tracker_map_.insert(std::make_pair( | 237 client_tracker_map_.insert(std::make_pair( |
238 (*iter)->id(), | 238 (*iter)->id(), |
239 new ClientUsageTracker(this, *iter, type, special_storage_policy))); | 239 new ClientUsageTracker(this, *iter, type, special_storage_policy))); |
240 } | 240 } |
241 } | 241 } |
242 | 242 |
243 UsageTracker::~UsageTracker() { | 243 UsageTracker::~UsageTracker() { |
(...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
647 void ClientUsageTracker::NoopHostUsageCallback(int64 usage) {} | 647 void ClientUsageTracker::NoopHostUsageCallback(int64 usage) {} |
648 | 648 |
649 bool ClientUsageTracker::IsStorageUnlimited(const GURL& origin) const { | 649 bool ClientUsageTracker::IsStorageUnlimited(const GURL& origin) const { |
650 if (type_ == kStorageTypeSyncable) | 650 if (type_ == kStorageTypeSyncable) |
651 return false; | 651 return false; |
652 return special_storage_policy_.get() && | 652 return special_storage_policy_.get() && |
653 special_storage_policy_->IsStorageUnlimited(origin); | 653 special_storage_policy_->IsStorageUnlimited(origin); |
654 } | 654 } |
655 | 655 |
656 } // namespace quota | 656 } // namespace quota |
OLD | NEW |