#include "android_webview/browser/aw_field_trials.h"
#include "android_webview/browser/metrics/aw_metrics_service_client.h"
#include "android_webview/common/aw_features.h"
#include "android_webview/common/aw_switches.h"
#include "base/allocator/partition_alloc_features.h"
#include "base/base_paths_android.h"
#include "base/check.h"
#include "base/metrics/persistent_histogram_allocator.h"
#include "base/path_service.h"
#include "components/history/core/browser/features.h"
#include "components/metrics/persistent_histograms.h"
#include "components/payments/content/android/payment_feature_map.h"
#include "components/permissions/features.h"
#include "components/safe_browsing/core/common/features.h"
#include "components/translate/core/common/translate_util.h"
#include "components/variations/feature_overrides.h"
#include "components/viz/common/features.h"
#include "content/public/common/content_features.h"
#include "gpu/config/gpu_finch_features.h"
#include "media/audio/audio_features.h"
#include "media/base/media_switches.h"
#include "net/base/features.h"
#include "services/network/public/cpp/features.h"
#include "services/tracing/public/cpp/tracing_features.h"
#include "storage/browser/blob/features.h"
#include "third_party/blink/public/common/features.h"
#include "third_party/blink/public/common/features_generated.h"
#include "ui/android/ui_android_features.h"
#include "ui/base/ui_base_features.h"
#include "ui/gl/gl_features.h"
#include "ui/gl/gl_switches.h"
void AwFieldTrials::OnVariationsSetupComplete() {
android_webview::AwMetricsServiceClient* metrics_service_client =
android_webview::AwMetricsServiceClient::GetInstance();
metrics_service_client->SetUpMetricsDir();
InstantiatePersistentHistogramsWithFeaturesAndCleanup(
metrics_service_client->GetMetricsDir());
}
void AwFieldTrials::RegisterFeatureOverrides(base::FeatureList* feature_list) {
if (!feature_list) {
return;
}
variations::FeatureOverrides aw_feature_overrides(*feature_list);
aw_feature_overrides.DisableFeature(
net::features::kThirdPartyStoragePartitioning);
aw_feature_overrides.DisableFeature(
::features::kBlockCrossPartitionBlobUrlFetching);
aw_feature_overrides.DisableFeature(
blink::features::kAboutBlankPageRespectsDarkModeOnUserAction);
aw_feature_overrides.DisableFeature(
blink::features::kAsyncTouchMovesImmediatelyAfterScroll);
aw_feature_overrides.DisableFeature(
blink::features::kEnforceNoopenerOnBlobURLNavigation);
aw_feature_overrides.DisableFeature(
::features::kDefaultPassthroughCommandDecoder);
aw_feature_overrides.DisableFeature(ui::kAndroidHDR);
aw_feature_overrides.DisableFeature(::features::kAndroidWebAppLaunchHandler);
aw_feature_overrides.DisableFeature(
blink::features::kReduceUserAgentMinorVersion);
aw_feature_overrides.DisableFeature(blink::features::kFencedFrames);
aw_feature_overrides.DisableFeature(network::features::kInterestGroupStorage);
aw_feature_overrides.DisableFeature(blink::features::kAdInterestGroupAPI);
aw_feature_overrides.DisableFeature(blink::features::kFledge);
aw_feature_overrides.DisableFeature(
blink::features::kLowLatencyCanvas2dImageChromium);
aw_feature_overrides.DisableFeature(
blink::features::kLowLatencyWebGLImageChromium);
aw_feature_overrides.DisableFeature(network::features::kSharedStorageAPI);
aw_feature_overrides.DisableFeature(blink::features::kScrollbarColor);
aw_feature_overrides.DisableFeature(blink::features::kScrollbarWidth);
aw_feature_overrides.DisableFeature(
::features::kSendEmptyGestureScrollUpdate);
aw_feature_overrides.DisableFeature(history::kPopulateVisitedLinkDatabase);
aw_feature_overrides.DisableFeature(::features::kVulkan);
aw_feature_overrides.DisableFeature(::features::kServiceWorkerPaymentApps);
aw_feature_overrides.EnableFeature(
::payments::android::kAndroidPaymentIntentsOmitDeprecatedParameters);
aw_feature_overrides.DisableFeature(
blink::features::kSecurePaymentConfirmationAvailabilityAPI);
aw_feature_overrides.DisableFeature(blink::features::kPaymentLinkDetection);
aw_feature_overrides.DisableFeature(media::kOverlayFullscreenVideo);
aw_feature_overrides.DisableFeature(media::kMediaDrmPersistentLicense);
aw_feature_overrides.DisableFeature(media::kMediaDrmQueryInSeparateProcess);
aw_feature_overrides.DisableFeature(::features::kBackgroundFetch);
aw_feature_overrides.DisableFeature(::features::kAndroidSurfaceControl);
aw_feature_overrides.DisableFeature(::features::kWebOTP);
aw_feature_overrides.DisableFeature(::features::kWebXr);
aw_feature_overrides.DisableFeature(::features::kDigitalGoodsApi);
aw_feature_overrides.DisableFeature(
network::features::kCrossOriginOpenerPolicy);
aw_feature_overrides.DisableFeature(::features::kInstalledApp);
aw_feature_overrides.DisableFeature(::features::kPeriodicBackgroundSync);
aw_feature_overrides.DisableFeature(
::features::kUseSurfaceLayerForVideoDefault);
aw_feature_overrides.DisableFeature(::features::kEnableDrDc);
aw_feature_overrides.DisableFeature(::features::kWebBluetooth);
aw_feature_overrides.DisableFeature(::features::kWebUsb);
aw_feature_overrides.DisableFeature(blink::features::kWebSerialAPI);
aw_feature_overrides.DisableFeature(
::translate::kTFLiteLanguageDetectionEnabled);
aw_feature_overrides.DisableFeature(
net::features::kStaticKeyPinningEnforcement);
aw_feature_overrides.DisableFeature(::features::kFedCm);
aw_feature_overrides.DisableFeature(
::features::kWebIdentityDigitalCredentials);
aw_feature_overrides.DisableFeature(
::features::kWebIdentityDigitalCredentialsCreation);
aw_feature_overrides.DisableFeature(blink::features::kBlockMidiByDefault);
aw_feature_overrides.DisableFeature(blink::features::kDevicePosture);
aw_feature_overrides.DisableFeature(blink::features::kViewportSegments);
aw_feature_overrides.DisableFeature(blink::features::kPaintHoldingForIframes);
aw_feature_overrides.DisableFeature(
::features::kFocusRenderWidgetHostViewAndroidOnActionDown);
aw_feature_overrides.DisableFeature(blink::features::kPermissionElement);
aw_feature_overrides.DisableFeature(blink::features::kGeolocationElement);
aw_feature_overrides.DisableFeature(blink::features::kUserMediaElement);
aw_feature_overrides.DisableFeature(blink::features::kInstallElement);
aw_feature_overrides.DisableFeature(::features::kBtm);
aw_feature_overrides.EnableFeature(features::kEnsureExistingRendererAlive);
aw_feature_overrides.EnableFeature(blink::features::kThreadedBodyLoader);
aw_feature_overrides.EnableFeature(blink::features::kThreadedPreloadScanner);
aw_feature_overrides.EnableFeature(blink::features::kPrecompileInlineScripts);
aw_feature_overrides.DisableFeature(
blink::features::kNavigationPredictorNewViewportFeatures);
aw_feature_overrides.DisableFeature(
base::features::kPartitionAllocMemoryTagging);
aw_feature_overrides.DisableFeature(network::features::kBrowsingTopics);
aw_feature_overrides.DisableFeature(::features::kVulkanFromANGLE);
aw_feature_overrides.DisableFeature(::features::kDefaultANGLEVulkan);
aw_feature_overrides.DisableFeature(
blink::features::kPartitionVisitedLinkDatabaseWithSelfLinks);
aw_feature_overrides.DisableFeature(features::kPrefetchProxy);
aw_feature_overrides.DisableFeature(
blink::features::kDocumentPictureInPictureAPI);
aw_feature_overrides.DisableFeature(
features::kAAudioPerStreamDeviceSelection);
aw_feature_overrides.DisableFeature(blink::features::kForceOffTextAutosizing);
aw_feature_overrides.DisableFeature(
network::features::kLocalNetworkAccessChecks);
aw_feature_overrides.DisableFeature(
features::kAndroidEnableBackgroundMediaLargeFormFactors);
aw_feature_overrides.EnableFeature(features::kEnablePerfettoSystemTracing);
aw_feature_overrides.DisableFeature(::features::kGpuShaderDiskCache);
}