Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(36)

Unified Diff: components/sync_sessions/synced_session_tracker.h

Issue 2694963002: Revert of Reland v4 of Session refactor (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/sync_sessions/synced_session_tracker.h
diff --git a/components/sync_sessions/synced_session_tracker.h b/components/sync_sessions/synced_session_tracker.h
index ccd47839e24c49d53f7a750fe48736d8875f7d48..35123d76a9ce54e67999f31071da0feac5128723 100644
--- a/components/sync_sessions/synced_session_tracker.h
+++ b/components/sync_sessions/synced_session_tracker.h
@@ -40,7 +40,8 @@
explicit SyncedSessionTracker(SyncSessionsClient* sessions_client);
~SyncedSessionTracker();
- // **** Synced session/tab query methods. ****
+ // We track and distinguish the local session from foreign sessions.
+ void SetLocalSessionTag(const std::string& local_session_tag);
// Fill a preallocated vector with all foreign sessions we're tracking (skips
// the local session object). SyncedSession ownership remains within the
@@ -49,11 +50,6 @@
// Returns true if we had foreign sessions to fill it with, false otherwise.
bool LookupAllForeignSessions(std::vector<const SyncedSession*>* sessions,
SessionLookup lookup) const;
-
- // Fills |tab_node_ids| with the tab node ids (see GetTab) for all the tabs*
- // associated with the session having tag |session_tag|.
- void LookupForeignTabNodeIds(const std::string& session_tag,
- std::set<int>* tab_node_ids) const;
// Attempts to look up the session windows associatd with the session given
// by |session_tag|. Ownership of SessionWindows stays within the
@@ -80,12 +76,14 @@
// this won't create-if-not-present.
bool LookupLocalSession(const SyncedSession** output) const;
- // **** Methods for manipulating synced sessions and tabs. ****
-
// Returns a pointer to the SyncedSession object associated with
// |session_tag|. If none exists, creates one. Ownership of the
// SyncedSession remains within the SyncedSessionTracker.
SyncedSession* GetSession(const std::string& session_tag);
+
+ // Deletes the session associated with |session_tag| if it exists.
+ // Returns true if the session existed and was deleted, false otherwise.
+ bool DeleteSession(const std::string& session_tag);
// Resets the tracking information for the session specified by |session_tag|.
// This involves clearing all the windows and tabs from the session, while
@@ -96,42 +94,6 @@
// tabs not owned.
void ResetSessionTracking(const std::string& session_tag);
- // Adds the window with id |window_id| to the session specified by
- // |session_tag|. If none existed for that session, creates one. Similarly, if
- // the session did not exist yet, creates it. Ownership of the SessionWindow
- // remains within the SyncedSessionTracker.
- void PutWindowInSession(const std::string& session_tag,
- SessionID::id_type window_id);
-
- // Adds the tab with id |tab_id| to the window |window_id|. If none existed
- // for that session, creates one. Ownership of the SessionTab remains within
- // the SyncedSessionTracker.
- //
- // Note: GetSession(..) must have already been called with |session_tag| to
- // ensure we having mapping information for this session.
- void PutTabInWindow(const std::string& session_tag,
- SessionID::id_type window_id,
- SessionID::id_type tab_id);
-
- // Adds |tab_node_id| to the session specified by |session_tag|, creating that
- // session if necessary. This is necessary to ensure that each session has an
- // up to date list of tab nodes linked to it for session deletion purposes.
- // Note that this won't update the local tab pool, even if the local session
- // tag is passed. The tab pool is only updated with new tab nodes when they're
- // associated with a tab id (see ReassociateLocalTabNode or
- // GetTabNodeFromLocalTabId).
- void OnTabNodeSeen(const std::string& session_tag, int tab_node_id);
-
- // Returns a pointer to the SessionTab object associated with
- // |tab_id| for the session specified with |session_tag|.
- // Note: Ownership of the SessionTab remains within the SyncedSessionTracker.
- // TODO(zea): Replace SessionTab with a Sync specific wrapper.
- // crbug.com/662597
- sessions::SessionTab* GetTab(const std::string& session_tag,
- SessionID::id_type tab_id);
-
- // **** Methods specific to foreign sessions. ****
-
// Tracks the deletion of a foreign tab by removing the given |tab_node_id|
// from the parent session. Doesn't actually remove any tab objects because
// the header may have or may not have already been updated to no longer
@@ -141,41 +103,40 @@
// already deleted tab node ids.
void DeleteForeignTab(const std::string& session_tag, int tab_node_id);
- // Deletes the session associated with |session_tag| if it exists.
- // Returns true if the session existed and was deleted, false otherwise.
- bool DeleteForeignSession(const std::string& session_tag);
-
// Deletes those windows and tabs associated with |session_tag| that are no
- // longer owned. See ResetSessionTracking(...)..
- void CleanupForeignSession(const std::string& session_tag);
-
- // **** Methods specific to the local session. ****
-
- // Set the local session tag. Must be called before any other local session
- // methods are invoked.
- void SetLocalSessionTag(const std::string& local_session_tag);
-
- // Similar to CleanupForeignSession, but also marks any unmapped tabs as free
- // in the tab node pool and fills |deleted_node_ids| with the set of locally
- // free tab nodes to be deleted.
- void CleanupLocalTabs(std::set<int>* deleted_node_ids);
-
- // Fills |tab_node_id| with a tab node for |tab_id|. Returns true if an
- // existing tab node was found, false if there was none and one had to be
- // created.
- bool GetTabNodeFromLocalTabId(SessionID::id_type tab_id, int* tab_node_id);
-
- // Returns whether |tab_node_id| refers to a valid tab node that is associated
- // with a tab.
- bool IsLocalTabNodeAssociated(int tab_node_id);
-
- // Reassociates the tab denoted by |tab_node_id| with a new tab id, preserving
- // any previous SessionTab object the node was associated with. This is useful
- // on restart when sync needs to reassociate tabs from a previous session with
- // newly restored tabs (and can be used in conjunction with PutTabInWindow).
- void ReassociateLocalTab(int tab_node_id, SessionID::id_type new_tab_id);
-
- // **** Methods for querying/manipulating overall state ****.
+ // longer owned. See ResetSessionTracking(...).
+ void CleanupSession(const std::string& session_tag);
+
+ // Adds the window with id |window_id| to the session specified by
+ // |session_tag|. If none existed for that session, creates one. Similarly, if
+ // the session did not exist yet, creates it. Ownership of the SessionWindow
+ // remains within the SyncedSessionTracker.
+ void PutWindowInSession(const std::string& session_tag,
+ SessionID::id_type window_id);
+
+ // Adds the tab with id |tab_id| to the window |window_id|. If none existed
+ // for that session, creates one. Ownership of the SessionTab remains within
+ // the SyncedSessionTracker.
+ //
+ // Note: GetSession(..) must have already been called with |session_tag| to
+ // ensure we having mapping information for this session.
+ void PutTabInWindow(const std::string& session_tag,
+ SessionID::id_type window_id,
+ SessionID::id_type tab_id,
+ size_t tab_index);
+
+ // Returns a pointer to the SessionTab object associated with |tab_id| for
+ // the session specified with |session_tag|. If none exists, creates one.
+ // Ownership of the SessionTab remains within the SyncedSessionTracker.
+ // |tab_node_id| must be a valid node id for the node backing this tab.
+ sessions::SessionTab* GetTab(const std::string& session_tag,
+ SessionID::id_type tab_id,
+ int tab_node_id);
+
+ // Fills |tab_node_ids| with the tab node ids (see GetTab) for all the tabs*
+ // associated with the session having tag |session_tag|.
+ void LookupTabNodeIds(const std::string& session_tag,
+ std::set<int>* tab_node_ids);
// Free the memory for all dynamically allocated objects and clear the
// tracking structures.
@@ -198,25 +159,21 @@
}
}
- // Returns whether a tab is unmapped or not.
- bool IsTabUnmappedForTesting(SessionID::id_type tab_id);
-
private:
- friend class SessionsSyncManagerTest;
- friend class SyncedSessionTrackerTest;
-
- // Implementation of CleanupForeignSession/CleanupLocalTabs.
- void CleanupSessionImpl(const std::string& session_tag);
+ // Implementation for GetTab(...) above, permits invalid tab_node_id.
+ sessions::SessionTab* GetTabImpl(const std::string& session_tag,
+ SessionID::id_type tab_id,
+ int tab_node_id);
// The client of the sync sessions datatype.
SyncSessionsClient* const sessions_client_;
- // The mapping of tab/window to their SessionTab/SessionWindow objects.
+ // The mapping of tab/window ids to their SessionTab/SessionWindow objects.
// The SessionTab/SessionWindow objects referred to may be owned either by the
// session in the |synced_session_map_| or be temporarily unmapped and live in
// the |unmapped_tabs_|/|unmapped_windows_| collections.
//
- // Map: session tag -> (tab/window -> SessionTab*/SessionWindow*)
+ // Map: session tag -> (tab/window id -> SessionTab*/SessionWindow*)
std::map<std::string, std::map<SessionID::id_type, sessions::SessionTab*>>
synced_tab_map_;
std::map<std::string, std::map<SessionID::id_type, sessions::SessionWindow*>>
@@ -246,9 +203,6 @@
// sessions.
std::string local_session_tag_;
- // Pool of used/available sync nodes associated with local tabs.
- TabNodePool local_tab_pool_;
-
DISALLOW_COPY_AND_ASSIGN(SyncedSessionTracker);
};
« no previous file with comments | « components/sync_sessions/sessions_sync_manager.cc ('k') | components/sync_sessions/synced_session_tracker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698