| Index: ios/chrome/browser/ui/ntp/recent_tabs/synced_sessions.h
|
| diff --git a/ios/chrome/browser/ui/ntp/recent_tabs/synced_sessions.h b/ios/chrome/browser/ui/ntp/recent_tabs/synced_sessions.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e67586db71ba9b472e1d1fe40aea22f5f76fe588
|
| --- /dev/null
|
| +++ b/ios/chrome/browser/ui/ntp/recent_tabs/synced_sessions.h
|
| @@ -0,0 +1,96 @@
|
| +// Copyright 2014 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 IOS_CHROME_BROWSER_UI_NTP_RECENT_TABS_SYNCED_SESSIONS_H_
|
| +#define IOS_CHROME_BROWSER_UI_NTP_RECENT_TABS_SYNCED_SESSIONS_H_
|
| +
|
| +#include <memory>
|
| +#include <string>
|
| +#include <vector>
|
| +
|
| +#include "base/macros.h"
|
| +#include "base/strings/string16.h"
|
| +#include "base/time/time.h"
|
| +#include "components/sessions/core/session_id.h"
|
| +#include "components/sync_sessions/synced_session.h"
|
| +#include "url/gurl.h"
|
| +
|
| +namespace syncer {
|
| +class SyncService;
|
| +}
|
| +
|
| +namespace sync_sessions {
|
| +class OpenTabsUIDelegate;
|
| +}
|
| +
|
| +namespace synced_sessions {
|
| +
|
| +// Data holder that contains the data of the distant tabs to show in the UI.
|
| +struct DistantTab {
|
| + DistantTab();
|
| + // Uniquely identifies the distant session this DistantTab belongs to.
|
| + std::string session_tag;
|
| + // Uniquely identifies this tab in its distant session.
|
| + SessionID::id_type tab_id;
|
| + // The title of the page shown in this DistantTab.
|
| + base::string16 title;
|
| + // The url shown in this DistantTab.
|
| + GURL virtual_url;
|
| + // Returns a hash the fields |virtual_url| and |title|.
|
| + // By design, two tabs in the same distant session can have the same
|
| + // |hashOfUserVisibleProperties|.
|
| + size_t hashOfUserVisibleProperties();
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(DistantTab);
|
| +};
|
| +
|
| +// Data holder that contains the data of the distant sessions and their tabs to
|
| +// show in the UI.
|
| +
|
| +class DistantSession {
|
| + public:
|
| + DistantSession();
|
| + // Initialize with the session tagged with |tag| and obtained with
|
| + // |sync_service|. |sync_service| must not be null.
|
| + DistantSession(syncer::SyncService* sync_service, const std::string& tag);
|
| + ~DistantSession();
|
| + void InitWithSyncedSession(const sync_sessions::SyncedSession* synced_session,
|
| + sync_sessions::OpenTabsUIDelegate* open_tabs);
|
| + std::string tag;
|
| + std::string name;
|
| + base::Time modified_time;
|
| + sync_sessions::SyncedSession::DeviceType device_type;
|
| + std::vector<std::unique_ptr<DistantTab>> tabs;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(DistantSession);
|
| +};
|
| +
|
| +// Class containing distant sessions.
|
| +class SyncedSessions {
|
| + public:
|
| + // Initialize with no distant sessions.
|
| + SyncedSessions();
|
| + // Initialize with all the distant sessions obtained from |sync_service|.
|
| + // |sync_service| must not be null.
|
| + explicit SyncedSessions(syncer::SyncService* sync_service);
|
| + SyncedSessions(syncer::SyncService* sync_service, const std::string& tag);
|
| + ~SyncedSessions();
|
| + DistantSession const* GetSession(size_t index) const;
|
| + DistantSession const* GetSessionWithTag(const std::string& tag) const;
|
| + size_t GetSessionCount() const;
|
| + void EraseSession(size_t index);
|
| +
|
| + // Used by tests only.
|
| + void AddDistantSessionForTest(
|
| + std::unique_ptr<const DistantSession> distant_session);
|
| +
|
| + private:
|
| + std::vector<std::unique_ptr<const DistantSession>> sessions_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(SyncedSessions);
|
| +};
|
| +
|
| +} // namespace synced_sessions
|
| +
|
| +#endif // IOS_CHROME_BROWSER_UI_NTP_RECENT_TABS_SYNCED_SESSIONS_H_
|
|
|