// Copyright 2020 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 WEBLAYER_PUBLIC_BROWSER_H_ #define WEBLAYER_PUBLIC_BROWSER_H_ #include #include #include #include namespace weblayer { class BrowserObserver; class Profile; class Tab; // Represents an ordered list of Tabs, with one active. Browser does not own // the set of Tabs. class Browser { public: struct PersistenceInfo { PersistenceInfo(); PersistenceInfo(const PersistenceInfo& other); ~PersistenceInfo(); // Uniquely identifies this browser for session restore, empty is not a // valid id. std::string id; // Last key used to encrypt incognito profile. std::vector last_crypto_key; // If non-empty used to restore the state of the browser. This is only used // if |id| is empty. std::vector minimal_state; }; // Creates a new Browser. |persistence_info|, if non-null, is used for saving // and restoring the state of the browser. static std::unique_ptr Create( Profile* profile, const PersistenceInfo* persistence_info); virtual ~Browser() {} virtual void AddTab(Tab* tab) = 0; virtual void DestroyTab(Tab* tab) = 0; virtual void SetActiveTab(Tab* tab) = 0; virtual Tab* GetActiveTab() = 0; virtual std::vector GetTabs() = 0; // Creates a tab attached to this browser. The returned tab is owned by the // browser. virtual Tab* CreateTab() = 0; // Called early on in shutdown, before any tabs have been removed. virtual void PrepareForShutdown() = 0; // Returns the id supplied to Create() that is used for persistence. virtual std::string GetPersistenceId() = 0; // Returns the tabs and navigations in a format suitable for serialization. // This state can be later restored via |PersistenceInfo::minimal_state|. // This is not the full state, only a minimal snapshot intended for // lightweight restore when full persistence is not desirable. virtual std::vector GetMinimalPersistenceState() = 0; virtual void AddObserver(BrowserObserver* observer) = 0; virtual void RemoveObserver(BrowserObserver* observer) = 0; virtual void VisibleSecurityStateOfActiveTabChanged() = 0; }; } // namespace weblayer #endif // WEBLAYER_PUBLIC_BROWSER_H_