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

Unified Diff: webkit/browser/quota/usage_tracker.cc

Issue 218793002: Provide monitoring of usage for a storage type and origin (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix test failures Created 6 years, 9 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/browser/quota/usage_tracker.h ('k') | webkit/browser/quota/usage_tracker_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/browser/quota/usage_tracker.cc
diff --git a/webkit/browser/quota/usage_tracker.cc b/webkit/browser/quota/usage_tracker.cc
index 57b5e0d24eacd11c9eb7670928deedfe6d5f6f2e..2e4659f0e483fc016653e0f9e37d93bcf79970c2 100644
--- a/webkit/browser/quota/usage_tracker.cc
+++ b/webkit/browser/quota/usage_tracker.cc
@@ -14,6 +14,8 @@
#include "base/message_loop/message_loop_proxy.h"
#include "base/stl_util.h"
#include "net/base/net_util.h"
+#include "webkit/browser/quota/storage_monitor.h"
+#include "webkit/browser/quota/storage_observer.h"
namespace quota {
@@ -36,8 +38,6 @@ void DidGetHostUsage(const UsageCallback& callback,
callback.Run(limited_usage + unlimited_usage);
}
-void NoopHostUsageCallback(int64 usage) {}
-
bool EraseOriginFromOriginSet(OriginSetByHost* origins_by_host,
const std::string& host,
const GURL& origin) {
@@ -72,15 +72,18 @@ void DidGetGlobalUsageForLimitedGlobalUsage(const UsageCallback& callback,
UsageTracker::UsageTracker(const QuotaClientList& clients,
StorageType type,
- SpecialStoragePolicy* special_storage_policy)
+ SpecialStoragePolicy* special_storage_policy,
+ StorageMonitor* storage_monitor)
: type_(type),
+ storage_monitor_(storage_monitor),
weak_factory_(this) {
for (QuotaClientList::const_iterator iter = clients.begin();
iter != clients.end();
++iter) {
if ((*iter)->DoesSupport(type)) {
client_tracker_map_[(*iter)->id()] =
- new ClientUsageTracker(this, *iter, type, special_storage_policy);
+ new ClientUsageTracker(this, *iter, type, special_storage_policy,
+ storage_monitor_);
}
}
}
@@ -271,10 +274,12 @@ void UsageTracker::AccumulateClientHostUsage(AccumulateInfo* info,
ClientUsageTracker::ClientUsageTracker(
UsageTracker* tracker, QuotaClient* client, StorageType type,
- SpecialStoragePolicy* special_storage_policy)
+ SpecialStoragePolicy* special_storage_policy,
+ StorageMonitor* storage_monitor)
: tracker_(tracker),
client_(client),
type_(type),
+ storage_monitor_(storage_monitor),
global_limited_usage_(0),
global_unlimited_usage_(0),
global_usage_retrieved_(false),
@@ -364,11 +369,19 @@ void ClientUsageTracker::UpdateUsageCache(
global_limited_usage_ += delta;
DCHECK_GE(cached_usage_by_host_[host][origin], 0);
DCHECK_GE(global_limited_usage_, 0);
+
+ // Notify the usage monitor that usage has changed. The storage monitor may
+ // be NULL during tests.
+ if (storage_monitor_) {
+ StorageObserver::Filter filter(type_, origin);
+ storage_monitor_->NotifyUsageChange(filter, delta);
+ }
return;
}
// We don't know about this host yet, so populate our cache for it.
- GetHostUsage(host, base::Bind(&NoopHostUsageCallback));
+ GetHostUsage(host, base::Bind(&ClientUsageTracker::DidGetHostUsageAfterUpdate,
+ AsWeakPtr(), origin));
}
void ClientUsageTracker::GetCachedHostsUsage(
@@ -549,6 +562,15 @@ void ClientUsageTracker::AccumulateOriginUsage(AccumulateInfo* info,
host, MakeTuple(info->limited_usage, info->unlimited_usage));
}
+void ClientUsageTracker::DidGetHostUsageAfterUpdate(
+ const GURL& origin, int64 usage) {
+ if (!storage_monitor_)
+ return;
+
+ StorageObserver::Filter filter(type_, origin);
+ storage_monitor_->NotifyUsageChange(filter, 0);
+}
+
void ClientUsageTracker::AddCachedOrigin(
const GURL& origin, int64 new_usage) {
DCHECK(IsUsageCacheEnabledForOrigin(origin));
« no previous file with comments | « webkit/browser/quota/usage_tracker.h ('k') | webkit/browser/quota/usage_tracker_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698