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

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

Issue 7168019: Implement QM::GetOriginsModifiedSince for browser data deleter support (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: reflected comments Created 9 years, 5 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_database_unittest.cc ('k') | webkit/quota/quota_manager.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 #ifndef WEBKIT_QUOTA_QUOTA_MANAGER_H_ 5 #ifndef WEBKIT_QUOTA_QUOTA_MANAGER_H_
6 #define WEBKIT_QUOTA_QUOTA_MANAGER_H_ 6 #define WEBKIT_QUOTA_QUOTA_MANAGER_H_
7 #pragma once 7 #pragma once
8 8
9 #include <deque> 9 #include <deque>
10 #include <list> 10 #include <list>
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 void GetHostUsage(const std::string& host, StorageType type, 139 void GetHostUsage(const std::string& host, StorageType type,
140 HostUsageCallback* callback); 140 HostUsageCallback* callback);
141 141
142 void GetStatistics(std::map<std::string, std::string>* statistics); 142 void GetStatistics(std::map<std::string, std::string>* statistics);
143 143
144 bool IsStorageUnlimited(const GURL& origin) const { 144 bool IsStorageUnlimited(const GURL& origin) const {
145 return special_storage_policy_.get() && 145 return special_storage_policy_.get() &&
146 special_storage_policy_->IsStorageUnlimited(origin); 146 special_storage_policy_->IsStorageUnlimited(origin);
147 } 147 }
148 148
149 void GetOriginsModifiedSince(
150 StorageType type,
151 base::Time modified_since,
152 GetOriginsCallback* callback);
153
149 // Used to determine the total size of the temp pool. 154 // Used to determine the total size of the temp pool.
150 static const int64 kTemporaryStorageQuotaDefaultSize; 155 static const int64 kTemporaryStorageQuotaDefaultSize;
151 static const int64 kTemporaryStorageQuotaMaxSize; 156 static const int64 kTemporaryStorageQuotaMaxSize;
152 static const int64 kIncognitoDefaultTemporaryQuota; 157 static const int64 kIncognitoDefaultTemporaryQuota;
153 158
154 // Determines the portion of the temp pool that can be 159 // Determines the portion of the temp pool that can be
155 // utilized by a single host (ie. 5 for 20%). 160 // utilized by a single host (ie. 5 for 20%).
156 static const int kPerHostTemporaryPortion; 161 static const int kPerHostTemporaryPortion;
157 162
158 static const char kDatabaseName[]; 163 static const char kDatabaseName[];
159 164
160 static const int kThresholdOfErrorsToBeBlacklisted; 165 static const int kThresholdOfErrorsToBeBlacklisted;
161 166
162 static const int kEvictionIntervalInMilliSeconds; 167 static const int kEvictionIntervalInMilliSeconds;
163 168
164 private: 169 private:
165 class DatabaseTaskBase; 170 class DatabaseTaskBase;
166 class InitializeTask; 171 class InitializeTask;
167 class TemporaryGlobalQuotaUpdateTask; 172 class UpdateTemporaryGlobalQuotaTask;
168 class PersistentHostQuotaQueryTask; 173 class GetPersistentHostQuotaTask;
169 class PersistentHostQuotaUpdateTask; 174 class UpdatePersistentHostQuotaTask;
170 class GetLRUOriginTask; 175 class GetLRUOriginTask;
171 class OriginDeletionDatabaseTask; 176 class DeleteOriginInfo;
172 class TemporaryOriginsRegistrationTask; 177 class InitializeTemporaryOriginsInfoTask;
173 class OriginAccessRecordDatabaseTask; 178 class UpdateAccesTimeTask;
179 class UpdateModifiedTimeTask;
180 class GetModifiedSinceTask;
174 181
175 class UsageAndQuotaDispatcherTask; 182 class UsageAndQuotaDispatcherTask;
176 class UsageAndQuotaDispatcherTaskForTemporary; 183 class UsageAndQuotaDispatcherTaskForTemporary;
177 class UsageAndQuotaDispatcherTaskForPersistent; 184 class UsageAndQuotaDispatcherTaskForPersistent;
178 185
179 class OriginDataDeleter; 186 class OriginDataDeleter;
180 187
181 class AvailableSpaceQueryTask; 188 class AvailableSpaceQueryTask;
182 class DumpQuotaTableTask; 189 class DumpQuotaTableTask;
183 class DumpLastAccessTimeTableTask; 190 class DumpOriginInfoTableTask;
184 191
185 typedef QuotaDatabase::QuotaTableEntry QuotaTableEntry; 192 typedef QuotaDatabase::QuotaTableEntry QuotaTableEntry;
186 typedef QuotaDatabase::LastAccessTimeTableEntry LastAccessTimeTableEntry; 193 typedef QuotaDatabase::OriginInfoTableEntry OriginInfoTableEntry;
187 typedef std::vector<QuotaTableEntry> QuotaTableEntries; 194 typedef std::vector<QuotaTableEntry> QuotaTableEntries;
188 typedef std::vector<LastAccessTimeTableEntry> LastAccessTimeTableEntries; 195 typedef std::vector<OriginInfoTableEntry> OriginInfoTableEntries;
189 196
190 typedef Callback1<const QuotaTableEntries&>::Type DumpQuotaTableCallback; 197 typedef Callback1<const QuotaTableEntries&>::Type DumpQuotaTableCallback;
191 typedef Callback1<const LastAccessTimeTableEntries&>::Type 198 typedef Callback1<const OriginInfoTableEntries&>::Type
192 DumpLastAccessTimeTableCallback; 199 DumpOriginInfoTableCallback;
193 200
194 struct EvictionContext { 201 struct EvictionContext {
195 EvictionContext() 202 EvictionContext()
196 : evicted_type(kStorageTypeUnknown), 203 : evicted_type(kStorageTypeUnknown),
197 usage(0), 204 usage(0),
198 unlimited_usage(0), 205 unlimited_usage(0),
199 quota(0) {} 206 quota(0) {}
200 virtual ~EvictionContext() {} 207 virtual ~EvictionContext() {}
201 208
202 GURL evicted_origin; 209 GURL evicted_origin;
203 StorageType evicted_type; 210 StorageType evicted_type;
204 211
205 scoped_ptr<EvictOriginDataCallback> evict_origin_data_callback; 212 scoped_ptr<EvictOriginDataCallback> evict_origin_data_callback;
206 213
207 scoped_ptr<GetUsageAndQuotaForEvictionCallback> 214 scoped_ptr<GetUsageAndQuotaForEvictionCallback>
208 get_usage_and_quota_callback; 215 get_usage_and_quota_callback;
209 int64 usage; 216 int64 usage;
210 int64 unlimited_usage; 217 int64 unlimited_usage;
211 int64 quota; 218 int64 quota;
212 }; 219 };
213 220
214 typedef std::pair<std::string, StorageType> HostAndType; 221 typedef std::pair<std::string, StorageType> HostAndType;
215 typedef std::map<HostAndType, UsageAndQuotaDispatcherTask*> 222 typedef std::map<HostAndType, UsageAndQuotaDispatcherTask*>
216 UsageAndQuotaDispatcherTaskMap; 223 UsageAndQuotaDispatcherTaskMap;
217 224
218 friend struct QuotaManagerDeleter; 225 friend struct QuotaManagerDeleter;
226 friend class MockStorageClient;
219 friend class QuotaManagerProxy; 227 friend class QuotaManagerProxy;
220 friend class QuotaManagerTest; 228 friend class QuotaManagerTest;
221 friend class QuotaTemporaryStorageEvictor; 229 friend class QuotaTemporaryStorageEvictor;
222 230
223 // This initialization method is lazily called on the IO thread 231 // This initialization method is lazily called on the IO thread
224 // when the first quota manager API is called. 232 // when the first quota manager API is called.
225 // Initialize must be called after all quota clients are added to the 233 // Initialize must be called after all quota clients are added to the
226 // manager by RegisterStorage. 234 // manager by RegisterStorage.
227 void LazyInitialize(); 235 void LazyInitialize();
228 236
229 // Called by clients via proxy. 237 // Called by clients via proxy.
230 // Registers a quota client to the manager. 238 // Registers a quota client to the manager.
231 // The client must remain valid until OnQuotaManagerDestored is called. 239 // The client must remain valid until OnQuotaManagerDestored is called.
232 void RegisterClient(QuotaClient* client); 240 void RegisterClient(QuotaClient* client);
233 241
234 UsageTracker* GetUsageTracker(StorageType type) const; 242 UsageTracker* GetUsageTracker(StorageType type) const;
235 243
236 // Extract cached origins list from the usage tracker. 244 // Extract cached origins list from the usage tracker.
237 // (Might return empty list if no origin is tracked by the tracker.) 245 // (Might return empty list if no origin is tracked by the tracker.)
238 void GetCachedOrigins(StorageType type, std::set<GURL>* origins); 246 void GetCachedOrigins(StorageType type, std::set<GURL>* origins);
239 247
240 // This internal method is separately defined mainly for testing. 248 // These internal methods are separately defined mainly for testing.
241 void NotifyStorageAccessedInternal( 249 void NotifyStorageAccessedInternal(
242 QuotaClient::ID client_id, 250 QuotaClient::ID client_id,
243 const GURL& origin, 251 const GURL& origin,
244 StorageType type, 252 StorageType type,
245 base::Time accessed_time); 253 base::Time accessed_time);
254 void NotifyStorageModifiedInternal(
255 QuotaClient::ID client_id,
256 const GURL& origin,
257 StorageType type,
258 int64 delta,
259 base::Time modified_time);
246 260
247 void DumpQuotaTable(DumpQuotaTableCallback* callback); 261 void DumpQuotaTable(DumpQuotaTableCallback* callback);
248 void DumpLastAccessTimeTable(DumpLastAccessTimeTableCallback* callback); 262 void DumpOriginInfoTable(DumpOriginInfoTableCallback* callback);
249 263
250 // Methods for eviction logic. 264 // Methods for eviction logic.
251 void StartEviction(); 265 void StartEviction();
252 void DeleteOriginFromDatabase(const GURL& origin, StorageType type); 266 void DeleteOriginFromDatabase(const GURL& origin, StorageType type);
253 267
254 void DidOriginDataEvicted(QuotaStatusCode status); 268 void DidOriginDataEvicted(QuotaStatusCode status);
255 void DidGetAvailableSpaceForEviction( 269 void DidGetAvailableSpaceForEviction(
256 QuotaStatusCode status, 270 QuotaStatusCode status,
257 int64 available_space); 271 int64 available_space);
258 void DidGetGlobalQuotaForEviction( 272 void DidGetGlobalQuotaForEviction(
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 369
356 QuotaManager* manager_; // only accessed on the io thread 370 QuotaManager* manager_; // only accessed on the io thread
357 scoped_refptr<base::MessageLoopProxy> io_thread_; 371 scoped_refptr<base::MessageLoopProxy> io_thread_;
358 372
359 DISALLOW_COPY_AND_ASSIGN(QuotaManagerProxy); 373 DISALLOW_COPY_AND_ASSIGN(QuotaManagerProxy);
360 }; 374 };
361 375
362 } // namespace quota 376 } // namespace quota
363 377
364 #endif // WEBKIT_QUOTA_QUOTA_MANAGER_H_ 378 #endif // WEBKIT_QUOTA_QUOTA_MANAGER_H_
OLDNEW
« no previous file with comments | « webkit/quota/quota_database_unittest.cc ('k') | webkit/quota/quota_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698