Index: webkit/quota/quota_database.h |
diff --git a/webkit/quota/quota_database.h b/webkit/quota/quota_database.h |
index 981bb94a1bc575443a25a59a04b8cb212815f4bb..ec437f1ccb5f0f5f7144485a3ee0f6fa15383281 100644 |
--- a/webkit/quota/quota_database.h |
+++ b/webkit/quota/quota_database.h |
@@ -41,18 +41,23 @@ class QuotaDatabase { |
bool GetHostQuota(const std::string& host, StorageType type, int64* quota); |
bool SetHostQuota(const std::string& host, StorageType type, int64 quota); |
+ bool DeleteHostQuota(const std::string& host, StorageType type); |
- bool SetOriginLastAccessTime(const GURL& origin, StorageType type, |
+ bool SetOriginLastAccessTime(const GURL& origin, |
+ StorageType type, |
base::Time last_access_time); |
- // Register |origins| to Database with |used_count| = 0 and |
- // specified |last_access_time|. |
- bool RegisterOrigins(const std::set<GURL>& origins, |
- StorageType type, |
- base::Time last_access_time); |
+ bool SetOriginLastModifiedTime(const GURL& origin, |
+ StorageType type, |
+ base::Time last_modified_time); |
- bool DeleteHostQuota(const std::string& host, StorageType type); |
- bool DeleteOriginLastAccessTime(const GURL& origin, StorageType type); |
+ // Register initial |origins| info |type| to the database. |
+ // This method is assumed to be called only after the installation or |
+ // the database schema reset. |
+ bool RegisterInitialOriginInfo( |
+ const std::set<GURL>& origins, StorageType type); |
+ |
+ bool DeleteOriginInfo(const GURL& origin, StorageType type); |
bool GetGlobalQuota(StorageType type, int64* quota); |
bool SetGlobalQuota(StorageType type, int64 quota); |
@@ -66,6 +71,12 @@ class QuotaDatabase { |
SpecialStoragePolicy* special_storage_policy, |
GURL* origin); |
+ // Populates |origins| with the ones that have been modified since |
+ // the |modified_since|. |
+ bool GetOriginsModifiedSince(StorageType type, |
+ std::set<GURL>* origins, |
+ base::Time modified_since); |
+ |
// Returns false if SetOriginDatabaseBootstrapped has never |
// been called before, which means existing origins may not have been |
// registered. |
@@ -74,6 +85,11 @@ class QuotaDatabase { |
private: |
struct QuotaTableEntry { |
+ QuotaTableEntry(); |
+ QuotaTableEntry( |
+ const std::string& host, |
+ StorageType type, |
+ int64 quota); |
std::string host; |
StorageType type; |
int64 quota; |
@@ -81,18 +97,40 @@ class QuotaDatabase { |
friend bool operator <(const QuotaTableEntry& lhs, |
const QuotaTableEntry& rhs); |
- struct LastAccessTimeTableEntry { |
+ struct OriginInfoTableEntry { |
+ OriginInfoTableEntry(); |
+ OriginInfoTableEntry( |
+ const GURL& origin, |
+ StorageType type, |
+ int used_count, |
+ const base::Time& last_access_time, |
+ const base::Time& last_modified_time); |
GURL origin; |
StorageType type; |
int used_count; |
base::Time last_access_time; |
+ base::Time last_modified_time; |
+ }; |
+ friend bool operator <(const OriginInfoTableEntry& lhs, |
+ const OriginInfoTableEntry& rhs); |
+ |
+ // Structures used for CreateSchema. |
+ struct TableSchema { |
+ const char* table_name; |
+ const char* columns; |
+ }; |
+ struct IndexSchema { |
+ const char* index_name; |
+ const char* table_name; |
+ const char* columns; |
+ bool unique; |
}; |
- friend bool operator <(const LastAccessTimeTableEntry& lhs, |
- const LastAccessTimeTableEntry& rhs); |
typedef base::Callback<bool (const QuotaTableEntry&)> QuotaTableCallback; |
- typedef base::Callback<bool (const LastAccessTimeTableEntry&)> |
- LastAccessTimeTableCallback; |
+ typedef base::Callback<bool (const OriginInfoTableEntry&)> |
+ OriginInfoTableCallback; |
+ |
+ struct QuotaTableImporter; |
// For long-running transactions support. We always keep a transaction open |
// so that multiple transactions can be batched. They are flushed |
@@ -107,13 +145,19 @@ class QuotaDatabase { |
bool LazyOpen(bool create_if_needed); |
bool EnsureDatabaseVersion(); |
- bool CreateSchema(); |
bool ResetSchema(); |
+ bool UpgradeSchema(int current_version); |
- // |callback| may return false to stop reading data |
- bool DumpQuotaTable(QuotaTableCallback* callback); |
- bool DumpLastAccessTimeTable(LastAccessTimeTableCallback* callback); |
+ static bool CreateSchema( |
+ sql::Connection* database, |
+ sql::MetaTable* meta_table, |
+ int schema_version, int compatible_version, |
+ const TableSchema* tables, size_t tables_size, |
+ const IndexSchema* indexes, size_t indexes_size); |
+ // |callback| may return false to stop reading data. |
+ bool DumpQuotaTable(QuotaTableCallback* callback); |
+ bool DumpOriginInfoTable(OriginInfoTableCallback* callback); |
FilePath db_file_path_; |
@@ -127,6 +171,9 @@ class QuotaDatabase { |
friend class QuotaDatabaseTest; |
friend class QuotaManager; |
+ static const TableSchema kTables[]; |
+ static const IndexSchema kIndexes[]; |
+ |
DISALLOW_COPY_AND_ASSIGN(QuotaDatabase); |
}; |