Index: content/browser/in_process_webkit/indexed_db_context.h |
=================================================================== |
--- content/browser/in_process_webkit/indexed_db_context.h (revision 97928) |
+++ content/browser/in_process_webkit/indexed_db_context.h (working copy) |
@@ -7,12 +7,16 @@ |
#pragma once |
#include <map> |
+#include <set> |
+#include <vector> |
#include "base/basictypes.h" |
#include "base/file_path.h" |
+#include "base/gtest_prod_util.h" |
#include "base/memory/ref_counted.h" |
#include "base/memory/scoped_ptr.h" |
#include "content/browser/browser_thread.h" |
+#include "googleurl/src/gurl.h" |
class GURL; |
class FilePath; |
@@ -48,9 +52,6 @@ |
// The indexed db file extension. |
static const FilePath::CharType kIndexedDBExtension[]; |
- // Get the file name of the indexed db file for the given origin. |
- FilePath GetIndexedDBFilePath(const string16& origin_id) const; |
- |
void set_clear_local_state_on_exit(bool clear_local_state) { |
clear_local_state_on_exit_ = clear_local_state; |
} |
@@ -59,11 +60,12 @@ |
void DeleteIndexedDBForOrigin(const GURL& origin_url); |
// Does a particular origin get unlimited storage? |
- bool IsUnlimitedStorageGranted(const GURL& origin) const; |
+ bool IsUnlimitedStorageGranted(const GURL& origin_url) const; |
// Methods used in response to QuotaManager requests. |
- void GetAllOriginIdentifiers(std::vector<string16>* origin_ids); |
+ void GetAllOrigins(std::vector<GURL>* origins); |
int64 GetOriginDiskUsage(const GURL& origin_url); |
+ base::Time GetOriginLastModified(const GURL& origin_url); |
// Methods called by IndexedDBDispatcherHost for quota support. |
void ConnectionOpened(const GURL& origin_url); |
@@ -80,28 +82,41 @@ |
#endif |
private: |
+ FRIEND_TEST(ExtensionServiceTest, ClearExtensionData); |
+ FRIEND_TEST(IndexedDBBrowserTest, ClearLocalState); |
+ friend class IndexedDBQuotaClientTest; |
+ |
typedef std::map<GURL, int64> OriginToSizeMap; |
class IndexedDBGetUsageAndQuotaCallback; |
+ FilePath GetIndexedDBFilePath(const string16& origin_id) const; |
int64 ReadUsageFromDisk(const GURL& origin_url) const; |
void EnsureDiskUsageCacheInitialized(const GURL& origin_url); |
void QueryDiskAndUpdateQuotaUsage(const GURL& origin_url); |
void GotUpdatedQuota(const GURL& origin_url, int64 usage, int64 quota); |
void QueryAvailableQuota(const GURL& origin_url); |
- int64 ResetDiskUsageCache(const GURL& origin_url); |
+ std::set<GURL>* GetOriginSet(); |
+ bool AddToOriginSet(const GURL& origin_url) { |
+ return GetOriginSet()->insert(origin_url).second; |
+ } |
+ void RemoveFromOriginSet(const GURL& origin_url) { |
+ GetOriginSet()->erase(origin_url); |
+ } |
+ bool IsInOriginSet(const GURL& origin_url) { |
+ std::set<GURL>* set = GetOriginSet(); |
+ return set->find(origin_url) != set->end(); |
+ } |
+ |
+ // Only for testing. |
+ void ResetCaches(); |
+ |
scoped_ptr<WebKit::WebIDBFactory> idb_factory_; |
- |
- // Path where the indexed db data is stored |
FilePath data_path_; |
- |
- // True if the destructor should delete its files. |
bool clear_local_state_on_exit_; |
- |
scoped_refptr<quota::SpecialStoragePolicy> special_storage_policy_; |
- |
scoped_refptr<quota::QuotaManagerProxy> quota_manager_proxy_; |
- |
+ scoped_ptr<std::set<GURL> > origin_set_; |
OriginToSizeMap origin_size_map_; |
OriginToSizeMap space_available_map_; |
std::map<GURL, unsigned int> connection_count_; |