--- chrome/browser/chrome_content_browser_client.cc.orig 2026-08-31 10:59:09 UTC +++ chrome/browser/chrome_content_browser_client.cc @@ -620,7 +620,7 @@ #include "third_party/cros_system_api/switches/chrome_switches.h" #endif // BUILDFLAG(IS_CHROMEOS) -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) #include "components/crash/core/app/crash_switches.h" #include "components/crash/core/app/crashpad.h" #endif @@ -633,7 +633,7 @@ #endif #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ - BUILDFLAG(IS_CHROMEOS) + BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) #include "chrome/browser/enterprise/network_header_injection/http_header_injection_proxying_url_loader_factory.h" #include "chrome/browser/enterprise/network_header_injection/http_header_injection_utils.h" #include "components/webapps/isolated_web_apps/scheme.h" @@ -954,7 +954,7 @@ blink::mojom::AutoplayPolicy DetermineWebContentsAutop } #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ - BUILDFLAG(IS_CHROMEOS) + BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) // If a user requests Read Aloud audio playbaback through the "Listen to this // page" entry point in the context menu, page distillation and TTS engine // readiness may take longer than the user gesture timeout. Thus, we allow @@ -1573,7 +1573,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePre registry->RegisterBooleanPref(prefs::kDataURLWhitespacePreservationEnabled, true); registry->RegisterBooleanPref(prefs::kEnableUnsafeSwiftShader, false); -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) registry->RegisterBooleanPref(prefs::kOutOfProcessSystemDnsResolutionEnabled, true); #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID) @@ -1851,7 +1851,7 @@ ChromeContentBrowserClient::GetStoragePartitionConfigF #if BUILDFLAG(ENABLE_EXTENSIONS) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ - BUILDFLAG(IS_CHROMEOS) + BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) if (content::SiteIsolationPolicy::ShouldUrlUseApplicationIsolationLevel( browser_context, site)) { CHECK(url::Origin::Create(site).scheme() == webapps::kIsolatedAppScheme); @@ -2788,7 +2788,7 @@ bool ChromeContentBrowserClient::ShouldUrlUseApplicati const GURL& url) { #if BUILDFLAG(ENABLE_EXTENSIONS) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ - BUILDFLAG(IS_CHROMEOS) + BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) if (!content::AreIsolatedWebAppsEnabled(browser_context)) { return false; @@ -2911,7 +2911,9 @@ void MaybeAppendBlinkSettingsSwitchForFieldTrial( void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( base::CommandLine* command_line, int child_process_id) { +#if !BUILDFLAG(IS_BSD) crash_keys::AppendStringAnnotationsCommandLineSwitch(command_line); +#endif #if BUILDFLAG(IS_MAC) std::unique_ptr client_info = GoogleUpdateSettings::LoadMetricsClientInfo(); @@ -2920,7 +2922,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLin client_info->client_id); } #elif BUILDFLAG(IS_POSIX) -#if !BUILDFLAG(IS_ANDROID) +#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_BSD) pid_t pid; if (crash_reporter::GetHandlerSocket(nullptr, &pid)) { command_line->AppendSwitchASCII( @@ -3280,7 +3282,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLin } } -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) // Opt into a hardened stack canary mitigation if it hasn't already been // force-disabled. if (!browser_command_line.HasSwitch(switches::kChangeStackGuardOnFork)) { @@ -4169,7 +4171,7 @@ GetPreferredColorScheme(const WebPreferences& web_pref std::optional GetRootScrollbarThemeColor(WebContents* web_contents) { bool root_scrollbar_follows_browser_theme = false; -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) root_scrollbar_follows_browser_theme = base::FeatureList::IsEnabled( blink::features::kRootScrollbarFollowsBrowserTheme); #endif @@ -4961,7 +4963,7 @@ void ChromeContentBrowserClient::OverrideWebPreference web_prefs->touch_drag_drop_enabled = base::FeatureList::IsEnabled(features::kTouchDragAndDrop); -#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) web_prefs->touch_dragend_context_menu = base::FeatureList::IsEnabled(features::kTouchDragAndDrop); #endif @@ -5201,7 +5203,7 @@ void ChromeContentBrowserClient::GetAdditionalAllowedS additional_allowed_schemes->push_back(content::kChromeUIScheme); additional_allowed_schemes->push_back(content::kChromeUIUntrustedScheme); #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ - BUILDFLAG(IS_CHROMEOS) + BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) additional_allowed_schemes->push_back(webapps::kIsolatedAppScheme); #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || // BUILDFLAG(IS_CHROMEOS) @@ -5255,7 +5257,7 @@ void ChromeContentBrowserClient::GetAdditionalFileSyst } } -#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) +#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD) void ChromeContentBrowserClient::GetAdditionalMappedFilesForChildProcess( const base::CommandLine& command_line, int child_process_id, @@ -6173,7 +6175,7 @@ ChromeContentBrowserClient::CreateNonNetworkNavigation } #endif // BUILDFLAG(IS_CHROMEOS) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ - BUILDFLAG(IS_CHROMEOS) + BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) if (scheme == webapps::kIsolatedAppScheme) { if (content::AreIsolatedWebAppsEnabled(browser_context) && !browser_context->ShutdownStarted()) { @@ -6245,7 +6247,7 @@ void ChromeContentBrowserClient:: DCHECK(factories); #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ - BUILDFLAG(IS_CHROMEOS) + BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) if (content::AreIsolatedWebAppsEnabled(browser_context) && !browser_context->ShutdownStarted()) { std::optional app_origin; @@ -6292,7 +6294,7 @@ void ChromeContentBrowserClient:: DCHECK(factories); #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ - BUILDFLAG(IS_CHROMEOS) + BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) if (content::AreIsolatedWebAppsEnabled(browser_context) && !browser_context->ShutdownStarted()) { factories->emplace(webapps::kIsolatedAppScheme, @@ -6565,7 +6567,7 @@ void ChromeContentBrowserClient:: #endif // BUILDFLAG(IS_CHROMEOS) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ - BUILDFLAG(IS_CHROMEOS) + BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) { auto* rph = content::RenderProcessHost::FromID(render_process_id); content::BrowserContext* browser_context = rph->GetBrowserContext(); @@ -6677,7 +6679,7 @@ void ChromeContentBrowserClient::WillCreateURLLoaderFa #endif #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ - BUILDFLAG(IS_CHROMEOS) + BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) // Install the HTTP Header Injection proxying factory. enterprise_custom_headers::HttpHeaderInjectionProxyingURLLoaderFactory:: MaybeProxyRequest(browser_context, factory_builder); @@ -6727,7 +6729,7 @@ void ChromeContentBrowserClient::WillCreateURLLoaderFa factory_builder, factory_override, isolation_info); #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ - BUILDFLAG(IS_CHROMEOS) + BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) // WARNING: This must be the last wrapper in the chain for // TrustedURLLoaderHeaderClient. This ensures that our client is the outermost // wrapper of `header_client`, allowing us to apply enterprise headers AFTER @@ -6824,7 +6826,7 @@ ChromeContentBrowserClient::GetWebSocketOptions( options.options = network::mojom::kWebSocketOptionNone; #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ - BUILDFLAG(IS_CHROMEOS) + BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) if (frame) { enterprise_custom_headers::MaybeCreateWebSocketHeaderClient( frame->GetBrowserContext(), &options.header_client); @@ -7246,7 +7248,7 @@ bool ChromeContentBrowserClient::HandleExternalProtoco CHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); #if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || \ - BUILDFLAG(IS_WIN) + BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) // Handle the google-chrome:// scheme (and chromium://). // If the scheme is present, we strip it and navigate to the inner URL. // This avoids launching a new browser instance via the OS handler. @@ -7398,7 +7400,7 @@ bool ChromeContentBrowserClient::HandleWebUI( } #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ - BUILDFLAG(IS_CHROMEOS) + BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) // Rewrite chrome://settings/addresses to chrome://settings/contactInfo. if (url->SchemeIs(content::kChromeUIScheme) && @@ -7676,7 +7678,7 @@ bool ChromeContentBrowserClient::ShouldSandboxNetworkS bool ChromeContentBrowserClient::ShouldRunOutOfProcessSystemDnsResolution() { // This enterprise policy is supported on Android, but the feature will not be // launched there. -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) // This is possibly called before `g_browser_process` is initialized. PrefService* local_state; if (g_browser_process) { @@ -8091,7 +8093,7 @@ void ChromeContentBrowserClient:: GrantAdditionalRequestPrivilegesToWorkerProcess(int child_id, const GURL& script_url) { #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ - BUILDFLAG(IS_CHROMEOS) + BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) // IWA Service Workers need to be explicitly granted access to their origin // because isolated-app: isn't a web-safe scheme that can be accessed by // default. @@ -8560,7 +8562,7 @@ ChromeContentBrowserClient::GetAlternativeErrorPageOve content::BrowserContext* browser_context, int32_t error_code) { #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ - BUILDFLAG(IS_CHROMEOS) + BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) if (content::AreIsolatedWebAppsEnabled(browser_context) && url.SchemeIs(webapps::kIsolatedAppScheme)) { content::mojom::AlternativeErrorPageOverrideInfoPtr