| 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);
|
| };
|
|
|
|
|