1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
// 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 CHROME_BROWSER_UI_BROWSER_LIVE_TAB_CONTEXT_H_
#define CHROME_BROWSER_UI_BROWSER_LIVE_TAB_CONTEXT_H_
#include <map>
#include <string>
#include <vector>
#include "base/memory/raw_ref.h"
#include "chrome/browser/ui/browser_window/public/browser_window_interface.h"
#include "components/sessions/core/live_tab_context.h"
#include "components/sessions/core/session_id.h"
#include "components/sessions/core/session_types.h"
#include "components/sessions/core/tab_restore_types.h"
#include "components/tab_groups/tab_group_id.h"
#include "components/tab_groups/tab_group_visual_data.h"
#include "ui/base/mojom/window_show_state.mojom-forward.h"
#include "ui/base/ui_base_types.h"
class Profile;
class TabStripModel;
namespace base {
class Uuid;
} // namespace base
namespace content {
class WebContents;
} // namespace content
namespace gfx {
class Rect;
} // namespace gfx
namespace ui {
class BaseWindow;
} // namespace ui
// Implementation of LiveTabContext which uses an instance of
// Browser in order to fulfil its duties.
class BrowserLiveTabContext : public sessions::LiveTabContext {
public:
BrowserLiveTabContext(BrowserWindowInterface* browser,
TabStripModel* tab_strip_model,
Profile* profile,
ui::BaseWindow* base_window,
BrowserWindowInterface::Type type,
const std::string& app_name,
SessionID session_id);
BrowserLiveTabContext(const BrowserLiveTabContext&) = delete;
BrowserLiveTabContext& operator=(const BrowserLiveTabContext&) = delete;
~BrowserLiveTabContext() override;
// Overridden from LiveTabContext:
void ShowBrowserWindow() override;
SessionID GetSessionID() const override;
sessions::SessionWindow::WindowType GetWindowType() const override;
int GetTabCount() const override;
int GetSelectedIndex() const override;
std::string GetAppName() const override;
std::string GetUserTitle() const override;
sessions::LiveTab* GetLiveTabAt(int index) const override;
sessions::LiveTab* GetActiveLiveTab() const override;
std::map<std::string, std::string> GetExtraDataForTab(
int index) const override;
std::map<std::string, std::string> GetExtraDataForWindow() const override;
std::optional<tab_groups::TabGroupId> GetTabGroupForTab(
int index) const override;
const tab_groups::TabGroupVisualData* GetVisualDataForGroup(
const tab_groups::TabGroupId& group) const override;
const std::optional<base::Uuid> GetSavedTabGroupIdForGroup(
const tab_groups::TabGroupId& group) const override;
bool IsTabPinned(int index) const override;
void SetVisualDataForGroup(
const tab_groups::TabGroupId& group,
const tab_groups::TabGroupVisualData& visual_data) override;
const gfx::Rect GetRestoredBounds() const override;
ui::mojom::WindowShowState GetRestoredState() const override;
std::string GetWorkspace() const override;
sessions::LiveTab* AddRestoredTab(
const sessions::tab_restore::Tab& tab,
int tab_index,
bool select,
bool is_restoring_group_or_window,
sessions::tab_restore::Type original_session_type) override;
sessions::LiveTab* ReplaceRestoredTab(
const sessions::tab_restore::Tab& tab) override;
void CloseTab() override;
// see Browser::Create
static sessions::LiveTabContext* Create(
Profile* profile,
sessions::SessionWindow::WindowType type,
const std::string& app_name,
const gfx::Rect& bounds,
ui::mojom::WindowShowState show_state,
const std::string& workspace,
const std::string& user_title,
const std::map<std::string, std::string>& extra_data);
// see browser::FindBrowserForWebContents
static sessions::LiveTabContext* FindContextForWebContents(
const content::WebContents* contents);
// see chrome::FindBrowserWithID
// Returns the LiveTabContext of the Browser with |desired_id| if
// such a Browser exists.
static sessions::LiveTabContext* FindContextWithID(SessionID desired_id);
// see chrome::FindBrowserWithGroup
// Returns the LiveTabContext of the Browser containing the group with ID
// |group| if such a Browser exists within the given |profile|.
static sessions::LiveTabContext* FindContextWithGroup(
tab_groups::TabGroupId group,
Profile* profile);
private:
const raw_ref<BrowserWindowInterface> browser_;
const raw_ref<TabStripModel> tab_strip_model_;
const raw_ref<Profile> profile_;
const raw_ref<ui::BaseWindow> base_window_;
const sessions::SessionWindow::WindowType window_type_;
const std::string app_name_;
const SessionID session_id_;
};
#endif // CHROME_BROWSER_UI_BROWSER_LIVE_TAB_CONTEXT_H_
|