| Index: chrome/browser/sessions/session_service.h
|
| diff --git a/chrome/browser/sessions/session_service.h b/chrome/browser/sessions/session_service.h
|
| index e6feffd1f400847d0218bdb2b953040c5842354c..4fad17ff19b7b319e682607a3c5b32275e5bfc2d 100644
|
| --- a/chrome/browser/sessions/session_service.h
|
| +++ b/chrome/browser/sessions/session_service.h
|
| @@ -7,6 +7,7 @@
|
| #pragma once
|
|
|
| #include <map>
|
| +#include <set>
|
| #include <string>
|
|
|
| #include "base/basictypes.h"
|
| @@ -178,6 +179,8 @@ class SessionService : public BaseSessionService,
|
| virtual void Save() OVERRIDE;
|
|
|
| private:
|
| + class SessionStorageAssociationReader;
|
| +
|
| typedef std::map<SessionID::id_type, std::pair<int, int> > IdToRange;
|
| typedef std::map<SessionID::id_type, SessionTab*> IdToSessionTab;
|
| typedef std::map<SessionID::id_type, SessionWindow*> IdToSessionWindow;
|
| @@ -237,6 +240,10 @@ class SessionService : public BaseSessionService,
|
| SessionCommand* CreatePinnedStateCommand(const SessionID& tab_id,
|
| bool is_pinned);
|
|
|
| + void CreateAndScheduleSessionStorageCreatedCommand(
|
| + int64 namespace_id,
|
| + const FilePath& directory);
|
| +
|
| // Callback from the backend for getting the commands from the save file.
|
| // Converts the commands in SessionWindows and notifies the real callback.
|
| void OnGotSessionCommands(
|
| @@ -299,7 +306,8 @@ class SessionService : public BaseSessionService,
|
| // done by AddTabsToWindows.
|
| bool CreateTabsAndWindows(const std::vector<SessionCommand*>& data,
|
| std::map<int, SessionTab*>* tabs,
|
| - std::map<int, SessionWindow*>* windows);
|
| + std::map<int, SessionWindow*>* windows,
|
| + std::set<std::string>* needed_session_storages);
|
|
|
| // Adds commands to commands that will recreate the state of the specified
|
| // tab. This adds at most kMaxNavigationCountToPersist navigations (in each
|
| @@ -392,6 +400,11 @@ class SessionService : public BaseSessionService,
|
| void RecordUpdatedSessionNavigationOrTab(base::TimeDelta delta,
|
| bool use_long_period);
|
|
|
| + // Callback for SessionStorageAssociationReader.
|
| + void AssociateSessionStorage(SessionStorageAssociationReader* reader,
|
| + int64 namespace_id,
|
| + const FilePath& directory);
|
| +
|
| // Convert back/forward between the Browser and SessionService DB window
|
| // types.
|
| static WindowType WindowTypeForBrowserType(Browser::Type type);
|
| @@ -437,6 +450,13 @@ class SessionService : public BaseSessionService,
|
| // current/last session.
|
| bool move_on_new_browser_;
|
|
|
| + // Map from session storage namespace id (stored by |SessionStorageNamespace|)
|
| + // to a pair (window_id, tab_id).
|
| + typedef std::map<int64,
|
| + std::pair<SessionID, SessionID> > SessionStorageNamespaceMap;
|
| +
|
| + SessionStorageNamespaceMap session_storage_namespace_map_;
|
| +
|
| // Used for reporting frequency of session altering operations.
|
| base::TimeTicks last_updated_tab_closed_time_;
|
| base::TimeTicks last_updated_nav_list_pruned_time_;
|
| @@ -448,6 +468,16 @@ class SessionService : public BaseSessionService,
|
| const base::TimeDelta save_delay_in_mins_;
|
| const base::TimeDelta save_delay_in_hrs_;
|
|
|
| + // For keeping track of |SessionStorageAssociationReader|s which are active at
|
| + // the moment. When destructed, this map will drop the references to them. The
|
| + // destructor of |SessionService| uses this map for nullifying the pointers in
|
| + // the |SessionStorageAssociationReader|s so that they won't call
|
| + // |SessionService| back after finishing their operations.
|
| + typedef std::map<SessionStorageAssociationReader*,
|
| + scoped_refptr<SessionStorageAssociationReader> >
|
| + SessionStorageAssociationReaders;
|
| + SessionStorageAssociationReaders session_storage_association_readers_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(SessionService);
|
| };
|
|
|
|
|