| // Copyright 2014 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef IOS_CHROME_BROWSER_SYNCED_SESSIONS_SYNCED_SESSIONS_H_ |
| #define IOS_CHROME_BROWSER_SYNCED_SESSIONS_SYNCED_SESSIONS_H_ |
| |
| #import <memory> |
| #import <string> |
| #import <vector> |
| |
| namespace sync_sessions { |
| class SessionSyncService; |
| } |
| |
| namespace synced_sessions { |
| |
| struct DistantSession; |
| |
| // Class containing distant sessions. |
| class SyncedSessions { |
| public: |
| // Initializes with no distant sessions. |
| SyncedSessions(); |
| // Initializes with all the distant sessions obtained from `sync_service`. |
| // `sync_service` must not be null. |
| explicit SyncedSessions(sync_sessions::SessionSyncService* sync_service); |
| |
| SyncedSessions(const SyncedSessions&) = delete; |
| SyncedSessions& operator=(const SyncedSessions&) = delete; |
| |
| ~SyncedSessions(); |
| // Returns the distant session with `index` in the list of sessions. |
| DistantSession const* GetSession(size_t index) const; |
| // Returns the session with the unique identifier `tag`. |
| DistantSession const* GetSessionWithTag(const std::string& tag) const; |
| // Returns the number of distant sessions. |
| size_t GetSessionCount() const; |
| // Removes the session with the unique identifier `tag` from this session. |
| void EraseSessionWithTag(const std::string& tag); |
| |
| private: |
| std::vector<std::unique_ptr<const DistantSession>> sessions_; |
| }; |
| |
| } // namespace synced_sessions |
| |
| #endif // IOS_CHROME_BROWSER_SYNCED_SESSIONS_SYNCED_SESSIONS_H_ |