Index: webkit/quota/quota_database.h |
diff --git a/webkit/quota/quota_database.h b/webkit/quota/quota_database.h |
index 981bb94a1bc575443a25a59a04b8cb212815f4bb..ad90712a958920306969aec50c2de76ff3c08e8f 100644 |
--- a/webkit/quota/quota_database.h |
+++ b/webkit/quota/quota_database.h |
@@ -33,6 +33,20 @@ class SpecialStoragePolicy; |
// All the methods of this class must run on the DB thread. |
class QuotaDatabase { |
public: |
+ // Structures used for CreateSchema. |
+ // TODO(kinuko): probably they should be defined somewhere else as a common |
michaeln
2011/07/01 00:17:39
Can these structs be moved to the private section?
kinuko
2011/07/04 07:43:52
Done.
|
+ // database types/utility. |
+ struct TableSchema { |
+ const char* table_name; |
+ const char* columns; |
+ }; |
+ struct IndexSchema { |
+ const char* index_name; |
+ const char* table_name; |
+ const char* columns; |
+ bool unique; |
+ }; |
+ |
// If 'path' is empty, an in memory database will be used. |
explicit QuotaDatabase(const FilePath& path); |
~QuotaDatabase(); |
@@ -41,18 +55,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 +85,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. |
@@ -81,18 +106,21 @@ class QuotaDatabase { |
friend bool operator <(const QuotaTableEntry& lhs, |
const QuotaTableEntry& rhs); |
- struct LastAccessTimeTableEntry { |
+ struct OriginInfoTableEntry { |
GURL origin; |
StorageType type; |
int used_count; |
base::Time last_access_time; |
+ base::Time last_modified_time; |
}; |
- friend bool operator <(const LastAccessTimeTableEntry& lhs, |
- const LastAccessTimeTableEntry& rhs); |
+ friend bool operator <(const OriginInfoTableEntry& lhs, |
+ const OriginInfoTableEntry& 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 +135,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_; |