123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- // Copyright 2012 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef COMPONENTS_SYNC_SESSIONS_SYNCED_SESSION_H_
- #define COMPONENTS_SYNC_SESSIONS_SYNCED_SESSION_H_
- #include <map>
- #include <memory>
- #include <set>
- #include <string>
- #include "base/time/time.h"
- #include "components/sessions/core/serialized_navigation_entry.h"
- #include "components/sessions/core/session_id.h"
- #include "components/sessions/core/session_types.h"
- #include "components/sync/protocol/session_specifics.pb.h"
- #include "components/sync/protocol/sync_enums.pb.h"
- #include "third_party/abseil-cpp/absl/types/optional.h"
- namespace sync_sessions {
- // Construct a SerializedNavigationEntry for a particular index from a sync
- // protocol buffer. Note that the sync protocol buffer doesn't contain all
- // SerializedNavigationEntry fields. Also, the timestamp of the returned
- // SerializedNavigationEntry is nulled out, as we assume that the protocol
- // buffer is from a foreign session.
- sessions::SerializedNavigationEntry SessionNavigationFromSyncData(
- int index,
- const sync_pb::TabNavigation& sync_data);
- // Convert |navigation| into its sync protocol buffer equivalent. Note that the
- // protocol buffer doesn't contain all SerializedNavigationEntry fields.
- sync_pb::TabNavigation SessionNavigationToSyncData(
- const sessions::SerializedNavigationEntry& navigation);
- // Set all the fields of |*tab| object from the given sync data and timestamp.
- // Uses SerializedNavigationEntry::FromSyncData() to fill |navigations|. Note
- // that the sync protocol buffer doesn't contain all SerializedNavigationEntry
- // fields. |tab| must not be null.
- void SetSessionTabFromSyncData(const sync_pb::SessionTab& sync_data,
- base::Time timestamp,
- sessions::SessionTab* tab);
- // Convert |tab| into its sync protocol buffer equivalent. Uses
- // SerializedNavigationEntry::ToSyncData to convert |navigations|. Note that the
- // protocol buffer doesn't contain all SerializedNavigationEntry fields, and
- // that the returned protocol buffer doesn't have any favicon data.
- // |browser_type| needs to be provided separately because its (in local terms) a
- // property of the window.
- sync_pb::SessionTab SessionTabToSyncData(
- const sessions::SessionTab& tab,
- absl::optional<sync_pb::SyncEnums::BrowserType> browser_type);
- // A Sync wrapper for a SessionWindow.
- struct SyncedSessionWindow {
- SyncedSessionWindow();
- SyncedSessionWindow(const SyncedSessionWindow&) = delete;
- SyncedSessionWindow& operator=(const SyncedSessionWindow&) = delete;
- ~SyncedSessionWindow();
- // Convert this object into its sync protocol buffer equivalent.
- sync_pb::SessionWindow ToSessionWindowProto() const;
- // Type of the window. See session_specifics.proto.
- sync_pb::SyncEnums::BrowserType window_type;
- // The SessionWindow this object wraps.
- sessions::SessionWindow wrapped_window;
- };
- // Defines a synced session for use by session sync. A synced session is a
- // list of windows along with a unique session identifer (tag) and meta-data
- // about the device being synced.
- struct SyncedSession {
- SyncedSession();
- SyncedSession(const SyncedSession&) = delete;
- SyncedSession& operator=(const SyncedSession&) = delete;
- ~SyncedSession();
- // Unique tag for each session.
- std::string session_tag;
- // User-visible name
- std::string session_name;
- // Type of device this session is from.
- sync_pb::SyncEnums::DeviceType device_type;
- // Last time this session was modified remotely. This is the max of the header
- // and all children tab mtimes.
- base::Time modified_time;
- // Map of windows that make up this session.
- std::map<SessionID, std::unique_ptr<SyncedSessionWindow>> windows;
- // Convert this object to its protocol buffer equivalent. Shallow conversion,
- // does not create SessionTab protobufs.
- sync_pb::SessionHeader ToSessionHeaderProto() const;
- };
- } // namespace sync_sessions
- #endif // COMPONENTS_SYNC_SESSIONS_SYNCED_SESSION_H_
|