Files
brave-core/app/feature_defaults_unittest.cc
T

292 lines
13 KiB
C++

/* Copyright (c) 2021 The Brave Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at https://mozilla.org/MPL/2.0/. */
#include "base/debug/debugging_buildflags.h"
#include "base/feature_list.h"
#include "base/feature_override.h"
#include "base/features.h"
#include "base/logging.h"
#include "chrome/browser/browser_features.h"
#include "chrome/browser/devtools/features.h"
#include "chrome/browser/history_embeddings/history_embeddings_utils.h"
#include "chrome/browser/preloading/preloading_features.h"
#include "chrome/browser/ui/ui_features.h"
#include "chrome/common/chrome_features.h"
#include "chrome/common/privacy_budget/privacy_budget_features.h"
#include "components/aggregation_service/features.h"
#include "components/attribution_reporting/features.h"
#include "components/autofill/core/common/autofill_features.h"
#include "components/autofill/core/common/autofill_payments_features.h"
#include "components/commerce/core/commerce_feature_list.h"
#include "components/compose/core/browser/compose_features.h"
#include "components/content_settings/core/common/features.h"
#include "components/feature_engagement/public/feature_constants.h"
#include "components/heap_profiling/in_process/heap_profiler_parameters.h"
#include "components/history/core/browser/features.h"
#include "components/history_clusters/core/features.h"
#include "components/history_clusters/core/on_device_clustering_features.h"
#include "components/history_embeddings/history_embeddings_features.h"
#include "components/lens/lens_features.h"
#include "components/manta/features.h"
#include "components/metrics/metrics_features.h"
#include "components/metrics/structured/structured_metrics_features.h"
#include "components/network_time/network_time_tracker.h"
#include "components/omnibox/common/omnibox_features.h"
#include "components/optimization_guide/core/optimization_guide_features.h"
#include "components/page_image_service/features.h"
#include "components/page_info/core/features.h"
#include "components/performance_manager/public/features.h"
#include "components/permissions/features.h"
#include "components/plus_addresses/features.h"
#include "components/privacy_sandbox/privacy_sandbox_features.h"
#include "components/safe_browsing/core/common/features.h"
#include "components/search/ntp_features.h"
#include "components/segmentation_platform/public/features.h"
#include "components/shared_highlighting/core/common/shared_highlighting_features.h"
#include "components/signin/public/base/signin_buildflags.h"
#include "components/signin/public/base/signin_switches.h"
#include "components/subresource_filter/core/common/common_features.h"
#include "components/sync/base/features.h"
#include "components/user_education/common/user_education_features.h"
#include "components/webapps/browser/features.h"
#include "content/common/features.h"
#include "content/public/common/content_features.h"
#include "content/public/common/dips_utils.h"
#include "gpu/config/gpu_finch_features.h"
#include "media/base/media_switches.h"
#include "net/base/features.h"
#include "services/network/public/cpp/features.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/public/common/features.h"
#include "ui/accessibility/accessibility_features.h"
#include "ui/base/ui_base_features.h"
#if BUILDFLAG(IS_ANDROID)
#include "android_webview/common/aw_features.h"
#include "chrome/browser/flags/android/chrome_feature_list.h"
#include "components/password_manager/core/common/password_manager_features.h"
#else
#include "chrome/browser/apps/link_capturing/link_capturing_features.h"
#include "chrome/browser/enterprise/connectors/analysis/content_analysis_features.h"
#include "chrome/browser/sharing_hub/sharing_hub_features.h"
#include "components/device_signals/core/common/signals_features.h"
#include "components/translate/core/common/translate_util.h"
#include "extensions/common/extension_features.h"
#include "services/device/public/cpp/device_features.h"
#endif
TEST(FeatureDefaultsTest, DisabledFeatures) {
// Please, keep alphabetized
const base::Feature* disabled_features[] = {
&aggregation_service::kAggregationServiceMultipleCloudProviders,
#if BUILDFLAG(IS_ANDROID)
&android_webview::features::kWebViewMediaIntegrityApiBlinkExtension,
#endif
&attribution_reporting::features::kConversionMeasurement,
&autofill::features::kAutofillEnableCardBenefitsForAmericanExpress,
&autofill::features::kAutofillEnableCardBenefitsForBmo,
&autofill::features::test::kAutofillServerCommunication,
#if BUILDFLAG(IS_ANDROID)
&base::features::kCollectAndroidFrameTimelineMetrics,
#endif
&blink::features::kAdInterestGroupAPI,
&blink::features::kAllowURNsInIframes,
&blink::features::kAttributionReportingInBrowserMigration,
&blink::features::kBackgroundResourceFetch,
&blink::features::kBiddingAndScoringDebugReportingAPI,
&blink::features::kBrowsingTopics,
&blink::features::kControlledFrame,
&blink::features::kCssSelectorFragmentAnchor,
&blink::features::kFencedFrames,
&blink::features::kFledge,
&blink::features::kFledgeBiddingAndAuctionServer,
&blink::features::kFledgeConsiderKAnonymity,
&blink::features::kFledgeEnforceKAnonymity,
&blink::features::kInterestGroupStorage,
&blink::features::kParakeet,
&blink::features::kPrerender2,
&blink::features::kPrivateAggregationApi,
&blink::features::kSharedStorageAPI,
&blink::features::kSpeculationRulesPrefetchFuture,
#if BUILDFLAG(IS_ANDROID)
&chrome::android::kAdaptiveButtonInTopToolbarCustomizationV2,
#endif
&commerce::kCommerceAllowOnDemandBookmarkUpdates,
&commerce::kCommerceDeveloper,
&commerce::kCommerceMerchantViewer,
&commerce::kPriceAnnotations,
&commerce::kShoppingList,
&commerce::kShoppingPDPMetrics,
&commerce::kRetailCoupons,
&compose::features::kEnableCompose,
&content_settings::features::kTrackingProtection3pcd,
&content_settings::features::kUserBypassUI,
#if !BUILDFLAG(IS_ANDROID)
&enterprise_signals::features::kDeviceSignalsConsentDialog,
&extensions_features::kExtensionManifestV2DeprecationWarning,
&extensions_features::kExtensionManifestV2Unsupported,
&extensions_features::kExtensionsManifestV3Only,
#endif
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX)
&feature_engagement::kIPHGMCCastStartStopFeature,
&feature_engagement::kIPHPasswordsManagementBubbleAfterSaveFeature,
#endif
&features::kBookmarkTriggerForPrerender2,
&features::kChromeStructuredMetrics,
&features::kCookieDeprecationFacilitatedTesting,
#if !BUILDFLAG(IS_ANDROID)
&features::kDevToolsConsoleInsights,
#endif // !BUILDFLAG(IS_ANDROID)
&features::kDevToolsPrivacyUI,
&features::kDigitalGoodsApi,
&features::kFedCm,
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
&features::kFewerUpdateConfirmations,
&features::kShortcutsNotApps,
#endif
&features::kGlic,
&features::kHttpsFirstBalancedMode,
&features::kIdentifiabilityStudyMetaExperiment,
&features::kIdleDetection,
&features::kKAnonymityService,
&features::kKAnonymityServiceOHTTPRequests,
&features::kNewTabPageTriggerForPrerender2,
&features::kPrivacySandboxAdsAPIsOverride,
&features::kPrivacySandboxAdsAPIsM1Override,
#if !BUILDFLAG(IS_ANDROID)
&features::kPwaNavigationCapturing,
&features::kReportPakFileIntegrity,
#endif
&features::kSCTAuditing,
&features::kServiceWorkerAutoPreload,
&features::kSupportSearchSuggestionForPrerender2,
&features::kTabHoverCardImages,
#if !BUILDFLAG(IS_ANDROID)
&features::kTrustSafetySentimentSurvey,
&features::kTrustSafetySentimentSurveyV2,
#endif
#if BUILDFLAG(IS_MAC)
&features::kUseChromiumUpdater,
&features::kImmersiveFullscreen,
#endif
&features::kWebIdentityDigitalCredentials,
&features::kWebOTP,
&heap_profiling::kHeapProfilerReporting,
&history::kOrganicRepeatableQueries,
&history_clusters::features::kOnDeviceClustering,
&history_clusters::features::kOnDeviceClusteringKeywordFiltering,
&history_clusters::internal::kHistoryClustersInternalsPage,
&history_clusters::internal::kHistoryClustersNavigationContextClustering,
&history_clusters::internal::kJourneys,
&history_clusters::internal::kJourneysImages,
&history_clusters::internal::kOmniboxAction,
&history_clusters::internal::kOmniboxHistoryClusterProvider,
&history_embeddings::kHistoryEmbeddings,
&history_embeddings::kHistoryEmbeddingsAnswers,
&history_embeddings::kLaunchedHistoryEmbeddings,
#if BUILDFLAG(ENABLE_MIRROR)
&kVerifyRequestInitiatorForMirrorHeaders,
#endif
&lens::features::kLensOverlay,
&lens::features::kLensStandalone,
&manta::features::kMantaService,
&media::kLiveCaption,
&metrics::structured::kEnabledStructuredMetricsService,
&metrics::structured::kPhoneHubStructuredMetrics,
&net::features::kEnableWebTransportDraft07,
&net::features::kTopLevelTpcdOriginTrial,
&net::features::kTpcdMetadataGrants,
&net::features::kWaitForFirstPartySetsInit,
&network_time::kNetworkTimeServiceQuerying,
&ntp_features::kCustomizeChromeSidePanelExtensionsCard,
&ntp_features::kCustomizeChromeWallpaperSearch,
&ntp_features::kNtpAlphaBackgroundCollections,
&ntp_features::kNtpBackgroundImageErrorDetection,
&ntp_features::kNtpChromeCartModule,
&omnibox::kDocumentProviderNoSyncRequirement,
&omnibox::kMlUrlScoring,
&omnibox::kRichAutocompletion,
&omnibox::kStarterPackExpansion,
&omnibox::kZeroSuggestPrefetching,
&optimization_guide::features::kOptimizationGuideFetchingForSRP,
&optimization_guide::features::kOptimizationGuidePersonalizedFetching,
&optimization_guide::features::kOptimizationHints,
&optimization_guide::features::kRemoteOptimizationGuideFetching,
&optimization_guide::features::
kRemoteOptimizationGuideFetchingAnonymousDataConsent,
&page_image_service::kImageService,
&page_image_service::kImageServiceSuggestPoweredImages,
#if BUILDFLAG(IS_ANDROID)
&password_manager::features::
kUnifiedPasswordManagerLocalPasswordsMigrationWarning,
#endif
&permissions::features::kOneTimePermission,
#if !BUILDFLAG(IS_ANDROID)
&permissions::features::kPermissionsPromptSurvey,
#endif
&permissions::features::kPermissionOnDeviceNotificationPredictions,
&permissions::features::kPermissionPredictionsV2,
&permissions::features::kPermissionPredictionsV3,
&permissions::features::kShowRelatedWebsiteSetsPermissionGrants,
&plus_addresses::features::kPlusAddressesEnabled,
&privacy_sandbox::kEnforcePrivacySandboxAttestations,
&privacy_sandbox::kOverridePrivacySandboxSettingsLocalTesting,
&privacy_sandbox::kPrivacySandboxFirstPartySetsUI,
&privacy_sandbox::kPrivacySandboxSettings4,
&privacy_sandbox::kTrackingProtectionContentSettingUbControl,
&safe_browsing::kDownloadsPageReferrerUrl,
&safe_browsing::kExtensionTelemetryForEnterprise,
&safe_browsing::kGooglePlayProtectInApkTelemetry,
&segmentation_platform::features::kSegmentationPlatformCollectTabRankData,
&segmentation_platform::features::kSegmentationPlatformDeviceTier,
&segmentation_platform::features::kSegmentationPlatformFeature,
&segmentation_platform::features::kSegmentationPlatformTimeDelaySampling,
&shared_highlighting::kSharedHighlightingManager,
&subresource_filter::kAdTagging,
&syncer::kSyncEnableBookmarksInTransportMode,
#if !BUILDFLAG(IS_ANDROID)
&translate::kTFLiteLanguageDetectionEnabled,
#endif
&webapps::features::kWebAppsEnableMLModelForPromotion,
};
for (const auto* feature : disabled_features) {
EXPECT_FALSE(base::FeatureList::IsEnabled(*feature)) << feature->name;
}
}
TEST(FeatureDefaultsTest, EnabledFeatures) {
const base::Feature* enabled_features[] = {
&blink::features::kPrefetchPrivacyChanges,
&blink::features::kReducedReferrerGranularity,
&blink::features::kReduceUserAgentMinorVersion,
&blink::features::kUACHOverrideBlank,
&features::kCertificateTransparencyAskBeforeEnabling,
#if !BUILDFLAG(IS_ANDROID)
&features::kLocationProviderManager,
#endif
&media::kEnableTabMuting,
&net::features::kPartitionConnectionsByNetworkIsolationKey,
#if BUILDFLAG(IS_ANDROID)
&omnibox::kRetainOmniboxOnFocus,
#endif
#if !BUILDFLAG(IS_ANDROID)
&sharing_hub::kDesktopScreenshots,
#endif
};
for (const auto* feature : enabled_features) {
EXPECT_TRUE(base::FeatureList::IsEnabled(*feature)) << feature->name;
}
}
TEST(FeatureDefaultsTest, DefaultFeatureParameters) {
#if !BUILDFLAG(IS_ANDROID)
EXPECT_EQ(features::kLocationProviderManagerParam.default_value,
device::mojom::LocationProviderManagerMode::kPlatformOnly);
#endif
EXPECT_FALSE(features::kShowDefaultBrowserAppMenuItem.default_value);
}