#include "chrome/browser/ui/browser.h"
#include <stddef.h>
#include <algorithm>
#include <memory>
#include <optional>
#include <string>
#include <utility>
#include "base/base_paths.h"
#include "base/check_deref.h"
#include "base/command_line.h"
#include "base/containers/contains.h"
#include "base/feature_list.h"
#include "base/functional/bind.h"
#include "base/functional/callback_helpers.h"
#include "base/location.h"
#include "base/logging.h"
#include "base/metrics/histogram_macros.h"
#include "base/metrics/user_metrics.h"
#include "base/process/process_info.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task/single_thread_task_runner.h"
#include "base/threading/thread.h"
#include "base/threading/thread_restrictions.h"
#include "base/time/time.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "chrome/app/chrome_command_ids.h"
#include "chrome/browser/app_mode/app_mode_utils.h"
#include "chrome/browser/background/background_contents.h"
#include "chrome/browser/background/background_contents_service.h"
#include "chrome/browser/background/background_contents_service_factory.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/buildflags.h"
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/browser/content_settings/mixed_content_settings_tab_helper.h"
#include "chrome/browser/content_settings/page_specific_content_settings_delegate.h"
#include "chrome/browser/content_settings/sound_content_setting_observer.h"
#include "chrome/browser/custom_handlers/protocol_handler_registry_factory.h"
#include "chrome/browser/defaults.h"
#include "chrome/browser/devtools/devtools_toggle_action.h"
#include "chrome/browser/devtools/devtools_window.h"
#include "chrome/browser/download/bubble/download_bubble_ui_controller.h"
#include "chrome/browser/download/bubble/download_display_controller.h"
#include "chrome/browser/download/download_core_service.h"
#include "chrome/browser/download/download_core_service_factory.h"
#include "chrome/browser/extensions/browser_extension_window_controller.h"
#include "chrome/browser/extensions/extension_browser_window_desktop.h"
#include "chrome/browser/extensions/extension_ui_util.h"
#include "chrome/browser/extensions/extension_util.h"
#include "chrome/browser/extensions/tab_helper.h"
#include "chrome/browser/file_select_helper.h"
#include "chrome/browser/first_run/first_run.h"
#include "chrome/browser/lifetime/application_lifetime.h"
#include "chrome/browser/lifetime/browser_shutdown.h"
#include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h"
#include "chrome/browser/metrics/chrome_metrics_service_accessor.h"
#include "chrome/browser/picture_in_picture/picture_in_picture_window_manager.h"
#include "chrome/browser/policy/developer_tools_policy_handler.h"
#include "chrome/browser/prefs/incognito_mode_prefs.h"
#include "chrome/browser/preloading/preloading_prefs.h"
#include "chrome/browser/printing/background_printing_manager.h"
#include "chrome/browser/profiles/keep_alive/profile_keep_alive_types.h"
#include "chrome/browser/profiles/keep_alive/scoped_profile_keep_alive.h"
#include "chrome/browser/profiles/nuke_profile_directory_utils.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_destroyer.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/profiles/profile_metrics.h"
#include "chrome/browser/profiles/profiles_state.h"
#include "chrome/browser/repost_form_warning_controller.h"
#include "chrome/browser/search/search.h"
#include "chrome/browser/sessions/app_session_service.h"
#include "chrome/browser/sessions/app_session_service_factory.h"
#include "chrome/browser/sessions/session_restore.h"
#include "chrome/browser/sessions/session_service.h"
#include "chrome/browser/sessions/session_service_factory.h"
#include "chrome/browser/sessions/session_service_lookup.h"
#include "chrome/browser/sessions/tab_restore_service_factory.h"
#include "chrome/browser/tab_contents/tab_util.h"
#include "chrome/browser/task_manager/web_contents_tags.h"
#include "chrome/browser/themes/theme_service.h"
#include "chrome/browser/themes/theme_service_factory.h"
#include "chrome/browser/translate/chrome_translate_client.h"
#include "chrome/browser/ui/blocked_content/chrome_popup_navigation_delegate.h"
#include "chrome/browser/ui/blocked_content/framebust_block_tab_helper.h"
#include "chrome/browser/ui/bookmarks/bookmark_tab_helper.h"
#include "chrome/browser/ui/bookmarks/bookmark_utils.h"
#include "chrome/browser/ui/breadcrumb_manager_browser_agent.h"
#include "chrome/browser/ui/browser_actions.h"
#include "chrome/browser/ui/browser_command_controller.h"
#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_content_setting_bubble_model_delegate.h"
#include "chrome/browser/ui/browser_dialogs.h"
#include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/browser_instant_controller.h"
#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/browser_live_tab_context.h"
#include "chrome/browser/ui/browser_location_bar_model_delegate.h"
#include "chrome/browser/ui/browser_navigator.h"
#include "chrome/browser/ui/browser_navigator_params.h"
#include "chrome/browser/ui/browser_tab_menu_model_delegate.h"
#include "chrome/browser/ui/browser_tab_strip_model_delegate.h"
#include "chrome/browser/ui/browser_tabstrip.h"
#include "chrome/browser/ui/browser_ui_prefs.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/browser_window/public/browser_window_features.h"
#include "chrome/browser/ui/chrome_pages.h"
#include "chrome/browser/ui/chrome_select_file_policy.h"
#include "chrome/browser/ui/exclusive_access/exclusive_access_manager.h"
#include "chrome/browser/ui/exclusive_access/fullscreen_controller.h"
#include "chrome/browser/ui/exclusive_access/pointer_lock_controller.h"
#include "chrome/browser/ui/find_bar/find_bar.h"
#include "chrome/browser/ui/find_bar/find_bar_controller.h"
#include "chrome/browser/ui/global_error/global_error.h"
#include "chrome/browser/ui/global_error/global_error_service.h"
#include "chrome/browser/ui/global_error/global_error_service_factory.h"
#include "chrome/browser/ui/location_bar/location_bar.h"
#include "chrome/browser/ui/overscroll_pref_manager.h"
#include "chrome/browser/ui/page_action/page_action_icon_type.h"
#include "chrome/browser/ui/search/search_tab_helper.h"
#include "chrome/browser/ui/signin/cookie_clear_on_exit_migration_notice.h"
#include "chrome/browser/ui/singleton_tabs.h"
#include "chrome/browser/ui/status_bubble.h"
#include "chrome/browser/ui/sync/browser_synced_window_delegate.h"
#include "chrome/browser/ui/tab_contents/core_tab_helper.h"
#include "chrome/browser/ui/tab_dialogs.h"
#include "chrome/browser/ui/tab_helpers.h"
#include "chrome/browser/ui/tab_modal_confirm_dialog.h"
#include "chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_utils.h"
#include "chrome/browser/ui/tabs/tab_enums.h"
#include "chrome/browser/ui/tabs/tab_group.h"
#include "chrome/browser/ui/tabs/tab_group_deletion_dialog_controller.h"
#include "chrome/browser/ui/tabs/tab_group_model.h"
#include "chrome/browser/ui/tabs/tab_menu_model.h"
#include "chrome/browser/ui/tabs/tab_model.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/browser/ui/tabs/tab_utils.h"
#include "chrome/browser/ui/ui_features.h"
#include "chrome/browser/ui/unload_controller.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/browser/ui/views/frame/contents_web_view.h"
#include "chrome/browser/ui/web_applications/app_browser_controller.h"
#include "chrome/browser/ui/web_applications/web_app_launch_utils.h"
#include "chrome/browser/ui/webui/signin/login_ui_service.h"
#include "chrome/browser/ui/webui/signin/login_ui_service_factory.h"
#include "chrome/browser/ui/window_sizer/window_sizer.h"
#include "chrome/common/chrome_constants.h"
#include "chrome/common/chrome_features.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
#include "chrome/common/webui_url_constants.h"
#include "chrome/grit/branded_strings.h"
#include "chrome/grit/generated_resources.h"
#include "components/blocked_content/list_item_position.h"
#include "components/blocked_content/popup_blocker.h"
#include "components/blocked_content/popup_blocker_tab_helper.h"
#include "components/blocked_content/popup_tracker.h"
#include "components/bookmarks/browser/bookmark_model.h"
#include "components/bookmarks/browser/bookmark_utils.h"
#include "components/bookmarks/common/bookmark_pref_names.h"
#include "components/breadcrumbs/core/breadcrumbs_status.h"
#include "components/captive_portal/core/buildflags.h"
#include "components/content_settings/browser/page_specific_content_settings.h"
#include "components/content_settings/core/browser/host_content_settings_map.h"
#include "components/custom_handlers/protocol_handler.h"
#include "components/custom_handlers/protocol_handler_registry.h"
#include "components/custom_handlers/register_protocol_handler_permission_request.h"
#include "components/favicon/content/content_favicon_driver.h"
#include "components/find_in_page/find_tab_helper.h"
#include "components/infobars/content/content_infobar_manager.h"
#include "components/javascript_dialogs/tab_modal_dialog_manager.h"
#include "components/keep_alive_registry/keep_alive_registry.h"
#include "components/keep_alive_registry/keep_alive_types.h"
#include "components/keep_alive_registry/scoped_keep_alive.h"
#include "components/omnibox/browser/location_bar_model.h"
#include "components/omnibox/browser/location_bar_model_impl.h"
#include "components/page_load_metrics/browser/metrics_web_contents_observer.h"
#include "components/page_load_metrics/common/page_load_metrics.mojom.h"
#include "components/paint_preview/buildflags/buildflags.h"
#include "components/permissions/permission_request_manager.h"
#include "components/prefs/pref_service.h"
#include "components/saved_tab_groups/tab_group_sync_service.h"
#include "components/search/search.h"
#include "components/sessions/content/session_tab_helper.h"
#include "components/sessions/core/session_types.h"
#include "components/sessions/core/tab_restore_service.h"
#include "components/startup_metric_utils/browser/startup_metric_utils.h"
#include "components/translate/core/browser/language_state.h"
#include "components/user_manager/user_manager.h"
#include "components/web_modal/web_contents_modal_dialog_manager.h"
#include "components/zoom/zoom_controller.h"
#include "content/public/browser/color_chooser.h"
#include "content/public/browser/devtools_agent_host.h"
#include "content/public/browser/file_select_listener.h"
#include "content/public/browser/invalidate_type.h"
#include "content/public/browser/keyboard_event_processing_result.h"
#include "content/public/browser/navigation_controller.h"
#include "content/public/browser/navigation_entry.h"
#include "content/public/browser/navigation_handle.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/render_widget_host.h"
#include "content/public/browser/render_widget_host_view.h"
#include "content/public/browser/site_instance.h"
#include "content/public/browser/ssl_status.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_exposed_isolation_level.h"
#include "content/public/common/content_constants.h"
#include "content/public/common/content_features.h"
#include "content/public/common/page_zoom.h"
#include "content/public/common/profiling.h"
#include "content/public/common/url_constants.h"
#include "content/public/common/webplugininfo.h"
#include "content/public/common/window_container_type.mojom-shared.h"
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_system.h"
#include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h"
#include "extensions/browser/process_manager.h"
#include "extensions/browser/process_map.h"
#include "extensions/buildflags/buildflags.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/manifest_handlers/background_info.h"
#include "net/base/filename_util.h"
#include "ppapi/buildflags/buildflags.h"
#include "third_party/blink/public/common/security/protocol_handler_security_level.h"
#include "third_party/blink/public/mojom/frame/blocked_navigation_types.mojom.h"
#include "third_party/blink/public/mojom/frame/frame.mojom.h"
#include "third_party/blink/public/mojom/frame/fullscreen.mojom.h"
#include "third_party/blink/public/mojom/page/draggable_region.mojom.h"
#include "third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom.h"
#include "third_party/blink/public/mojom/window_features/window_features.mojom.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/window_open_disposition.h"
#include "ui/gfx/font_list.h"
#include "ui/gfx/geometry/point.h"
#include "ui/gfx/text_elider.h"
#include "ui/gfx/text_utils.h"
#include "ui/shell_dialogs/selected_file_info.h"
#include "url/origin.h"
#include "url/scheme_host_port.h"
#if BUILDFLAG(IS_WIN)
#include <windows.h>
#include <shellapi.h>
#include "chrome/browser/ui/view_ids.h"
#include "ui/base/win/shell.h"
#endif
#if BUILDFLAG(IS_CHROMEOS_ASH)
#include "ash/constants/ash_features.h"
#include "chrome/browser/ash/guest_os/guest_os_terminal.h"
#include "chrome/browser/ash/url_handler/url_handler.h"
#include "chrome/browser/ui/settings_window_manager_chromeos.h"
#include "components/session_manager/core/session_manager.h"
#endif
#if BUILDFLAG(ENABLE_CAPTIVE_PORTAL_DETECTION)
#include "components/captive_portal/content/captive_portal_tab_helper.h"
#endif
#if BUILDFLAG(ENABLE_EXTENSIONS)
#include "chrome/browser/extensions/extension_browser_window_helper.h"
#endif
#if BUILDFLAG(ENABLE_PRINTING)
#include "components/printing/browser/print_composite_client.h"
#endif
#if BUILDFLAG(ENABLE_PAINT_PREVIEW)
#include "components/paint_preview/browser/paint_preview_client.h"
#endif
#if BUILDFLAG(IS_MAC)
#include "ui/display/display.h"
#include "ui/display/screen.h"
#include "ui/display/types/display_constants.h"
#endif
#if !BUILDFLAG(IS_ANDROID)
#include "chrome/browser/preloading/preview/preview_manager.h"
#endif
UserMetricsAction;
NavigationController;
NavigationEntry;
OpenURLParams;
Referrer;
RenderWidgetHostView;
SiteInstance;
WebContents;
ProtocolHandler;
Extension;
NativeWebKeyboardEvent;
WebDialogDelegate;
WebContentsModalDialogManager;
namespace {
constexpr base::TimeDelta kUIUpdateCoalescingTime = …;
BrowserWindow* CreateBrowserWindow(std::unique_ptr<Browser> browser,
bool user_gesture,
bool in_tab_dragging) { … }
const extensions::Extension* GetExtensionForOrigin(
Profile* profile,
const GURL& security_origin) { … }
bool IsOnKioskSplashScreen() { … }
std::pair<bool, bool> IsLastWindow(const Browser& browser) { … }
bool ShouldShowCookieMigrationNoticeForBrowser(const Browser& browser) { … }
void UpdateTabGroupSessionMetadata(
Browser* browser,
const tab_groups::TabGroupId& group_id,
const std::optional<std::string> saved_group_id) { … }
}
Browser::CreateParams::CreateParams(Profile* profile, bool user_gesture)
: … { … }
Browser::CreateParams::CreateParams(Type type,
Profile* profile,
bool user_gesture)
: … { … }
Browser::CreateParams::CreateParams(const CreateParams& other) = default;
Browser::CreateParams& Browser::CreateParams::operator=(
const CreateParams& other) = default;
Browser::CreateParams::~CreateParams() = default;
Browser::CreateParams Browser::CreateParams::CreateForAppBase(
bool is_popup,
const std::string& app_name,
bool trusted_source,
const gfx::Rect& window_bounds,
Profile* profile,
bool user_gesture) { … }
Browser::CreateParams Browser::CreateParams::CreateForApp(
const std::string& app_name,
bool trusted_source,
const gfx::Rect& window_bounds,
Profile* profile,
bool user_gesture) { … }
Browser::CreateParams Browser::CreateParams::CreateForAppPopup(
const std::string& app_name,
bool trusted_source,
const gfx::Rect& window_bounds,
Profile* profile,
bool user_gesture) { … }
Browser::CreateParams Browser::CreateParams::CreateForPictureInPicture(
const std::string& app_name,
bool trusted_source,
Profile* profile,
bool user_gesture) { … }
Browser::CreateParams Browser::CreateParams::CreateForDevTools(
Profile* profile) { … }
Browser::CreationStatus Browser::GetCreationStatusForProfile(Profile* profile) { … }
Browser* Browser::Create(const CreateParams& params) { … }
Browser::Browser(const CreateParams& params)
: … { … }
Browser::~Browser() { … }
BrowserView& Browser::GetBrowserView() { … }
base::WeakPtr<Browser> Browser::AsWeakPtr() { … }
base::WeakPtr<const Browser> Browser::AsWeakPtr() const { … }
FindBarController* Browser::GetFindBarController() { … }
bool Browser::HasFindBarController() const { … }
GURL Browser::GetNewTabURL() const { … }
gfx::Image Browser::GetCurrentPageIcon() const { … }
std::u16string Browser::GetWindowTitleForCurrentTab(
bool include_app_name) const { … }
std::u16string Browser::GetWindowTitleForTab(int index) const { … }
std::u16string Browser::GetWindowTitleForMaxWidth(int max_width) const { … }
std::u16string Browser::GetWindowTitleFromWebContents(
bool include_app_name,
content::WebContents* contents) const { … }
std::u16string Browser::FormatTitleForDisplay(std::u16string title) { … }
Browser::WarnBeforeClosingResult Browser::MaybeWarnBeforeClosing(
Browser::WarnBeforeClosingCallback warn_callback) { … }
BrowserClosingStatus Browser::HandleBeforeClose() { … }
bool Browser::TryToCloseWindow(
bool skip_beforeunload,
const base::RepeatingCallback<void(bool)>& on_close_confirmed) { … }
void Browser::ResetTryToCloseWindow() { … }
bool Browser::IsAttemptingToCloseBrowser() const { … }
bool Browser::ShouldRunUnloadListenerBeforeClosing(
content::WebContents* web_contents) { … }
bool Browser::RunUnloadListenerBeforeClosing(
content::WebContents* web_contents) { … }
void Browser::SetWindowUserTitle(const std::string& user_title) { … }
Browser* Browser::GetBrowserForOpeningWebUi() { … }
StatusBubble* Browser::GetStatusBubbleForTesting() { … }
void Browser::SetForceShowBookmarkBarFlag(ForceShowBookmarkBarFlag flag) { … }
void Browser::ClearForceShowBookmarkBarFlag(ForceShowBookmarkBarFlag flag) { … }
views::WebView* Browser::GetWebView() { … }
Profile* Browser::GetProfile() { … }
void Browser::OpenGURL(const GURL& gurl, WindowOpenDisposition disposition) { … }
const SessionID& Browser::GetSessionID() { … }
bool Browser::IsTabStripVisible() { … }
views::View* Browser::TopContainer() { … }
tabs::TabInterface* Browser::GetActiveTabInterface() { … }
BrowserWindowFeatures& Browser::GetFeatures() { … }
web_modal::WebContentsModalDialogHost*
Browser::GetWebContentsModalDialogHostForWindow() { … }
bool Browser::IsActive() { … }
base::CallbackListSubscription Browser::RegisterDidBecomeActive(
DidBecomeActiveCallback callback) { … }
base::CallbackListSubscription Browser::RegisterDidBecomeInactive(
DidBecomeInactiveCallback callback) { … }
ExclusiveAccessManager* Browser::GetExclusiveAccessManager() { … }
BrowserActions* Browser::GetActions() { … }
BrowserWindowInterface::Type Browser::GetType() const { … }
user_education::FeaturePromoController* Browser::GetFeaturePromoController() { … }
void Browser::DidBecomeActive() { … }
void Browser::DidBecomeInactive() { … }
#if BUILDFLAG(IS_CHROMEOS_ASH)
bool Browser::IsLockedForOnTask() {
return on_task_locked_;
}
void Browser::SetLockedForOnTask(bool locked) {
on_task_locked_ = locked;
OnLockedForOnTaskUpdated();
}
#endif
void Browser::OnWindowClosing() { … }
Browser::DownloadCloseType Browser::OkToCloseWithInProgressDownloads(
int* num_downloads_blocking) const { … }
void Browser::WindowFullscreenStateChanged() { … }
void Browser::FullscreenTopUIStateChanged() { … }
void Browser::OnFindBarVisibilityChanged() { … }
void Browser::ToggleFullscreenModeWithExtension(const GURL& extension_url) { … }
bool Browser::SupportsWindowFeature(WindowFeature feature) const { … }
bool Browser::CanSupportWindowFeature(WindowFeature feature) const { … }
void Browser::OpenFile() { … }
void Browser::UpdateDownloadShelfVisibility(bool visible) { … }
bool Browser::CanSaveContents(content::WebContents* web_contents) const { … }
bool Browser::ShouldDisplayFavicon(content::WebContents* web_contents) const { … }
void Browser::UpdateUIForNavigationInTab(WebContents* contents,
ui::PageTransition transition,
NavigateParams::WindowAction action,
bool user_initiated) { … }
void Browser::RegisterKeepAlive() { … }
void Browser::UnregisterKeepAlive() { … }
WebContents* Browser::OpenURL(
const OpenURLParams& params,
base::OnceCallback<void(content::NavigationHandle&)>
navigation_handle_callback) { … }
void Browser::OnTabStripModelChanged(TabStripModel* tab_strip_model,
const TabStripModelChange& change,
const TabStripSelectionChange& selection) { … }
void Browser::OnTabGroupChanged(const TabGroupChange& change) { … }
void Browser::TabPinnedStateChanged(TabStripModel* tab_strip_model,
WebContents* contents,
int index) { … }
void Browser::TabGroupedStateChanged(
std::optional<tab_groups::TabGroupId> group,
tabs::TabModel* tab,
int index) { … }
void Browser::TabStripEmpty() { … }
void Browser::SetTopControlsShownRatio(content::WebContents* web_contents,
float ratio) { … }
int Browser::GetTopControlsHeight() { … }
bool Browser::DoBrowserControlsShrinkRendererSize(
content::WebContents* contents) { … }
int Browser::GetVirtualKeyboardHeight(content::WebContents* contents) { … }
void Browser::SetTopControlsGestureScrollInProgress(bool in_progress) { … }
bool Browser::CanOverscrollContent() { … }
bool Browser::ShouldPreserveAbortedURLs(WebContents* source) { … }
void Browser::SetFocusToLocationBar() { … }
content::KeyboardEventProcessingResult Browser::PreHandleKeyboardEvent(
content::WebContents* source,
const NativeWebKeyboardEvent& event) { … }
bool Browser::HandleKeyboardEvent(content::WebContents* source,
const NativeWebKeyboardEvent& event) { … }
bool Browser::TabsNeedBeforeUnloadFired() const { … }
bool Browser::PreHandleGestureEvent(content::WebContents* source,
const blink::WebGestureEvent& event) { … }
bool Browser::CanDragEnter(content::WebContents* source,
const content::DropData& data,
blink::DragOperationsMask operations_allowed) { … }
void Browser::CreateSmsPrompt(content::RenderFrameHost*,
const std::vector<url::Origin>&,
const std::string& one_time_code,
base::OnceClosure on_confirm,
base::OnceClosure on_cancel) { … }
bool Browser::ShouldAllowRunningInsecureContent(
content::WebContents* web_contents,
bool allowed_per_prefs,
const url::Origin& origin,
const GURL& resource_url) { … }
void Browser::OnDidBlockNavigation(
content::WebContents* web_contents,
const GURL& blocked_url,
const GURL& initiator_url,
blink::mojom::NavigationBlockedReason reason) { … }
content::PictureInPictureResult Browser::EnterPictureInPicture(
content::WebContents* web_contents) { … }
void Browser::ExitPictureInPicture() { … }
bool Browser::IsBackForwardCacheSupported(content::WebContents& web_contents) { … }
content::PreloadingEligibility Browser::IsPrerender2Supported(
content::WebContents& web_contents) { … }
bool Browser::ShouldShowStaleContentOnEviction(content::WebContents* source) { … }
void Browser::MediaWatchTimeChanged(
const content::MediaPlayerWatchTime& watch_time) { … }
bool Browser::IsPointerLocked() const { … }
void Browser::OnWindowDidShow() { … }
WebContents* Browser::OpenURLFromTab(
WebContents* source,
const OpenURLParams& params,
base::OnceCallback<void(content::NavigationHandle&)>
navigation_handle_callback) { … }
void Browser::NavigationStateChanged(WebContents* source,
content::InvalidateTypes changed_flags) { … }
void Browser::VisibleSecurityStateChanged(WebContents* source) { … }
content::WebContents* Browser::AddNewContents(
WebContents* source,
std::unique_ptr<WebContents> new_contents,
const GURL& target_url,
WindowOpenDisposition disposition,
const blink::mojom::WindowFeatures& window_features,
bool user_gesture,
bool* was_blocked) { … }
void Browser::ActivateContents(WebContents* contents) { … }
void Browser::LoadingStateChanged(WebContents* source,
bool should_show_loading_ui) { … }
void Browser::CloseContents(WebContents* source) { … }
void Browser::SetContentsBounds(WebContents* source, const gfx::Rect& bounds) { … }
void Browser::UpdateTargetURL(WebContents* source, const GURL& url) { … }
void Browser::ContentsMouseEvent(WebContents* source, const ui::Event& event) { … }
void Browser::ContentsZoomChange(bool zoom_in) { … }
bool Browser::TakeFocus(content::WebContents* source, bool reverse) { … }
void Browser::BeforeUnloadFired(WebContents* web_contents,
bool proceed,
bool* proceed_to_fire_unload) { … }
bool Browser::ShouldFocusLocationBarByDefault(WebContents* source) { … }
bool Browser::ShouldFocusPageAfterCrash(WebContents* source) { … }
void Browser::ShowRepostFormWarningDialog(WebContents* source) { … }
bool Browser::IsWebContentsCreationOverridden(
content::SiteInstance* source_site_instance,
content::mojom::WindowContainerType window_container_type,
const GURL& opener_url,
const std::string& frame_name,
const GURL& target_url) { … }
WebContents* Browser::CreateCustomWebContents(
content::RenderFrameHost* opener,
content::SiteInstance* source_site_instance,
bool is_new_browsing_instance,
const GURL& opener_url,
const std::string& frame_name,
const GURL& target_url,
const content::StoragePartitionConfig& partition_config,
content::SessionStorageNamespace* session_storage_namespace) { … }
void Browser::WebContentsCreated(WebContents* source_contents,
int opener_render_process_id,
int opener_render_frame_id,
const std::string& frame_name,
const GURL& target_url,
WebContents* new_contents) { … }
void Browser::RendererUnresponsive(
WebContents* source,
content::RenderWidgetHost* render_widget_host,
base::RepeatingClosure hang_monitor_restarter) { … }
void Browser::RendererResponsive(
WebContents* source,
content::RenderWidgetHost* render_widget_host) { … }
content::JavaScriptDialogManager* Browser::GetJavaScriptDialogManager(
WebContents* source) { … }
bool Browser::GuestSaveFrame(content::WebContents* guest_web_contents) { … }
std::unique_ptr<content::EyeDropper> Browser::OpenEyeDropper(
content::RenderFrameHost* frame,
content::EyeDropperListener* listener) { … }
void Browser::InitiatePreview(content::WebContents& web_contents,
const GURL& url) { … }
bool Browser::ShouldUseInstancedSystemMediaControls() const { … }
void Browser::DraggableRegionsChanged(
const std::vector<blink::mojom::DraggableRegionPtr>& regions,
content::WebContents* contents) { … }
void Browser::DidFinishNavigation(
content::WebContents* web_contents,
content::NavigationHandle* navigation_handle) { … }
void Browser::RunFileChooser(
content::RenderFrameHost* render_frame_host,
scoped_refptr<content::FileSelectListener> listener,
const blink::mojom::FileChooserParams& params) { … }
void Browser::EnumerateDirectory(
WebContents* web_contents,
scoped_refptr<content::FileSelectListener> listener,
const base::FilePath& path) { … }
bool Browser::CanUseWindowingControls(
content::RenderFrameHost* requesting_frame) { … }
void Browser::OnCanResizeFromWebAPIChanged() { … }
bool Browser::GetCanResize() { … }
void Browser::MinimizeFromWebAPI() { … }
void Browser::MaximizeFromWebAPI() { … }
void Browser::RestoreFromWebAPI() { … }
ui::WindowShowState Browser::GetWindowShowState() const { … }
bool Browser::CanEnterFullscreenModeForTab(
content::RenderFrameHost* requesting_frame) { … }
void Browser::EnterFullscreenModeForTab(
content::RenderFrameHost* requesting_frame,
const blink::mojom::FullscreenOptions& options) { … }
void Browser::ExitFullscreenModeForTab(WebContents* web_contents) { … }
bool Browser::IsFullscreenForTabOrPending(const WebContents* web_contents) { … }
content::FullscreenState Browser::GetFullscreenState(
const WebContents* web_contents) const { … }
blink::mojom::DisplayMode Browser::GetDisplayMode(
const WebContents* web_contents) { … }
blink::ProtocolHandlerSecurityLevel Browser::GetProtocolHandlerSecurityLevel(
content::RenderFrameHost* requesting_frame) { … }
void Browser::RegisterProtocolHandler(
content::RenderFrameHost* requesting_frame,
const std::string& protocol,
const GURL& url,
bool user_gesture) { … }
void Browser::UnregisterProtocolHandler(
content::RenderFrameHost* requesting_frame,
const std::string& protocol,
const GURL& url,
bool user_gesture) { … }
void Browser::FindReply(WebContents* web_contents,
int request_id,
int number_of_matches,
const gfx::Rect& selection_rect,
int active_match_ordinal,
bool final_update) { … }
void Browser::RequestPointerLock(WebContents* web_contents,
bool user_gesture,
bool last_unlocked_by_target) { … }
void Browser::LostPointerLock() { … }
void Browser::RequestKeyboardLock(WebContents* web_contents,
bool esc_key_locked) { … }
void Browser::CancelKeyboardLockRequest(WebContents* web_contents) { … }
void Browser::RequestMediaAccessPermission(
content::WebContents* web_contents,
const content::MediaStreamRequest& request,
content::MediaResponseCallback callback) { … }
bool Browser::CheckMediaAccessPermission(
content::RenderFrameHost* render_frame_host,
const url::Origin& security_origin,
blink::mojom::MediaStreamType type) { … }
std::string Browser::GetTitleForMediaControls(WebContents* web_contents) { … }
#if BUILDFLAG(ENABLE_PRINTING)
void Browser::PrintCrossProcessSubframe(
content::WebContents* web_contents,
const gfx::Rect& rect,
int document_cookie,
content::RenderFrameHost* subframe_host) const { … }
#endif
#if BUILDFLAG(ENABLE_PAINT_PREVIEW)
void Browser::CapturePaintPreviewOfSubframe(
content::WebContents* web_contents,
const gfx::Rect& rect,
const base::UnguessableToken& guid,
content::RenderFrameHost* render_frame_host) { … }
#endif
void Browser::SetWebContentsBlocked(content::WebContents* web_contents,
bool blocked) { … }
web_modal::WebContentsModalDialogHost*
Browser::GetWebContentsModalDialogHost() { … }
void Browser::URLStarredChanged(content::WebContents* web_contents,
bool starred) { … }
void Browser::OnZoomControllerDestroyed(zoom::ZoomController* zoom_controller) { … }
void Browser::OnZoomChanged(
const zoom::ZoomController::ZoomChangedEventData& data) { … }
void Browser::FileSelected(const ui::SelectedFileInfo& file_info, int index) { … }
void Browser::FileSelectionCanceled() { … }
void Browser::OnThemeChanged() { … }
void Browser::OnIsPageTranslatedChanged(content::WebContents* source) { … }
void Browser::OnTranslateEnabledChanged(content::WebContents* source) { … }
void Browser::OnTabInsertedAt(WebContents* contents, int index) { … }
void Browser::OnTabClosing(WebContents* contents) { … }
void Browser::OnTabDetached(WebContents* contents, bool was_active) { … }
void Browser::OnTabDeactivated(WebContents* contents) { … }
void Browser::OnActiveTabChanged(WebContents* old_contents,
WebContents* new_contents,
int index,
int reason) { … }
void Browser::OnTabMoved(int from_index, int to_index) { … }
void Browser::OnTabReplacedAt(WebContents* old_contents,
WebContents* new_contents,
int index) { … }
void Browser::OnDevToolsAvailabilityChanged() { … }
#if BUILDFLAG(IS_CHROMEOS_ASH)
void Browser::OnLockedForOnTaskUpdated() {
bool is_locked = IsLockedForOnTask();
BrowserView* const browser_view = static_cast<BrowserView*>(window());
browser_view->SetCanMinimize(!is_locked);
browser_view->SetShowCloseButton(!is_locked);
}
#endif
void Browser::UpdateToolbar(bool should_restore_state) { … }
void Browser::UpdateToolbarSecurityState() { … }
void Browser::ScheduleUIUpdate(WebContents* source, unsigned changed_flags) { … }
void Browser::ProcessPendingUIUpdates() { … }
void Browser::RemoveScheduledUpdatesFor(WebContents* contents) { … }
StatusBubble* Browser::GetStatusBubble() { … }
void Browser::SyncHistoryWithTabs(int index) { … }
bool Browser::CanCloseWithInProgressDownloads() { … }
void Browser::InProgressDownloadResponse(bool cancel_downloads) { … }
void Browser::CookieMigrationNoticeResponse(bool proceed_closing) { … }
void Browser::FinishWarnBeforeClosing(WarnBeforeClosingResult result) { … }
void Browser::SetAsDelegate(WebContents* web_contents, bool set_delegate) { … }
void Browser::TabDetachedAtImpl(content::WebContents* contents,
bool was_active,
DetachType type) { … }
void Browser::UpdateWindowForLoadingStateChanged(content::WebContents* source,
bool should_show_loading_ui) { … }
bool Browser::NormalBrowserSupportsWindowFeature(WindowFeature feature,
bool check_can_support) const { … }
bool Browser::PopupBrowserSupportsWindowFeature(WindowFeature feature,
bool check_can_support) const { … }
bool Browser::AppPopupBrowserSupportsWindowFeature(
WindowFeature feature,
bool check_can_support) const { … }
bool Browser::AppBrowserSupportsWindowFeature(WindowFeature feature,
bool check_can_support) const { … }
#if BUILDFLAG(IS_CHROMEOS_ASH)
bool Browser::CustomTabBrowserSupportsWindowFeature(
WindowFeature feature) const {
switch (feature) {
case FEATURE_TOOLBAR:
return true;
case FEATURE_TITLEBAR:
case FEATURE_LOCATIONBAR:
case FEATURE_TABSTRIP:
case FEATURE_BOOKMARKBAR:
case FEATURE_NONE:
return false;
}
}
#endif
bool Browser::PictureInPictureBrowserSupportsWindowFeature(
WindowFeature feature,
bool check_can_support) const { … }
bool Browser::SupportsWindowFeatureImpl(WindowFeature feature,
bool check_can_support) const { … }
void Browser::UpdateBookmarkBarState(BookmarkBarStateChangeReason reason) { … }
bool Browser::ShouldShowBookmarkBar() const { … }
bool Browser::ShouldHideUIForFullscreen() const { … }
bool Browser::IsBrowserClosing() const { … }
bool Browser::ShouldStartShutdown() const { … }
bool Browser::ShouldCreateBackgroundContents(
content::SiteInstance* source_site_instance,
const GURL& opener_url,
const std::string& frame_name) { … }
BackgroundContents* Browser::CreateBackgroundContents(
content::SiteInstance* source_site_instance,
content::RenderFrameHost* opener,
const GURL& opener_url,
bool is_new_browsing_instance,
const std::string& frame_name,
const GURL& target_url,
const content::StoragePartitionConfig& partition_config,
content::SessionStorageNamespace* session_storage_namespace) { … }