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

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

Issue 10826270: QuotaManager: Return the remaining free disk space as quota. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Review fixes. Created 8 years, 4 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) 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/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 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 70
71 const int QuotaManager::kThresholdOfErrorsToBeBlacklisted = 3; 71 const int QuotaManager::kThresholdOfErrorsToBeBlacklisted = 3;
72 72
73 const int QuotaManager::kEvictionIntervalInMilliSeconds = 73 const int QuotaManager::kEvictionIntervalInMilliSeconds =
74 30 * kMinutesInMilliSeconds; 74 30 * kMinutesInMilliSeconds;
75 75
76 // Callback translators. 76 // Callback translators.
77 void CallGetUsageAndQuotaCallback( 77 void CallGetUsageAndQuotaCallback(
78 const QuotaManager::GetUsageAndQuotaCallback& callback, 78 const QuotaManager::GetUsageAndQuotaCallback& callback,
79 bool unlimited, 79 bool unlimited,
80 bool is_installed_app,
80 QuotaStatusCode status, 81 QuotaStatusCode status,
81 const QuotaAndUsage& quota_and_usage) { 82 const QuotaAndUsage& quota_and_usage) {
82 int64 usage = 83 int64 usage;
83 unlimited ? quota_and_usage.unlimited_usage : quota_and_usage.usage; 84 int64 quota;
84 int64 quota = unlimited ? QuotaManager::kNoLimit : quota_and_usage.quota; 85
86 if (unlimited) {
87 usage = quota_and_usage.unlimited_usage;
88 quota = is_installed_app ? quota_and_usage.available_disk_space :
89 QuotaManager::kNoLimit;
90 } else {
91 usage = quota_and_usage.usage;
92 quota = quota_and_usage.quota;
93 }
94
85 callback.Run(status, usage, quota); 95 callback.Run(status, usage, quota);
86 } 96 }
87 97
88 void CallQuotaCallback( 98 void CallQuotaCallback(
89 const QuotaCallback& callback, 99 const QuotaCallback& callback,
90 StorageType type, 100 StorageType type,
91 QuotaStatusCode status, 101 QuotaStatusCode status,
92 const QuotaAndUsage& quota_and_usage) { 102 const QuotaAndUsage& quota_and_usage) {
93 callback.Run(status, type, quota_and_usage.quota); 103 callback.Run(status, type, quota_and_usage.quota);
94 } 104 }
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 UsageAndQuotaDispatcherTaskForPersistent( 409 UsageAndQuotaDispatcherTaskForPersistent(
400 QuotaManager* manager, const HostAndType& host_and_type) 410 QuotaManager* manager, const HostAndType& host_and_type)
401 : UsageAndQuotaDispatcherTask(manager, host_and_type) {} 411 : UsageAndQuotaDispatcherTask(manager, host_and_type) {}
402 412
403 protected: 413 protected:
404 virtual void RunBody() OVERRIDE { 414 virtual void RunBody() OVERRIDE {
405 manager()->persistent_usage_tracker_->GetHostUsage( 415 manager()->persistent_usage_tracker_->GetHostUsage(
406 host(), NewWaitableHostUsageCallback()); 416 host(), NewWaitableHostUsageCallback());
407 manager()->GetPersistentHostQuota( 417 manager()->GetPersistentHostQuota(
408 host(), NewWaitableHostQuotaCallback()); 418 host(), NewWaitableHostQuotaCallback());
419 manager()->GetAvailableSpace(NewWaitableAvailableSpaceCallback());
409 } 420 }
410 421
411 virtual void DispatchCallbacks() OVERRIDE { 422 virtual void DispatchCallbacks() OVERRIDE {
412 CallCallbacksAndClear(quota_status(), 423 CallCallbacksAndClear(quota_status(),
413 host_usage(), host_usage(), host_quota(), 424 host_usage(), host_usage(), host_quota(),
414 available_space()); 425 available_space());
415 } 426 }
416 }; 427 };
417 428
418 class QuotaManager::UsageAndQuotaDispatcherTaskForTemporaryGlobal 429 class QuotaManager::UsageAndQuotaDispatcherTaskForTemporaryGlobal
(...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after
950 }; 961 };
951 962
952 class QuotaManager::AvailableSpaceQueryTask : public QuotaThreadTask { 963 class QuotaManager::AvailableSpaceQueryTask : public QuotaThreadTask {
953 public: 964 public:
954 AvailableSpaceQueryTask( 965 AvailableSpaceQueryTask(
955 QuotaManager* manager, 966 QuotaManager* manager,
956 const AvailableSpaceCallback& callback) 967 const AvailableSpaceCallback& callback)
957 : QuotaThreadTask(manager, manager->db_thread_), 968 : QuotaThreadTask(manager, manager->db_thread_),
958 profile_path_(manager->profile_path_), 969 profile_path_(manager->profile_path_),
959 space_(-1), 970 space_(-1),
971 get_disk_space_fn_(manager->get_disk_space_fn_),
960 callback_(callback) { 972 callback_(callback) {
973 DCHECK(get_disk_space_fn_);
961 } 974 }
962 975
963 protected: 976 protected:
964 virtual ~AvailableSpaceQueryTask() {} 977 virtual ~AvailableSpaceQueryTask() {}
965 978
966 // QuotaThreadTask: 979 // QuotaThreadTask:
967 virtual void RunOnTargetThread() OVERRIDE { 980 virtual void RunOnTargetThread() OVERRIDE {
968 space_ = base::SysInfo::AmountOfFreeDiskSpace(profile_path_); 981 space_ = get_disk_space_fn_(profile_path_);
969 } 982 }
970 983
971 virtual void Aborted() OVERRIDE { 984 virtual void Aborted() OVERRIDE {
972 callback_.Reset(); 985 callback_.Reset();
973 } 986 }
974 987
975 virtual void Completed() OVERRIDE { 988 virtual void Completed() OVERRIDE {
976 callback_.Run(kQuotaStatusOk, space_); 989 callback_.Run(kQuotaStatusOk, space_);
977 } 990 }
978 991
979 private: 992 private:
980 FilePath profile_path_; 993 FilePath profile_path_;
981 int64 space_; 994 int64 space_;
995 GetAvailableDiskSpaceFn get_disk_space_fn_;
982 AvailableSpaceCallback callback_; 996 AvailableSpaceCallback callback_;
983 }; 997 };
984 998
985 class QuotaManager::UpdateAccessTimeTask 999 class QuotaManager::UpdateAccessTimeTask
986 : public QuotaManager::DatabaseTaskBase { 1000 : public QuotaManager::DatabaseTaskBase {
987 public: 1001 public:
988 UpdateAccessTimeTask( 1002 UpdateAccessTimeTask(
989 QuotaManager* manager, 1003 QuotaManager* manager,
990 const GURL& origin, 1004 const GURL& origin,
991 StorageType type, 1005 StorageType type,
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
1193 proxy_(new QuotaManagerProxy( 1207 proxy_(new QuotaManagerProxy(
1194 ALLOW_THIS_IN_INITIALIZER_LIST(this), io_thread)), 1208 ALLOW_THIS_IN_INITIALIZER_LIST(this), io_thread)),
1195 db_disabled_(false), 1209 db_disabled_(false),
1196 eviction_disabled_(false), 1210 eviction_disabled_(false),
1197 io_thread_(io_thread), 1211 io_thread_(io_thread),
1198 db_thread_(db_thread), 1212 db_thread_(db_thread),
1199 temporary_quota_initialized_(false), 1213 temporary_quota_initialized_(false),
1200 temporary_quota_override_(-1), 1214 temporary_quota_override_(-1),
1201 desired_available_space_(-1), 1215 desired_available_space_(-1),
1202 special_storage_policy_(special_storage_policy), 1216 special_storage_policy_(special_storage_policy),
1203 weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { 1217 weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)),
1218 get_disk_space_fn_(&base::SysInfo::AmountOfFreeDiskSpace) {
1204 } 1219 }
1205 1220
1206 void QuotaManager::GetUsageInfo(const GetUsageInfoCallback& callback) { 1221 void QuotaManager::GetUsageInfo(const GetUsageInfoCallback& callback) {
1207 LazyInitialize(); 1222 LazyInitialize();
1208 GetUsageInfoTask* get_usage_info = new GetUsageInfoTask(this, callback); 1223 GetUsageInfoTask* get_usage_info = new GetUsageInfoTask(this, callback);
1209 get_usage_info->Start(); 1224 get_usage_info->Start();
1210 } 1225 }
1211 1226
1212 void QuotaManager::GetUsageAndQuota( 1227 void QuotaManager::GetUsageAndQuota(
1213 const GURL& origin, StorageType type, 1228 const GURL& origin, StorageType type,
1214 const GetUsageAndQuotaCallback& callback) { 1229 const GetUsageAndQuotaCallback& callback) {
1215 GetUsageAndQuotaInternal(origin, type, false /* global */, 1230 GetUsageAndQuotaInternal(
1216 base::Bind(&CallGetUsageAndQuotaCallback, 1231 origin, type, false /* global */,
1217 callback, IsStorageUnlimited(origin))); 1232 base::Bind(&CallGetUsageAndQuotaCallback, callback,
1233 IsStorageUnlimited(origin), IsInstalledApp(origin)));
1218 } 1234 }
1219 1235
1220 void QuotaManager::GetAvailableSpace(const AvailableSpaceCallback& callback) { 1236 void QuotaManager::GetAvailableSpace(const AvailableSpaceCallback& callback) {
1221 if (is_incognito_) { 1237 if (is_incognito_) {
1222 callback.Run(kQuotaStatusOk, kIncognitoDefaultTemporaryQuota); 1238 callback.Run(kQuotaStatusOk, kIncognitoDefaultTemporaryQuota);
1223 return; 1239 return;
1224 } 1240 }
1225 make_scoped_refptr(new AvailableSpaceQueryTask(this, callback))->Start(); 1241 make_scoped_refptr(new AvailableSpaceQueryTask(this, callback))->Start();
1226 } 1242 }
1227 1243
(...skipping 606 matching lines...) Expand 10 before | Expand all | Expand 10 after
1834 1850
1835 QuotaManagerProxy::QuotaManagerProxy( 1851 QuotaManagerProxy::QuotaManagerProxy(
1836 QuotaManager* manager, base::SingleThreadTaskRunner* io_thread) 1852 QuotaManager* manager, base::SingleThreadTaskRunner* io_thread)
1837 : manager_(manager), io_thread_(io_thread) { 1853 : manager_(manager), io_thread_(io_thread) {
1838 } 1854 }
1839 1855
1840 QuotaManagerProxy::~QuotaManagerProxy() { 1856 QuotaManagerProxy::~QuotaManagerProxy() {
1841 } 1857 }
1842 1858
1843 } // namespace quota 1859 } // 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