| // Copyright 2023 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_MODEL_DISTANT_SESSION_H_ |
| #define IOS_CHROME_BROWSER_SYNCED_SESSIONS_MODEL_DISTANT_SESSION_H_ |
| |
| #import <string> |
| |
| #import "components/sync_device_info/device_info.h" |
| |
| namespace base { |
| class Time; |
| } // namespace base |
| |
| namespace sync_sessions { |
| class OpenTabsUIDelegate; |
| class SessionSyncService; |
| struct SyncedSession; |
| } // namespace sync_sessions |
| |
| namespace synced_sessions { |
| |
| struct DistantTab; |
| |
| // Data holder that contains the data of the distant sessions and their tabs to |
| // show in the UI. |
| struct DistantSession { |
| DistantSession(); |
| // Initializes with the session tagged with `tag` and obtained with |
| // `sync_service`. `sync_service` must not be null. |
| DistantSession(sync_sessions::SessionSyncService* sync_service, |
| const std::string& tag); |
| |
| DistantSession(const DistantSession&) = delete; |
| DistantSession& operator=(const DistantSession&) = delete; |
| |
| ~DistantSession(); |
| |
| // Loads information from `synced_session` to a distant session using |
| // `open_tabs_delegate`. |
| void InitWithSyncedSession( |
| const sync_sessions::SyncedSession* synced_session, |
| sync_sessions::OpenTabsUIDelegate* open_tabs_delegate); |
| |
| // Unique identifier of a session. |
| std::string tag; |
| // Session name. |
| std::string name; |
| // Time the session is last modified. |
| base::Time modified_time; |
| // A list of tabs opened in this session. |
| std::vector<std::unique_ptr<DistantTab>> tabs; |
| // The form factor of the device in which the session is created. |
| syncer::DeviceInfo::FormFactor form_factor; |
| }; |
| |
| } // namespace synced_sessions |
| |
| #endif // IOS_CHROME_BROWSER_SYNCED_SESSIONS_MODEL_DISTANT_SESSION_H_ |