| // Copyright 2012 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef COMPONENTS_SESSIONS_CORE_LIVE_TAB_CONTEXT_H_ |
| #define COMPONENTS_SESSIONS_CORE_LIVE_TAB_CONTEXT_H_ |
| |
| #include <map> |
| #include <optional> |
| #include <string> |
| #include <vector> |
| |
| #include "components/sessions/core/session_id.h" |
| #include "components/sessions/core/session_types.h" |
| #include "components/sessions/core/sessions_export.h" |
| #include "components/tab_groups/tab_group_id.h" |
| #include "components/tab_groups/tab_group_visual_data.h" |
| #include "third_party/skia/include/core/SkColor.h" |
| #include "ui/base/ui_base_types.h" |
| |
| namespace gfx { |
| class Rect; |
| } |
| |
| namespace sessions { |
| |
| class LiveTab; |
| class SerializedNavigationEntry; |
| class PlatformSpecificTabData; |
| |
| // An interface representing the context in which LiveTab instances exist in the |
| // embedder. As a concrete example, desktop Chrome has an implementation that |
| // is backed by an instance of the Browser class. |
| class SESSIONS_EXPORT LiveTabContext { |
| public: |
| // TODO(blundell): Rename. |
| virtual void ShowBrowserWindow() = 0; |
| virtual SessionID GetSessionID() const = 0; |
| virtual SessionWindow::WindowType GetWindowType() const = 0; |
| virtual int GetTabCount() const = 0; |
| virtual int GetSelectedIndex() const = 0; |
| virtual std::string GetAppName() const = 0; |
| virtual std::string GetUserTitle() const = 0; |
| virtual LiveTab* GetLiveTabAt(int index) const = 0; |
| virtual LiveTab* GetActiveLiveTab() const = 0; |
| virtual std::map<std::string, std::string> GetExtraDataForTab( |
| int index) const = 0; |
| virtual std::map<std::string, std::string> GetExtraDataForWindow() const = 0; |
| virtual std::optional<tab_groups::TabGroupId> GetTabGroupForTab( |
| int index) const = 0; |
| // Should not be called for |group| unless GetTabGroupForTab() returned |
| // |group|. |
| virtual const tab_groups::TabGroupVisualData* GetVisualDataForGroup( |
| const tab_groups::TabGroupId& group) const = 0; |
| virtual bool IsTabPinned(int index) const = 0; |
| // Update |group|'s metadata. Should only be called for |group| if a tab has |
| // been restored in |group| via AddRestoredTab() or ReplaceRestoredTab(). |
| virtual void SetVisualDataForGroup( |
| const tab_groups::TabGroupId& group, |
| const tab_groups::TabGroupVisualData& visual_data) = 0; |
| virtual const gfx::Rect GetRestoredBounds() const = 0; |
| virtual ui::WindowShowState GetRestoredState() const = 0; |
| virtual std::string GetWorkspace() const = 0; |
| |
| // Note: |tab_platform_data| may be null (e.g., if restoring from last session |
| // as this data is not persisted, or if the platform does not provide |
| // platform-specific data). |
| // |tab_id| is the tab's unique SessionID. Only present if a historical tab |
| // has been created by TabRestoreService. |
| virtual LiveTab* AddRestoredTab( |
| const std::vector<SerializedNavigationEntry>& navigations, |
| int tab_index, |
| int selected_navigation, |
| const std::string& extension_app_id, |
| std::optional<tab_groups::TabGroupId> group, |
| const tab_groups::TabGroupVisualData& group_visual_data, |
| bool select, |
| bool pin, |
| const PlatformSpecificTabData* tab_platform_data, |
| const sessions::SerializedUserAgentOverride& user_agent_override, |
| const std::map<std::string, std::string>& extra_data, |
| const SessionID* tab_id) = 0; |
| |
| // Note: |tab_platform_data| may be null (e.g., if restoring from last session |
| // as this data is not persisted, or if the platform does not provide |
| // platform-specific data). |
| virtual LiveTab* ReplaceRestoredTab( |
| const std::vector<SerializedNavigationEntry>& navigations, |
| std::optional<tab_groups::TabGroupId> group, |
| int selected_navigation, |
| const std::string& extension_app_id, |
| const PlatformSpecificTabData* tab_platform_data, |
| const sessions::SerializedUserAgentOverride& user_agent_override, |
| const std::map<std::string, std::string>& extra_data) = 0; |
| virtual void CloseTab() = 0; |
| |
| protected: |
| virtual ~LiveTabContext() {} |
| }; |
| |
| } // namespace sessions |
| |
| #endif // COMPONENTS_SESSIONS_CORE_LIVE_TAB_CONTEXT_H_ |