| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef WEBKIT_DATABASE_DATABASE_TRACKER_H_ | 5 #ifndef WEBKIT_DATABASE_DATABASE_TRACKER_H_ |
| 6 #define WEBKIT_DATABASE_DATABASE_TRACKER_H_ | 6 #define WEBKIT_DATABASE_DATABASE_TRACKER_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <set> | 9 #include <set> |
| 10 | 10 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 | 63 |
| 64 string16 origin_; | 64 string16 origin_; |
| 65 int64 total_size_; | 65 int64 total_size_; |
| 66 int64 quota_; | 66 int64 quota_; |
| 67 DatabaseInfoMap database_info_; | 67 DatabaseInfoMap database_info_; |
| 68 }; | 68 }; |
| 69 | 69 |
| 70 // This class manages the main database, and keeps track of per origin quotas. | 70 // This class manages the main database, and keeps track of per origin quotas. |
| 71 // | 71 // |
| 72 // The data in this class is not thread-safe, so all methods of this class | 72 // The data in this class is not thread-safe, so all methods of this class |
| 73 // should be called on the same thread. The only exception is | 73 // should be called on the same thread. The only exceptions are the ctor(), |
| 74 // database_directory() which returns a constant that is initialized when | 74 // the dtor() and the database_directory() and quota_manager_proxy() getters. |
| 75 // the DatabaseTracker instance is created. | |
| 76 // | 75 // |
| 77 // Furthermore, some methods of this class have to read/write data from/to | 76 // Furthermore, some methods of this class have to read/write data from/to |
| 78 // the disk. Therefore, in a multi-threaded application, all methods of this | 77 // the disk. Therefore, in a multi-threaded application, all methods of this |
| 79 // class should be called on the thread dedicated to file operations (file | 78 // class should be called on the thread dedicated to file operations (file |
| 80 // thread in the browser process, for example), if such a thread exists. | 79 // thread in the browser process, for example), if such a thread exists. |
| 81 class DatabaseTracker | 80 class DatabaseTracker |
| 82 : public base::RefCountedThreadSafe<DatabaseTracker> { | 81 : public base::RefCountedThreadSafe<DatabaseTracker> { |
| 83 public: | 82 public: |
| 84 class Observer { | 83 class Observer { |
| 85 public: | 84 public: |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 | 116 |
| 118 const FilePath& DatabaseDirectory() const { return db_dir_; } | 117 const FilePath& DatabaseDirectory() const { return db_dir_; } |
| 119 FilePath GetFullDBFilePath(const string16& origin_identifier, | 118 FilePath GetFullDBFilePath(const string16& origin_identifier, |
| 120 const string16& database_name); | 119 const string16& database_name); |
| 121 | 120 |
| 122 // virtual for unittesting only | 121 // virtual for unittesting only |
| 123 virtual bool GetOriginInfo(const string16& origin_id, OriginInfo* info); | 122 virtual bool GetOriginInfo(const string16& origin_id, OriginInfo* info); |
| 124 virtual bool GetAllOriginIdentifiers(std::vector<string16>* origin_ids); | 123 virtual bool GetAllOriginIdentifiers(std::vector<string16>* origin_ids); |
| 125 virtual bool GetAllOriginsInfo(std::vector<OriginInfo>* origins_info); | 124 virtual bool GetAllOriginsInfo(std::vector<OriginInfo>* origins_info); |
| 126 | 125 |
| 126 // TODO(michaeln): remove quota related stuff when quota manager |
| 127 // integration is complete |
| 127 void SetOriginQuota(const string16& origin_identifier, int64 new_quota); | 128 void SetOriginQuota(const string16& origin_identifier, int64 new_quota); |
| 128 int64 GetDefaultQuota() { return default_quota_; } | 129 int64 GetDefaultQuota() { return default_quota_; } |
| 129 // Sets the default quota for all origins. Should be used in tests only. | 130 void SetDefaultQuota(int64 quota); // for testing |
| 130 void SetDefaultQuota(int64 quota); | 131 |
| 132 // Safe to call on any thread. |
| 133 quota::QuotaManagerProxy* quota_manager_proxy() const { |
| 134 return quota_manager_proxy_.get(); |
| 135 } |
| 131 | 136 |
| 132 bool IsDatabaseScheduledForDeletion(const string16& origin_identifier, | 137 bool IsDatabaseScheduledForDeletion(const string16& origin_identifier, |
| 133 const string16& database_name); | 138 const string16& database_name); |
| 134 | 139 |
| 135 // Deletes a single database. Returns net::OK on success, net::FAILED on | 140 // Deletes a single database. Returns net::OK on success, net::FAILED on |
| 136 // failure, or net::ERR_IO_PENDING and |callback| is invoked upon completion, | 141 // failure, or net::ERR_IO_PENDING and |callback| is invoked upon completion, |
| 137 // if non-NULL. | 142 // if non-NULL. |
| 138 int DeleteDatabase(const string16& origin_identifier, | 143 int DeleteDatabase(const string16& origin_identifier, |
| 139 const string16& database_name, | 144 const string16& database_name, |
| 140 net::CompletionCallback* callback); | 145 net::CompletionCallback* callback); |
| 141 | 146 |
| 142 // Delete any databases that have been touched since the cutoff date that's | 147 // Delete any databases that have been touched since the cutoff date that's |
| 143 // supplied, omitting any that match IDs within |protected_origins|. | 148 // supplied, omitting any that match IDs within |protected_origins|. |
| 144 // Returns net::OK on success, net::FAILED if not all databases could be | 149 // Returns net::OK on success, net::FAILED if not all databases could be |
| 145 // deleted, and net::ERR_IO_PENDING and |callback| is invoked upon completion, | 150 // deleted, and net::ERR_IO_PENDING and |callback| is invoked upon completion, |
| 146 // if non-NULL. Protected origins, according the the SpecialStoragePolicy, | 151 // if non-NULL. Protected origins, according the the SpecialStoragePolicy, |
| 147 // are not deleted by this method. | 152 // are not deleted by this method. |
| 148 int DeleteDataModifiedSince(const base::Time& cutoff, | 153 int DeleteDataModifiedSince(const base::Time& cutoff, |
| 149 net::CompletionCallback* callback); | 154 net::CompletionCallback* callback); |
| 150 | 155 |
| 151 // Delete all databases that belong to the given origin. Returns net::OK on | 156 // Delete all databases that belong to the given origin. Returns net::OK on |
| 152 // success, net::FAILED if not all databases could be deleted, and | 157 // success, net::FAILED if not all databases could be deleted, and |
| 153 // net::ERR_IO_PENDING and |callback| is invoked upon completion, if non-NULL. | 158 // net::ERR_IO_PENDING and |callback| is invoked upon completion, if non-NULL. |
| 154 int DeleteDataForOrigin(const string16& origin_identifier, | 159 // virtual for unit testing only |
| 155 net::CompletionCallback* callback); | 160 virtual int DeleteDataForOrigin(const string16& origin_identifier, |
| 161 net::CompletionCallback* callback); |
| 156 | 162 |
| 157 bool IsIncognitoProfile() const { return is_incognito_; } | 163 bool IsIncognitoProfile() const { return is_incognito_; } |
| 158 | 164 |
| 159 void GetIncognitoFileHandle(const string16& vfs_file_path, | 165 void GetIncognitoFileHandle(const string16& vfs_file_path, |
| 160 base::PlatformFile* file_handle) const; | 166 base::PlatformFile* file_handle) const; |
| 161 void SaveIncognitoFileHandle(const string16& vfs_file_path, | 167 void SaveIncognitoFileHandle(const string16& vfs_file_path, |
| 162 const base::PlatformFile& file_handle); | 168 const base::PlatformFile& file_handle); |
| 163 bool CloseIncognitoFileHandle(const string16& vfs_file_path); | 169 bool CloseIncognitoFileHandle(const string16& vfs_file_path); |
| 164 bool HasSavedIncognitoFileHandle(const string16& vfs_file_path) const; | 170 bool HasSavedIncognitoFileHandle(const string16& vfs_file_path) const; |
| 165 | 171 |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 270 // this map to assign directory names that do not reveal this information. | 276 // this map to assign directory names that do not reveal this information. |
| 271 OriginDirectoriesMap incognito_origin_directories_; | 277 OriginDirectoriesMap incognito_origin_directories_; |
| 272 int incognito_origin_directories_generator_; | 278 int incognito_origin_directories_generator_; |
| 273 | 279 |
| 274 FRIEND_TEST_ALL_PREFIXES(DatabaseTracker, TestHelper); | 280 FRIEND_TEST_ALL_PREFIXES(DatabaseTracker, TestHelper); |
| 275 }; | 281 }; |
| 276 | 282 |
| 277 } // namespace webkit_database | 283 } // namespace webkit_database |
| 278 | 284 |
| 279 #endif // WEBKIT_DATABASE_DATABASE_TRACKER_H_ | 285 #endif // WEBKIT_DATABASE_DATABASE_TRACKER_H_ |
| OLD | NEW |