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

Unified Diff: webkit/quota/quota_manager.cc

Issue 7039006: Implement GetUsageAndQuotaForEviction in QuotaManager. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Added a TODO. Created 9 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webkit/quota/quota_manager.h ('k') | webkit/quota/quota_manager_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/quota/quota_manager.cc
diff --git a/webkit/quota/quota_manager.cc b/webkit/quota/quota_manager.cc
index ecfdef54e55b90219b01cba67096bb84a3e268fc..123fb506a64ea0fecf40efdaf51a0a1063dca2cf 100644
--- a/webkit/quota/quota_manager.cc
+++ b/webkit/quota/quota_manager.cc
@@ -524,8 +524,6 @@ QuotaManager::QuotaManager(bool is_incognito,
db_disabled_(false),
io_thread_(io_thread),
db_thread_(db_thread),
- num_eviction_requested_clients_(0),
- num_evicted_clients_(0),
temporary_global_quota_(-1),
callback_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
}
@@ -781,17 +779,22 @@ void QuotaManager::DidOriginDataEvicted(
DCHECK(io_thread_->BelongsToCurrentThread());
if (status != kQuotaStatusOk) {
- // TODO(dmikurube): Handle error.
+ ++eviction_context_.num_eviction_error;
+ // TODO(dmikurube): The origin with some error should have lower priority in
+ // the next eviction?
}
- ++num_evicted_clients_;
- DCHECK(num_evicted_clients_ <= num_eviction_requested_clients_);
- if (num_evicted_clients_ == num_eviction_requested_clients_) {
- num_eviction_requested_clients_ = 0;
- num_evicted_clients_ = 0;
+ ++eviction_context_.num_evicted_clients;
+ DCHECK(eviction_context_.num_evicted_clients <=
+ eviction_context_.num_eviction_requested_clients);
+ if (eviction_context_.num_evicted_clients ==
+ eviction_context_.num_eviction_requested_clients) {
+ eviction_context_.num_eviction_requested_clients = 0;
+ eviction_context_.num_evicted_clients = 0;
- evict_origin_data_callback_->Run(kQuotaStatusOk);
- evict_origin_data_callback_.reset();
+ // TODO(dmikurube): Call DeleteOriginFromDatabase here.
+ eviction_context_.evict_origin_data_callback->Run(kQuotaStatusOk);
+ eviction_context_.evict_origin_data_callback.reset();
}
}
@@ -801,7 +804,7 @@ void QuotaManager::EvictOriginData(
EvictOriginDataCallback* callback) {
DCHECK(io_thread_->BelongsToCurrentThread());
DCHECK(database_.get());
- DCHECK(num_eviction_requested_clients_ == 0);
+ DCHECK(eviction_context_.num_eviction_requested_clients == 0);
DCHECK(type == kStorageTypeTemporary);
int num_clients = clients_.size();
@@ -812,10 +815,10 @@ void QuotaManager::EvictOriginData(
return;
}
- num_eviction_requested_clients_ = num_clients;
- num_evicted_clients_ = 0;
+ eviction_context_.num_eviction_requested_clients = num_clients;
+ eviction_context_.num_evicted_clients = 0;
- evict_origin_data_callback_.reset(callback);
+ eviction_context_.evict_origin_data_callback.reset(callback);
for (QuotaClientList::iterator p = clients_.begin();
p != clients_.end();
++p) {
@@ -824,9 +827,44 @@ void QuotaManager::EvictOriginData(
}
}
+void QuotaManager::DidGetAvailableSpaceForEviction(
+ QuotaStatusCode status,
+ int64 available_space) {
+ eviction_context_.get_usage_and_quota_callback->Run(status,
+ eviction_context_.usage, eviction_context_.quota, available_space);
+ eviction_context_.get_usage_and_quota_callback.reset();
+}
+
+void QuotaManager::DidGetGlobalQuotaForEviction(
+ QuotaStatusCode status,
+ int64 quota) {
+ if (status != kQuotaStatusOk) {
+ eviction_context_.get_usage_and_quota_callback->Run(status,
+ eviction_context_.usage, quota, 0);
+ eviction_context_.get_usage_and_quota_callback.reset();
+ return;
+ }
+
+ eviction_context_.quota = quota;
+ GetAvailableSpace(callback_factory_.
+ NewCallback(&QuotaManager::DidGetAvailableSpaceForEviction));
+}
+
+void QuotaManager::DidGetGlobalUsageForEviction(int64 usage) {
+ eviction_context_.usage = usage;
+ GetTemporaryGlobalQuota(callback_factory_.
+ NewCallback(&QuotaManager::DidGetGlobalQuotaForEviction));
+}
+
void QuotaManager::GetUsageAndQuotaForEviction(
GetUsageAndQuotaForEvictionCallback* callback) {
- // TODO(dmikurube): Implement it.
+ DCHECK(io_thread_->BelongsToCurrentThread());
+ DCHECK(!eviction_context_.get_usage_and_quota_callback.get());
+
+ eviction_context_.get_usage_and_quota_callback.reset(callback);
+ // TODO(dmikurube): Make kStorageTypeTemporary an argument.
+ GetGlobalUsage(kStorageTypeTemporary, callback_factory_.
+ NewCallback(&QuotaManager::DidGetGlobalUsageForEviction));
}
void QuotaManager::DeleteOnCorrectThread() const {
« 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