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

Side by Side Diff: webkit/quota/quota_manager.cc

Issue 8079004: Retrieve per host storage usage from QuotaManager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Comments addressed, test added Created 9 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « webkit/quota/quota_manager.h ('k') | webkit/quota/quota_manager_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/quota_manager.h" 5 #include "webkit/quota/quota_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <deque> 8 #include <deque>
9 #include <set> 9 #include <set>
10 10
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 int64 host_usage_; 283 int64 host_usage_;
284 QuotaStatusCode quota_status_; 284 QuotaStatusCode quota_status_;
285 CallbackList callbacks_; 285 CallbackList callbacks_;
286 CallbackList unlimited_callbacks_; 286 CallbackList unlimited_callbacks_;
287 int waiting_callbacks_; 287 int waiting_callbacks_;
288 ScopedCallbackFactory<UsageAndQuotaDispatcherTask> callback_factory_; 288 ScopedCallbackFactory<UsageAndQuotaDispatcherTask> callback_factory_;
289 289
290 DISALLOW_COPY_AND_ASSIGN(UsageAndQuotaDispatcherTask); 290 DISALLOW_COPY_AND_ASSIGN(UsageAndQuotaDispatcherTask);
291 }; 291 };
292 292
293 class QuotaManager::GetUsageTask : public QuotaTask {
kinuko 2011/10/04 07:43:04 A subtle issue... GetUsageTask may sound too gener
mnaganov (inactive) 2011/10/04 16:38:42 OK, let's rename to GetUsageInfo. Initially I was
294 private:
295 typedef QuotaManager::GetUsageTask self_type;
296
297 public:
298 GetUsageTask(
299 QuotaManager* manager,
300 GetUsageInfoCallback* callback)
301 : QuotaTask(manager),
302 callback_(callback),
303 callback_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
304 }
305 protected:
306 virtual void Run() OVERRIDE {
307 remaining_trackers_ = 2;
308 // This will populate cached hosts and usage info.
309 manager()->GetUsageTracker(kStorageTypeTemporary)->GetGlobalUsage(
310 callback_factory_.NewCallback(&GetUsageTask::DidGetGlobalUsage));
311 manager()->GetUsageTracker(kStorageTypePersistent)->GetGlobalUsage(
312 callback_factory_.NewCallback(&GetUsageTask::DidGetGlobalUsage));
313 }
314
315 virtual void Completed() OVERRIDE {
316 callback_->Run(entries_);
317 DeleteSoon();
318 }
319
320 virtual void Aborted() OVERRIDE {
321 callback_->Run(UsageInfoEntries());
322 DeleteSoon();
323 }
324
325 private:
326 void AddEntries(StorageType type, UsageTracker* tracker) {
327 std::map<std::string, int64> host_usage;
328 tracker->GetCachedHostsUsage(&host_usage);
329 for (std::map<std::string, int64>::const_iterator iter = host_usage.begin();
330 iter != host_usage.end();
331 ++iter) {
332 entries_.push_back(UsageInfo(iter->first, type, iter->second));
333 }
334 if (--remaining_trackers_ == 0)
335 CallCompleted();
336 }
337
338 void DidGetGlobalUsage(StorageType type, int64, int64) {
339 AddEntries(type, manager()->GetUsageTracker(type));
340 }
341
342 QuotaManager* manager() const {
343 return static_cast<QuotaManager*>(observer());
344 }
345
346 scoped_ptr<GetUsageInfoCallback> callback_;
347 UsageInfoEntries entries_;
348 base::ScopedCallbackFactory<GetUsageTask> callback_factory_;
349 int remaining_trackers_;
350
351 DISALLOW_COPY_AND_ASSIGN(GetUsageTask);
352 };
353
293 class QuotaManager::UsageAndQuotaDispatcherTaskForTemporary 354 class QuotaManager::UsageAndQuotaDispatcherTaskForTemporary
294 : public QuotaManager::UsageAndQuotaDispatcherTask { 355 : public QuotaManager::UsageAndQuotaDispatcherTask {
295 public: 356 public:
296 UsageAndQuotaDispatcherTaskForTemporary( 357 UsageAndQuotaDispatcherTaskForTemporary(
297 QuotaManager* manager, const std::string& host) 358 QuotaManager* manager, const std::string& host)
298 : UsageAndQuotaDispatcherTask(manager, host, kStorageTypeTemporary) {} 359 : UsageAndQuotaDispatcherTask(manager, host, kStorageTypeTemporary) {}
299 360
300 protected: 361 protected:
301 virtual void RunBody() OVERRIDE { 362 virtual void RunBody() OVERRIDE {
302 manager()->temporary_usage_tracker_->GetGlobalUsage( 363 manager()->temporary_usage_tracker_->GetGlobalUsage(
(...skipping 654 matching lines...) Expand 10 before | Expand all | Expand 10 after
957 1018
958 QuotaManager::~QuotaManager() { 1019 QuotaManager::~QuotaManager() {
959 DCHECK(io_thread_->BelongsToCurrentThread()); 1020 DCHECK(io_thread_->BelongsToCurrentThread());
960 proxy_->manager_ = NULL; 1021 proxy_->manager_ = NULL;
961 std::for_each(clients_.begin(), clients_.end(), 1022 std::for_each(clients_.begin(), clients_.end(),
962 std::mem_fun(&QuotaClient::OnQuotaManagerDestroyed)); 1023 std::mem_fun(&QuotaClient::OnQuotaManagerDestroyed));
963 if (database_.get()) 1024 if (database_.get())
964 db_thread_->DeleteSoon(FROM_HERE, database_.release()); 1025 db_thread_->DeleteSoon(FROM_HERE, database_.release());
965 } 1026 }
966 1027
1028 void QuotaManager::GetUsage(GetUsageInfoCallback* callback) {
1029 LazyInitialize();
1030 GetUsageTask* get_usage = new GetUsageTask(this, callback);
1031 get_usage->Start();
1032 }
1033
967 void QuotaManager::GetUsageAndQuota( 1034 void QuotaManager::GetUsageAndQuota(
968 const GURL& origin, StorageType type, 1035 const GURL& origin, StorageType type,
969 GetUsageAndQuotaCallback* callback_ptr) { 1036 GetUsageAndQuotaCallback* callback_ptr) {
970 scoped_ptr<GetUsageAndQuotaCallback> callback(callback_ptr); 1037 scoped_ptr<GetUsageAndQuotaCallback> callback(callback_ptr);
971 LazyInitialize(); 1038 LazyInitialize();
972 1039
973 if (type == kStorageTypeUnknown) { 1040 if (type == kStorageTypeUnknown) {
974 // Quota only supports temporary/persistent types. 1041 // Quota only supports temporary/persistent types.
975 callback->Run(kQuotaErrorNotSupported, 0, 0); 1042 callback->Run(kQuotaErrorNotSupported, 0, 0);
976 return; 1043 return;
(...skipping 590 matching lines...) Expand 10 before | Expand all | Expand 10 after
1567 1634
1568 QuotaManagerProxy::QuotaManagerProxy( 1635 QuotaManagerProxy::QuotaManagerProxy(
1569 QuotaManager* manager, base::MessageLoopProxy* io_thread) 1636 QuotaManager* manager, base::MessageLoopProxy* io_thread)
1570 : manager_(manager), io_thread_(io_thread) { 1637 : manager_(manager), io_thread_(io_thread) {
1571 } 1638 }
1572 1639
1573 QuotaManagerProxy::~QuotaManagerProxy() { 1640 QuotaManagerProxy::~QuotaManagerProxy() {
1574 } 1641 }
1575 1642
1576 } // namespace quota 1643 } // namespace quota
OLDNEW
« no previous file with comments | « webkit/quota/quota_manager.h ('k') | webkit/quota/quota_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698