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

Side by Side Diff: webkit/quota/usage_tracker.h

Issue 15950004: [Quota] Wire up limited origin usage retrieving. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix test expectation Created 7 years, 6 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
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 #ifndef WEBKIT_QUOTA_USAGE_TRACKER_H_ 5 #ifndef WEBKIT_QUOTA_USAGE_TRACKER_H_
6 #define WEBKIT_QUOTA_USAGE_TRACKER_H_ 6 #define WEBKIT_QUOTA_USAGE_TRACKER_H_
7 7
8 #include <list> 8 #include <list>
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 struct AccumulateInfo { 58 struct AccumulateInfo {
59 AccumulateInfo() : pending_clients(0), usage(0), unlimited_usage(0) {} 59 AccumulateInfo() : pending_clients(0), usage(0), unlimited_usage(0) {}
60 int pending_clients; 60 int pending_clients;
61 int64 usage; 61 int64 usage;
62 int64 unlimited_usage; 62 int64 unlimited_usage;
63 }; 63 };
64 64
65 typedef std::map<QuotaClient::ID, ClientUsageTracker*> ClientTrackerMap; 65 typedef std::map<QuotaClient::ID, ClientUsageTracker*> ClientTrackerMap;
66 66
67 friend class ClientUsageTracker; 67 friend class ClientUsageTracker;
68 void AccumulateClientGlobalLimitedUsage(AccumulateInfo* info,
69 int64 limited_usage);
68 void AccumulateClientGlobalUsage(AccumulateInfo* info, 70 void AccumulateClientGlobalUsage(AccumulateInfo* info,
69 int64 usage, 71 int64 usage,
70 int64 unlimited_usage); 72 int64 unlimited_usage);
71 void AccumulateClientHostUsage(AccumulateInfo* info, 73 void AccumulateClientHostUsage(AccumulateInfo* info,
72 const std::string& host, 74 const std::string& host,
73 int64 usage); 75 int64 usage);
74 76
75 const StorageType type_; 77 const StorageType type_;
76 ClientTrackerMap client_tracker_map_; 78 ClientTrackerMap client_tracker_map_;
77 79
80 UsageCallbackQueue global_limited_usage_callbacks_;
78 GlobalUsageCallbackQueue global_usage_callbacks_; 81 GlobalUsageCallbackQueue global_usage_callbacks_;
79 HostUsageCallbackMap host_usage_callbacks_; 82 HostUsageCallbackMap host_usage_callbacks_;
80 83
81 base::WeakPtrFactory<UsageTracker> weak_factory_; 84 base::WeakPtrFactory<UsageTracker> weak_factory_;
82 DISALLOW_COPY_AND_ASSIGN(UsageTracker); 85 DISALLOW_COPY_AND_ASSIGN(UsageTracker);
83 }; 86 };
84 87
85 // This class holds per-client usage tracking information and caches per-host 88 // This class holds per-client usage tracking information and caches per-host
86 // usage data. An instance of this class is created per client. 89 // usage data. An instance of this class is created per client.
87 class ClientUsageTracker : public SpecialStoragePolicy::Observer, 90 class ClientUsageTracker : public SpecialStoragePolicy::Observer,
88 public base::NonThreadSafe, 91 public base::NonThreadSafe,
89 public base::SupportsWeakPtr<ClientUsageTracker> { 92 public base::SupportsWeakPtr<ClientUsageTracker> {
90 public: 93 public:
91 typedef base::Callback<void(int64 cached_usage, 94 typedef base::Callback<void(int64 limited_usage,
92 int64 non_cached_usage)> HostUsageAccumulator; 95 int64 unlimited_usage)> HostUsageAccumulator;
93 typedef base::Callback<void(const GURL& origin, 96 typedef base::Callback<void(const GURL& origin,
94 int64 usage)> OriginUsageAccumulator; 97 int64 usage)> OriginUsageAccumulator;
95 typedef std::map<std::string, std::set<GURL> > OriginSetByHost; 98 typedef std::map<std::string, std::set<GURL> > OriginSetByHost;
96 99
97 ClientUsageTracker(UsageTracker* tracker, 100 ClientUsageTracker(UsageTracker* tracker,
98 QuotaClient* client, 101 QuotaClient* client,
99 StorageType type, 102 StorageType type,
100 SpecialStoragePolicy* special_storage_policy); 103 SpecialStoragePolicy* special_storage_policy);
101 virtual ~ClientUsageTracker(); 104 virtual ~ClientUsageTracker();
102 105
106 void GetGlobalLimitedUsage(const UsageCallback& callback);
103 void GetGlobalUsage(const GlobalUsageCallback& callback); 107 void GetGlobalUsage(const GlobalUsageCallback& callback);
104 void GetHostUsage(const std::string& host, const UsageCallback& callback); 108 void GetHostUsage(const std::string& host, const UsageCallback& callback);
105 void UpdateUsageCache(const GURL& origin, int64 delta); 109 void UpdateUsageCache(const GURL& origin, int64 delta);
106 void GetCachedHostsUsage(std::map<std::string, int64>* host_usage) const; 110 void GetCachedHostsUsage(std::map<std::string, int64>* host_usage) const;
107 void GetCachedOrigins(std::set<GURL>* origins) const; 111 void GetCachedOrigins(std::set<GURL>* origins) const;
108 int64 GetCachedOriginsUsage(const std::set<GURL>& origins, 112 int64 GetCachedOriginsUsage(const std::set<GURL>& origins,
109 std::vector<GURL>* origins_not_in_cache); 113 std::vector<GURL>* origins_not_in_cache);
110 bool IsUsageCacheEnabledForOrigin(const GURL& origin) const; 114 bool IsUsageCacheEnabledForOrigin(const GURL& origin) const;
111 void SetUsageCacheEnabled(const GURL& origin, bool enabled); 115 void SetUsageCacheEnabled(const GURL& origin, bool enabled);
112 116
113 private: 117 private:
114 typedef CallbackQueueMap<HostUsageAccumulator, std::string, 118 typedef CallbackQueueMap<HostUsageAccumulator, std::string,
115 Tuple2<int64, int64> > HostUsageAccumulatorMap; 119 Tuple2<int64, int64> > HostUsageAccumulatorMap;
116 120
117 typedef std::set<std::string> HostSet; 121 typedef std::set<std::string> HostSet;
118 typedef std::map<GURL, int64> UsageMap; 122 typedef std::map<GURL, int64> UsageMap;
119 typedef std::map<std::string, UsageMap> HostUsageMap; 123 typedef std::map<std::string, UsageMap> HostUsageMap;
120 124
121 struct AccumulateInfo { 125 struct AccumulateInfo {
122 int pending_jobs; 126 int pending_jobs;
123 int64 cached_usage; 127 int64 limited_usage;
124 int64 non_cached_usage; 128 int64 unlimited_usage;
125 129
126 AccumulateInfo() : pending_jobs(0), cached_usage(0), non_cached_usage(0) {} 130 AccumulateInfo()
131 : pending_jobs(0), limited_usage(0), unlimited_usage(0) {}
127 }; 132 };
128 133
134 void AccumulateLimitedOriginUsage(AccumulateInfo* info,
135 const UsageCallback& callback,
136 int64 usage);
129 void DidGetOriginsForGlobalUsage(const GlobalUsageCallback& callback, 137 void DidGetOriginsForGlobalUsage(const GlobalUsageCallback& callback,
130 const std::set<GURL>& origins); 138 const std::set<GURL>& origins);
131 void AccumulateHostUsage(AccumulateInfo* info, 139 void AccumulateHostUsage(AccumulateInfo* info,
132 const GlobalUsageCallback& callback, 140 const GlobalUsageCallback& callback,
133 int64 cached_usage, 141 int64 limited_usage,
134 int64 non_cached_usage); 142 int64 unlimited_usage);
135 143
136 void DidGetOriginsForHostUsage(const std::string& host, 144 void DidGetOriginsForHostUsage(const std::string& host,
137 const std::set<GURL>& origins); 145 const std::set<GURL>& origins);
138 146
139 void GetUsageForOrigins(const std::string& host, 147 void GetUsageForOrigins(const std::string& host,
140 const std::set<GURL>& origins); 148 const std::set<GURL>& origins);
141 void AccumulateOriginUsage(AccumulateInfo* info, 149 void AccumulateOriginUsage(AccumulateInfo* info,
142 const std::string& host, 150 const std::string& host,
143 const GURL& origin, 151 const GURL& origin,
144 int64 usage); 152 int64 usage);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 HostUsageAccumulatorMap host_usage_accumulators_; 184 HostUsageAccumulatorMap host_usage_accumulators_;
177 185
178 scoped_refptr<SpecialStoragePolicy> special_storage_policy_; 186 scoped_refptr<SpecialStoragePolicy> special_storage_policy_;
179 187
180 DISALLOW_COPY_AND_ASSIGN(ClientUsageTracker); 188 DISALLOW_COPY_AND_ASSIGN(ClientUsageTracker);
181 }; 189 };
182 190
183 } // namespace quota 191 } // namespace quota
184 192
185 #endif // WEBKIT_QUOTA_USAGE_TRACKER_H_ 193 #endif // WEBKIT_QUOTA_USAGE_TRACKER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698