| // Copyright 2018 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_OPEN_TABS_UI_DELEGATE_IMPL_H_ |
| #define COMPONENTS_SYNC_SESSIONS_OPEN_TABS_UI_DELEGATE_IMPL_H_ |
| |
| #include <string> |
| #include <vector> |
| |
| #include "components/sync_sessions/open_tabs_ui_delegate.h" |
| |
| namespace sync_sessions { |
| |
| class FaviconCache; |
| class SyncSessionsClient; |
| class SyncedSessionTracker; |
| |
| class OpenTabsUIDelegateImpl : public OpenTabsUIDelegate { |
| public: |
| using DeleteForeignSessionCallback = |
| base::RepeatingCallback<void(const std::string&)>; |
| |
| // |sessions_client|, |session_tracker| and |favicon_cache| must not be null |
| // and must outlive this object. |delete_foreign_session_cb| allows to |
| // forward calls to DeleteForeignSession() which this class doesn't implement. |
| OpenTabsUIDelegateImpl( |
| const SyncSessionsClient* sessions_client, |
| const SyncedSessionTracker* session_tracker, |
| const FaviconCache* favicon_cache, |
| const DeleteForeignSessionCallback& delete_foreign_session_cb); |
| ~OpenTabsUIDelegateImpl() override; |
| |
| // OpenTabsUIDelegate implementation. |
| bool GetSyncedFaviconForPageURL( |
| const std::string& pageurl, |
| scoped_refptr<base::RefCountedMemory>* favicon_png) const override; |
| bool GetAllForeignSessions( |
| std::vector<const SyncedSession*>* sessions) override; |
| bool GetForeignSession( |
| const std::string& tag, |
| std::vector<const sessions::SessionWindow*>* windows) override; |
| bool GetForeignTab(const std::string& tag, |
| SessionID tab_id, |
| const sessions::SessionTab** tab) override; |
| bool GetForeignSessionTabs( |
| const std::string& tag, |
| std::vector<const sessions::SessionTab*>* tabs) override; |
| void DeleteForeignSession(const std::string& tag) override; |
| bool GetLocalSession(const SyncedSession** local_session) override; |
| |
| private: |
| const SyncSessionsClient* const sessions_client_; |
| const SyncedSessionTracker* session_tracker_; |
| const FaviconCache* favicon_cache_; |
| DeleteForeignSessionCallback delete_foreign_session_cb_; |
| |
| DISALLOW_COPY_AND_ASSIGN(OpenTabsUIDelegateImpl); |
| }; |
| |
| } // namespace sync_sessions |
| |
| #endif // COMPONENTS_SYNC_SESSIONS_OPEN_TABS_UI_DELEGATE_IMPL_H_ |