Chromium Code Reviews| Index: webkit/dom_storage/dom_storage_area.h |
| diff --git a/webkit/dom_storage/dom_storage_area.h b/webkit/dom_storage/dom_storage_area.h |
| index 0bad246431725068a34e97242d199f3b8b36b20b..b321eea4d8ace69c2a52ba5af02dde5aa059f258 100644 |
| --- a/webkit/dom_storage/dom_storage_area.h |
| +++ b/webkit/dom_storage/dom_storage_area.h |
| @@ -9,16 +9,19 @@ |
| #include "base/file_path.h" |
| #include "base/gtest_prod_util.h" |
| #include "base/memory/ref_counted.h" |
| +#include "base/memory/scoped_ptr.h" |
| #include "base/nullable_string16.h" |
| #include "base/string16.h" |
| #include "googleurl/src/gurl.h" |
| -#include "webkit/dom_storage/dom_storage_database.h" |
| +#include "webkit/dom_storage/dom_storage_database_adapter.h" |
| #include "webkit/dom_storage/dom_storage_types.h" |
| namespace dom_storage { |
| +class DomStorageDatabaseAdapter; |
| class DomStorageMap; |
| class DomStorageTaskRunner; |
| +class SessionStorageDatabase; |
| // Container for a per-origin Map of key/value pairs potentially |
| // backed by storage on disk and lazily commits changes to disk. |
| @@ -31,11 +34,23 @@ class DomStorageArea |
| static FilePath DatabaseFileNameFromOrigin(const GURL& origin); |
| static GURL OriginFromDatabaseFileName(const FilePath& file_name); |
| + // Local storage backed on disk. |
| DomStorageArea(int64 namespace_id, |
| const GURL& origin, |
| const FilePath& directory, |
| DomStorageTaskRunner* task_runner); |
| + // Session storage backed on disk. |
| + DomStorageArea(int64 namespace_id, |
| + const GURL& origin, |
| + SessionStorageDatabase* session_storage_backing, |
| + DomStorageTaskRunner* task_runner); |
| + |
| + // Local storage or session storage in memory. |
| + DomStorageArea(int64 namespace_id, |
| + const GURL& origin, |
| + DomStorageTaskRunner* task_runner); |
| + |
| const GURL& origin() const { return origin_; } |
| int64 namespace_id() const { return namespace_id_; } |
| @@ -77,8 +92,13 @@ class DomStorageArea |
| friend class base::RefCountedThreadSafe<DomStorageArea>; |
| struct CommitBatch { |
| + // When committed, Commitbatch will first commit changed_values. If |
| + // changed_values_after_deep_copy is non-empty, it will deep cpoy the map, |
| + // and commit changed_values_after_deep_copy. |
|
michaeln
2012/04/22 21:43:35
see comments in the .cc file about simplifying thi
marja
2012/05/11 12:18:32
Done.
|
| bool clear_all_first; |
| ValuesMap changed_values; |
| + bool clear_all_after_deep_copy; |
| + ValuesMap changed_values_after_deep_copy; |
| CommitBatch(); |
| ~CommitBatch(); |
| }; |
| @@ -91,8 +111,8 @@ class DomStorageArea |
| void InitialImportIfNeeded(); |
| // Post tasks to defer writing a batch of changed values to |
| - // disk on the commit sequence, and to call back on the primary |
| - // task sequence when complete. |
| + // disk on the commit sequence, and to call back on the primary task |
| + // sequence when complete. |
| CommitBatch* CreateCommitBatchIfNeeded(); |
| void OnCommitTimer(); |
| void CommitChanges(); |
| @@ -105,9 +125,11 @@ class DomStorageArea |
| FilePath directory_; |
| scoped_refptr<DomStorageTaskRunner> task_runner_; |
| scoped_refptr<DomStorageMap> map_; |
| - scoped_ptr<DomStorageDatabase> backing_; |
| + scoped_ptr<DomStorageDatabaseAdapter> backing_; |
| + scoped_refptr<SessionStorageDatabase> session_storage_backing_; |
| bool is_initial_import_done_; |
| bool is_shutdown_; |
| + bool is_shallow_copy_; |
|
michaeln
2012/04/22 21:43:35
not sure the is_shallow_copy_ data member is good
marja
2012/05/11 12:18:32
Gone.
|
| scoped_ptr<CommitBatch> commit_batch_; |
| scoped_ptr<CommitBatch> in_flight_commit_batch_; |
| }; |