blob: f39b588a531bff1a3084890ababd5431ca1656e4 [file] [log] [blame]
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// This file defines the browser-specific base::FeatureList features that are
// not shared with other process types.
#ifndef CHROME_BROWSER_BROWSER_FEATURES_H_
#define CHROME_BROWSER_BROWSER_FEATURES_H_
#include "base/feature_list.h"
#include "base/metrics/field_trial_params.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
namespace features {
// All features in alphabetical order. The features should be documented
// alongside the definition of their values in the .cc file.
#if BUILDFLAG(IS_WIN)
BASE_DECLARE_FEATURE(kAppBoundEncryptionMetrics);
#endif
BASE_DECLARE_FEATURE(kAutocompleteActionPredictorConfidenceCutoff);
BASE_DECLARE_FEATURE(kBookmarkTriggerForPrerender2);
BASE_DECLARE_FEATURE(kCertificateTransparencyAskBeforeEnabling);
BASE_DECLARE_FEATURE(kClosedTabCache);
BASE_DECLARE_FEATURE(kDeferredSpareRendererForTopChromeWebUI);
extern const base::FeatureParam<base::TimeDelta> kSpareRendererWarmupDelay;
extern const base::FeatureParam<bool>
kSpareRendererWarmupDelayUntilPageStopsLoading;
BASE_DECLARE_FEATURE(kDestroyProfileOnBrowserClose);
BASE_DECLARE_FEATURE(kDestroySystemProfiles);
BASE_DECLARE_FEATURE(kDevToolsConsoleInsights);
extern const base::FeatureParam<std::string> kDevToolsConsoleInsightsAidaScope;
extern const base::FeatureParam<std::string>
kDevToolsConsoleInsightsAidaEndpoint;
extern const base::FeatureParam<std::string> kDevToolsConsoleInsightsModelId;
extern const base::FeatureParam<double> kDevToolsConsoleInsightsTemperature;
extern const base::FeatureParam<bool> kDevToolsConsoleInsightsOptIn;
BASE_DECLARE_FEATURE(kDevToolsConsoleInsightsDogfood);
extern const base::FeatureParam<std::string>
kDevToolsConsoleInsightsDogfoodAidaScope;
extern const base::FeatureParam<std::string>
kDevToolsConsoleInsightsDogfoodAidaEndpoint;
extern const base::FeatureParam<std::string>
kDevToolsConsoleInsightsDogfoodModelId;
extern const base::FeatureParam<double>
kDevToolsConsoleInsightsDogfoodTemperature;
extern const base::FeatureParam<bool> kDevToolsConsoleInsightsDogfoodOptIn;
BASE_DECLARE_FEATURE(kDevToolsConsoleInsightsSettingVisible);
extern const base::FeatureParam<std::string>
kDevToolsConsoleInsightsSettingVisibleBlockedReason;
BASE_DECLARE_FEATURE(kDevToolsSharedProcessInfobar);
BASE_DECLARE_FEATURE(kDevToolsTabTarget);
BASE_DECLARE_FEATURE(kDevToolsVeLogging);
#if BUILDFLAG(IS_CHROMEOS)
BASE_DECLARE_FEATURE(kDoubleTapToZoomInTabletMode);
#endif
#if BUILDFLAG(IS_WIN)
BASE_DECLARE_FEATURE(kEnableDPAPIEncryptionProvider);
BASE_DECLARE_FEATURE(kRegisterAppBoundEncryptionProvider);
#endif
BASE_DECLARE_FEATURE(kFedCmWithoutThirdPartyCookies);
BASE_DECLARE_FEATURE(kFlexOrgManagementDisclosure);
BASE_DECLARE_FEATURE(kIncomingCallNotifications);
BASE_DECLARE_FEATURE(kKeyPinningComponentUpdater);
BASE_DECLARE_FEATURE(kLargeFaviconFromGoogle);
extern const base::FeatureParam<int> kLargeFaviconFromGoogleSizeInDip;
#if BUILDFLAG(IS_WIN)
BASE_DECLARE_FEATURE(kLockProfileCookieDatabase);
#endif
#if !BUILDFLAG(IS_ANDROID)
BASE_DECLARE_FEATURE(kMuteNotificationSnoozeAction);
#endif
BASE_DECLARE_FEATURE(kNetworkAnnotationMonitoring);
BASE_DECLARE_FEATURE(kNewTabPageTriggerForPrerender2);
// This parameter is used to set a time threshold for triggering onMouseHover
// prerender. For example, if the value is 300, the New Tab Page prerender
// will start after 300ms after mouseHover duration is over 300ms.
const base::FeatureParam<int>
kNewTabPagePrerenderStartDelayOnMouseHoverByMiliSeconds{
&features::kNewTabPageTriggerForPrerender2,
"prerender_start_delay_on_mouse_hover_ms", 300};
const base::FeatureParam<int>
kNewTabPagePreconnectStartDelayOnMouseHoverByMiliSeconds{
&features::kNewTabPageTriggerForPrerender2,
"preconnect_start_delay_on_mouse_hover_ms", 100};
const base::FeatureParam<bool> kPrerenderNewTabPageOnMousePressedTrigger{
&features::kNewTabPageTriggerForPrerender2,
"prerender_new_tab_page_on_mouse_pressed_trigger", false};
const base::FeatureParam<bool> kPrerenderNewTabPageOnMouseHoverTrigger{
&features::kNewTabPageTriggerForPrerender2,
"prerender_new_tab_page_on_mouse_hover_trigger", false};
#if BUILDFLAG(IS_WIN)
BASE_DECLARE_FEATURE(kNoPreReadMainDll);
#endif
#if BUILDFLAG(IS_ANDROID)
BASE_DECLARE_FEATURE(kNotificationOneTapUnsubscribe);
#endif
BASE_DECLARE_FEATURE(kOmniboxTriggerForNoStatePrefetch);
BASE_DECLARE_FEATURE(kOmniboxTriggerForPrerender2);
#if BUILDFLAG(IS_CHROMEOS)
BASE_DECLARE_FEATURE(kPlatformKeysAesEncryption);
#endif // BUILDFLAG(IS_CHROMEOS)
BASE_DECLARE_FEATURE(kPrerenderDSEHoldback);
BASE_DECLARE_FEATURE(kPromoBrowserCommands);
extern const char kBrowserCommandIdParam[];
#if BUILDFLAG(IS_CHROMEOS_ASH)
BASE_DECLARE_FEATURE(kQuickSettingsPWANotifications);
#endif
#if !BUILDFLAG(IS_ANDROID)
BASE_DECLARE_FEATURE(kReadAnythingPermanentAccessibility);
#endif
BASE_DECLARE_FEATURE(kRestartNetworkServiceUnsandboxedForFailedLaunch);
BASE_DECLARE_FEATURE(kSandboxExternalProtocolBlocked);
BASE_DECLARE_FEATURE(kSandboxExternalProtocolBlockedWarning);
BASE_DECLARE_FEATURE(kSupportSearchSuggestionForPrerender2);
// Indicates whether to make search prefetch response shareable to prerender.
// When allowing this, prerender can only copy the cache but cannot take over
// the ownership.
enum class SearchPreloadShareableCacheType {
kEnabled,
kDisabled,
};
extern const base::FeatureParam<SearchPreloadShareableCacheType>
kSearchPreloadShareableCacheTypeParam;
BASE_DECLARE_FEATURE(kTriggerNetworkDataMigration);
#if BUILDFLAG(IS_CHROMEOS)
BASE_DECLARE_FEATURE(kTabCaptureBlueBorderCrOS);
#endif
BASE_DECLARE_FEATURE(kUseOsCryptAsyncForCookieEncryption);
BASE_DECLARE_FEATURE(kWebUsbDeviceDetection);
} // namespace features
#endif // CHROME_BROWSER_BROWSER_FEATURES_H_