| Index: webkit/database/database_tracker.h
|
| diff --git a/webkit/database/database_tracker.h b/webkit/database/database_tracker.h
|
| index bbc308adfc33be0487f6c32931e201272da9816c..92af0d9fc9102d3c98f6ddab49365ec4e657dfbf 100644
|
| --- a/webkit/database/database_tracker.h
|
| +++ b/webkit/database/database_tracker.h
|
| @@ -88,7 +88,9 @@ class DatabaseTracker
|
| virtual ~Observer() {}
|
| };
|
|
|
| - DatabaseTracker(const FilePath& profile_path, bool is_incognito,
|
| + DatabaseTracker(const FilePath& profile_path,
|
| + bool is_incognito,
|
| + bool clear_local_state_on_exit,
|
| quota::SpecialStoragePolicy* special_storage_policy,
|
| quota::QuotaManagerProxy* quota_manager_proxy,
|
| base::MessageLoopProxy* db_tracker_thread);
|
| @@ -123,6 +125,12 @@ class DatabaseTracker
|
| return quota_manager_proxy_.get();
|
| }
|
|
|
| + // Safe to call on any thread.
|
| + quota::SpecialStoragePolicy* special_storage_policy() const {
|
| + return special_storage_policy_.get();
|
| + }
|
| +
|
| +
|
| bool IsDatabaseScheduledForDeletion(const string16& origin_identifier,
|
| const string16& database_name);
|
|
|
| @@ -149,6 +157,11 @@ class DatabaseTracker
|
| virtual int DeleteDataForOrigin(const string16& origin_identifier,
|
| net::CompletionCallback* callback);
|
|
|
| + // Delete all files belonging to the given origin given that no database
|
| + // connections within this origin are open, or if |force| is true, delete
|
| + // the meta data and rename the associated directory.
|
| + bool DeleteOrigin(const string16& origin_identifier, bool force);
|
| +
|
| bool IsIncognitoProfile() const { return is_incognito_; }
|
|
|
| void GetIncognitoFileHandle(const string16& vfs_file_path,
|
| @@ -161,7 +174,11 @@ class DatabaseTracker
|
| // Deletes the directory that stores all DBs in incognito mode, if it exists.
|
| void DeleteIncognitoDBDirectory();
|
|
|
| - static void ClearLocalState(const FilePath& profile_path);
|
| + // Deletes databases not protected by the special storage policy if
|
| + // |clear_local_state_on_exit_| is true and blocks databases from being
|
| + // created/opened.
|
| + void Shutdown();
|
| + void SetClearLocalStateOnExit(bool clear_local_state_on_exit);
|
|
|
| private:
|
| friend class base::RefCountedThreadSafe<DatabaseTracker>;
|
| @@ -195,7 +212,6 @@ class DatabaseTracker
|
|
|
| bool DeleteClosedDatabase(const string16& origin_identifier,
|
| const string16& database_name);
|
| - bool DeleteOrigin(const string16& origin_identifier);
|
| void DeleteDatabaseIfNeeded(const string16& origin_identifier,
|
| const string16& database_name);
|
|
|
| @@ -228,6 +244,7 @@ class DatabaseTracker
|
|
|
| bool is_initialized_;
|
| const bool is_incognito_;
|
| + bool clear_local_state_on_exit_;
|
| bool shutting_down_;
|
| const FilePath profile_path_;
|
| const FilePath db_dir_;
|
| @@ -247,6 +264,9 @@ class DatabaseTracker
|
|
|
| scoped_refptr<quota::QuotaManagerProxy> quota_manager_proxy_;
|
|
|
| + // The database tracker thread we're supposed to run file IO on.
|
| + scoped_refptr<base::MessageLoopProxy> db_tracker_thread_;
|
| +
|
| // When in incognito mode, store a DELETE_ON_CLOSE handle to each
|
| // main DB and journal file that was accessed. When the incognito profile
|
| // goes away (or when the browser crashes), all these handles will be
|
|
|