| 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 |