| Index: webkit/dom_storage/dom_storage_context.h
|
| diff --git a/webkit/dom_storage/dom_storage_context.h b/webkit/dom_storage/dom_storage_context.h
|
| index ca2b570f618d74cb9cc0f66e3717faf6fde6fb4a..f54d65adfadb31e941e4033b0dd57caba57c9a85 100644
|
| --- a/webkit/dom_storage/dom_storage_context.h
|
| +++ b/webkit/dom_storage/dom_storage_context.h
|
| @@ -35,6 +35,7 @@ class DomStorageArea;
|
| class DomStorageNamespace;
|
| class DomStorageSession;
|
| class DomStorageTaskRunner;
|
| +class SessionStorageDatabase;
|
|
|
| // The Context is the root of an object containment hierachy for
|
| // Namespaces and Areas related to the owning profile.
|
| @@ -88,6 +89,13 @@ class DomStorageContext
|
| virtual ~EventObserver() {}
|
| };
|
|
|
| + class SessionStorageObserver {
|
| + public:
|
| + virtual void OnSessionStorageNamespaceAssociated(
|
| + int64 real_namespace_id) = 0;
|
| + virtual ~SessionStorageObserver() {}
|
| + };
|
| +
|
| DomStorageContext(
|
| const FilePath& localstorage_directory, // empty for incognito profiles
|
| const FilePath& sessionstorage_directory, // empty for incognito profiles
|
| @@ -148,6 +156,15 @@ class DomStorageContext
|
| const DomStorageArea* area,
|
| const GURL& page_url);
|
|
|
| + // Adds |observer| to get notified about the association between
|
| + // |namespace_id| and its real id in the database.
|
| + void AddSessionStorageObserver(int64 namespace_id,
|
| + SessionStorageObserver* observer);
|
| + void RemoveSessionStorageObserver(int64 namespace_id);
|
| +
|
| + void NotifySessionStorageNamespaceAssociated(int64 namespace_id,
|
| + int64 real_namespace_id);
|
| +
|
| // May be called on any thread.
|
| int64 AllocateSessionId() {
|
| return session_id_sequence_.GetNext();
|
| @@ -158,6 +175,9 @@ class DomStorageContext
|
| void DeleteSessionNamespace(int64 namespace_id);
|
| void CloneSessionNamespace(int64 existing_id, int64 new_id);
|
|
|
| + // May be called on any thread.
|
| + void AssociateSessionStorage(int64 namespace_id, int64 real_id);
|
| +
|
| private:
|
| friend class DomStorageContextTest;
|
| FRIEND_TEST_ALL_PREFIXES(DomStorageContextTest, Basics);
|
| @@ -169,6 +189,11 @@ class DomStorageContext
|
|
|
| void ClearLocalStateInCommitSequence();
|
|
|
| + void DeleteSessionNamespaceInCommitSequence(int64 namespace_id);
|
| + void DeleteLeftoverDataInCommitSequence();
|
| +
|
| + void SessionStorageAssociated(int64 id, int64 real_id);
|
| +
|
| // Collection of namespaces keyed by id.
|
| StorageNamespaceMap namespaces_;
|
|
|
| @@ -186,6 +211,10 @@ class DomStorageContext
|
| // List of objects observing local storage events.
|
| ObserverList<EventObserver> event_observers_;
|
|
|
| + // Map of objects observing the association between session storage namespace
|
| + // ids and real ids in the database.
|
| + std::map<int64, SessionStorageObserver*> session_storage_observers_;
|
| +
|
| // We use a 32 bit identifier for per tab storage sessions.
|
| // At a tab per second, this range is large enough for 68 years.
|
| base::AtomicSequenceNumber session_id_sequence_;
|
| @@ -194,6 +223,7 @@ class DomStorageContext
|
| bool clear_local_state_;
|
| bool save_session_state_;
|
| scoped_refptr<quota::SpecialStoragePolicy> special_storage_policy_;
|
| + scoped_refptr<SessionStorageDatabase> session_storage_database_;
|
| };
|
|
|
| } // namespace dom_storage
|
|
|