blob: 5b62b329a67cf7fba5edf0313c696f21777ec401 [file] [log] [blame]
// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/common/webui_url_constants.h"
#include <array>
#include <string_view>
#include "base/containers/fixed_flat_set.h"
#include "build/build_config.h"
#include "components/commerce/core/commerce_constants.h"
#include "components/history_clusters/history_clusters_internals/webui/url_constants.h"
#include "components/optimization_guide/optimization_guide_internals/webui/url_constants.h"
#include "components/password_manager/content/common/web_ui_constants.h"
#include "components/safe_browsing/core/common/web_ui_constants.h"
#include "device/vr/buildflags/buildflags.h"
#include "extensions/buildflags/buildflags.h"
#include "third_party/blink/public/common/chrome_debug_urls.h"
namespace chrome {
// Note: Add hosts to `ChromeURLHosts()` at the bottom of this file to be listed
// by chrome://chrome-urls (about:about) and the built-in AutocompleteProvider.
#if BUILDFLAG(IS_CHROMEOS)
bool IsSystemWebUIHost(std::string_view host) {
// Compares host instead of full URL for performance (the strings are
// shorter).
constexpr auto kHosts = base::MakeFixedFlatSet<std::string_view>({
kChromeUIAccountManagerErrorHost,
kChromeUIAccountMigrationWelcomeHost,
kChromeUIAddSupervisionHost,
kChromeUIAppInstallDialogHost,
kChromeUIAssistantOptInHost,
kChromeUIBluetoothPairingHost,
kChromeUIBorealisCreditsHost,
kChromeUIBorealisInstallerHost,
kChromeUIBorealisMOTDHost,
kChromeUICertificateManagerHost,
kChromeUICloudUploadHost,
kChromeUICrostiniCreditsHost,
kChromeUICrostiniInstallerHost,
kChromeUICryptohomeHost,
kChromeUIDeviceEmulatorHost,
kChromeUIEmojiPickerHost,
kChromeUIExtendedUpdatesDialogHost,
kChromeUIInternetConfigDialogHost,
kChromeUIInternetDetailDialogHost,
kChromeUILockScreenNetworkHost,
kChromeUILockScreenStartReauthHost,
kChromeUIMobileSetupHost,
kChromeUIMultiDeviceSetupHost,
kChromeUINetworkHost,
kChromeUINotificationTesterHost,
kChromeUIOobeHost,
kChromeUIOSCreditsHost,
kChromeUIOSSettingsHost,
kChromeUIPasswordChangeHost,
kChromeUIPowerHost,
kChromeUISetTimeHost,
kChromeUISmbCredentialsHost,
kChromeUISmbShareHost,
});
return kHosts.contains(host);
}
#endif // BUILDFLAG(IS_CHROMEOS)
// Add hosts here to be included in chrome://chrome-urls (about:about).
// These hosts will also be suggested by BuiltinProvider.
base::span<const base::cstring_view> ChromeURLHosts() {
static constexpr auto kChromeURLHosts = std::to_array<base::cstring_view>({
kChromeUIAboutHost,
kChromeUIAccessibilityHost,
kChromeUIActorInternalsHost,
#if !BUILDFLAG(IS_ANDROID)
kChromeUIAppServiceInternalsHost,
#endif
kChromeUIAutofillInternalsHost,
kChromeUIBluetoothInternalsHost,
kChromeUIBrowsingTopicsInternalsHost,
kChromeUIChromeURLsHost,
kChromeUIComponentsHost,
commerce::kChromeUICommerceInternalsHost,
kChromeUIConnectorsInternalsHost,
kChromeUICrashesHost,
kChromeUICreditsHost,
#if BUILDFLAG(IS_CHROMEOS) && !defined(OFFICIAL_BUILD)
kChromeUIDeviceEmulatorHost,
#endif
kChromeUIDeviceLogHost,
kChromeUIDownloadInternalsHost,
kChromeUIFamilyLinkUserInternalsHost,
kChromeUIFlagsHost,
kChromeUIGCMInternalsHost,
kChromeUIHistoryHost,
history_clusters_internals::kChromeUIHistoryClustersInternalsHost,
kChromeUIInterstitialHost,
kChromeUILocalStateHost,
#if !BUILDFLAG(IS_ANDROID)
kChromeUIManagementHost,
#endif
kChromeUIMediaEngagementHost,
kChromeUIMetricsInternalsHost,
kChromeUINetExportHost,
kChromeUINetInternalsHost,
kChromeUINewTabHost,
kChromeUIOmniboxHost,
#if !BUILDFLAG(IS_ANDROID)
kChromeUIOnDeviceInternalsHost,
#endif
optimization_guide_internals::kChromeUIOptimizationGuideInternalsHost,
kChromeUIPasswordManagerInternalsHost,
password_manager::kChromeUIPasswordManagerHost,
kChromeUIPolicyHost,
kChromeUIPredictorsHost,
kChromeUIPrefsInternalsHost,
kChromeUIProfileInternalsHost,
content::kChromeUIQuotaInternalsHost,
kChromeUISignInInternalsHost,
kChromeUISiteEngagementHost,
#if !BUILDFLAG(IS_ANDROID)
kChromeUISuggestInternalsHost,
#endif
kChromeUINTPTilesInternalsHost,
safe_browsing::kChromeUISafeBrowsingHost,
kChromeUISyncInternalsHost,
#if !BUILDFLAG(IS_ANDROID)
kChromeUITabSearchHost,
kChromeUITermsHost,
#endif
kChromeUITranslateInternalsHost,
kChromeUIUsbInternalsHost,
kChromeUIUserActionsHost,
kChromeUIVersionHost,
#if !BUILDFLAG(IS_ANDROID)
kChromeUIWebAppInternalsHost,
#endif
content::kChromeUIPrivateAggregationInternalsHost,
content::kChromeUIAttributionInternalsHost,
content::kChromeUIBlobInternalsHost,
content::kChromeUIDinoHost,
content::kChromeUIGpuHost,
content::kChromeUIHistogramHost,
content::kChromeUIIndexedDBInternalsHost,
content::kChromeUIMediaInternalsHost,
content::kChromeUINetworkErrorsListingHost,
content::kChromeUIProcessInternalsHost,
content::kChromeUIServiceWorkerInternalsHost,
#if !BUILDFLAG(IS_ANDROID)
content::kChromeUITracingHost,
#endif
content::kChromeUIUkmHost,
content::kChromeUIWebRTCInternalsHost,
#if BUILDFLAG(ENABLE_VR)
content::kChromeUIWebXrInternalsHost,
#endif
#if !BUILDFLAG(IS_ANDROID)
#if !BUILDFLAG(IS_CHROMEOS)
kChromeUIAppLauncherPageHost,
#endif
kChromeUIBookmarksHost,
kChromeUIDownloadsHost,
kChromeUIHelpHost,
kChromeUIInspectHost,
kChromeUINewTabPageHost,
kChromeUINewTabPageThirdPartyHost,
kChromeUISettingsHost,
kChromeUISystemInfoHost,
#if !BUILDFLAG(IS_CHROMEOS)
kChromeUIWhatsNewHost,
#endif
#endif
#if BUILDFLAG(IS_ANDROID)
kChromeUISnippetsInternalsHost,
kChromeUIWebApksHost,
#endif
#if BUILDFLAG(IS_CHROMEOS)
kChromeUIBorealisCreditsHost,
kChromeUICertificateManagerHost,
kChromeUICrostiniCreditsHost,
kChromeUICryptohomeHost,
kChromeUIDriveInternalsHost,
kChromeUINetworkHost,
kChromeUILockScreenNetworkHost,
kChromeUIOobeHost,
kChromeUIOSCreditsHost,
kChromeUIOSSettingsHost,
kChromeUIPowerHost,
kChromeUISysInternalsHost,
kChromeUIInternetConfigDialogHost,
kChromeUIInternetDetailDialogHost,
kChromeUIAssistantOptInHost,
#endif
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID)
kChromeUIDiscardsHost,
#endif
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
kChromeUIWebAppSettingsHost,
#endif
#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_ANDROID)
kChromeUILinuxProxyConfigHost,
#endif
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
BUILDFLAG(IS_ANDROID)
kChromeUISandboxHost,
#endif
#if BUILDFLAG(IS_WIN)
kChromeUIConflictsHost,
#endif
#if BUILDFLAG(ENABLE_EXTENSIONS_CORE)
kChromeUIExtensionsHost,
kChromeUIExtensionsInternalsHost,
#endif
#if BUILDFLAG(ENABLE_PRINT_PREVIEW)
kChromeUIPrintHost,
#endif
kChromeUIWebRtcLogsHost,
#if BUILDFLAG(IS_CHROMEOS)
kChromeUIDlpInternalsHost,
#endif // BUILDFLAG(IS_CHROMEOS)
#if !BUILDFLAG(IS_ANDROID)
kChromeUIWebuiBrowserHost,
#endif // !BUILDFLAG(IS_ANDROID)
});
return base::span(kChromeURLHosts);
}
base::span<const base::cstring_view> ChromeDebugURLs() {
// TODO(crbug.com/40253037): make this list comprehensive
static constexpr auto kChromeDebugURLs = std::to_array<base::cstring_view>(
{blink::kChromeUIBadCastCrashURL,
blink::kChromeUIBrowserCrashURL,
blink::kChromeUIBrowserDcheckURL,
blink::kChromeUICrashURL,
blink::kChromeUICrashRustURL,
#if defined(ADDRESS_SANITIZER)
blink::kChromeUICrashRustOverflowURL,
#endif
blink::kChromeUIDumpURL,
blink::kChromeUIKillURL,
blink::kChromeUIHangURL,
blink::kChromeUIShorthangURL,
blink::kChromeUIGpuCleanURL,
blink::kChromeUIGpuCrashURL,
blink::kChromeUIGpuHangURL,
blink::kChromeUIMemoryExhaustURL,
blink::kChromeUIMemoryPressureCriticalURL,
blink::kChromeUIMemoryPressureModerateURL,
#if BUILDFLAG(IS_WIN)
blink::kChromeUIBrowserHeapCorruptionURL,
blink::kChromeUICfgViolationCrashURL,
blink::kChromeUIHeapCorruptionCrashURL,
#endif
#if BUILDFLAG(IS_ANDROID)
blink::kChromeUIGpuJavaCrashURL,
kChromeUIJavaCrashURL,
#else
kChromeUIWebUIJsErrorURL,
#endif // BUILDFLAG(IS_ANDROID)
kChromeUIQuitURL,
kChromeUIRestartURL});
return base::span(kChromeDebugURLs);
}
} // namespace chrome