#ifndef CHROME_BROWSER_UI_BROWSER_H_
#define CHROME_BROWSER_UI_BROWSER_H_
#include <stdint.h>
#include <map>
#include <memory>
#include <string>
#include <vector>
#include "base/functional/callback.h"
#include "base/gtest_prod_util.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/scoped_refptr.h"
#include "base/memory/weak_ptr.h"
#include "base/scoped_observation.h"
#include "base/scoped_observation_traits.h"
#include "base/supports_user_data.h"
#include "base/time/time.h"
#include "base/timer/elapsed_timer.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "chrome/browser/tab_contents/web_contents_collection.h"
#include "chrome/browser/themes/theme_service_observer.h"
#include "chrome/browser/ui/bookmarks/bookmark_bar.h"
#include "chrome/browser/ui/bookmarks/bookmark_tab_helper_observer.h"
#include "chrome/browser/ui/browser_navigator_params.h"
#include "chrome/browser/ui/browser_window/public/browser_window_interface.h"
#include "chrome/browser/ui/chrome_web_modal_dialog_manager_delegate.h"
#include "chrome/browser/ui/signin/signin_view_controller.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/browser/ui/tabs/tab_strip_model_observer.h"
#include "chrome/browser/ui/unload_controller.h"
#include "components/paint_preview/buildflags/buildflags.h"
#include "components/prefs/pref_change_registrar.h"
#include "components/sessions/core/session_id.h"
#include "components/translate/content/browser/content_translate_driver.h"
#include "components/zoom/zoom_observer.h"
#include "content/public/browser/fullscreen_types.h"
#include "content/public/browser/page_navigator.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_delegate.h"
#include "extensions/buildflags/buildflags.h"
#include "printing/buildflags/buildflags.h"
#include "third_party/blink/public/mojom/page/draggable_region.mojom-forward.h"
#include "ui/base/page_transition_types.h"
#include "ui/base/ui_base_types.h"
#include "ui/base/window_open_disposition.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/shell_dialogs/select_file_dialog.h"
#if BUILDFLAG(IS_ANDROID)
#error This file should only be included on desktop.
#endif
class BackgroundContents;
class BreadcrumbManagerBrowserAgent;
class BrowserActions;
class BrowserContentSettingBubbleModelDelegate;
class BrowserInstantController;
class BrowserSyncedWindowDelegate;
class BrowserLocationBarModelDelegate;
class BrowserLiveTabContext;
class BrowserView;
class BrowserWindow;
class BrowserWindowFeatures;
class ExclusiveAccessManager;
class FindBarController;
class LocationBarModel;
class OverscrollPrefManager;
class Profile;
class ScopedKeepAlive;
class ScopedProfileKeepAlive;
class StatusBubble;
class TabStripModelDelegate;
class TabMenuModelDelegate;
namespace tabs {
class TabModel;
}
namespace tab_groups {
class DeletionDialogController;
}
namespace blink {
enum class ProtocolHandlerSecurityLevel;
}
namespace chrome {
class BrowserCommandController;
}
namespace content {
class NavigationHandle;
class SessionStorageNamespace;
}
namespace extensions {
class BrowserExtensionWindowController;
class ExtensionBrowserWindow;
class ExtensionBrowserWindowHelper;
}
namespace gfx {
class Image;
}
namespace ui {
struct SelectedFileInfo;
}
namespace web_app {
class AppBrowserController;
}
namespace web_modal {
class WebContentsModalDialogHost;
}
namespace views {
class View;
}
enum class BrowserClosingStatus { … };
class Browser : public TabStripModelObserver,
public WebContentsCollection::Observer,
public content::WebContentsDelegate,
public ChromeWebModalDialogManagerDelegate,
public base::SupportsUserData,
public BookmarkTabHelperObserver,
public zoom::ZoomObserver,
public ThemeServiceObserver,
public translate::ContentTranslateDriver::TranslationObserver,
public ui::SelectFileDialog::Listener,
public BrowserWindowInterface { … };
#endif