| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| package org.chromium.chrome.browser.flags; |
| |
| import androidx.annotation.VisibleForTesting; |
| |
| import org.chromium.base.FeatureList; |
| import org.chromium.base.annotations.JNINamespace; |
| import org.chromium.base.annotations.MainDex; |
| import org.chromium.base.annotations.NativeMethods; |
| |
| import java.util.Map; |
| |
| /** |
| * Java accessor for base/feature_list.h state. |
| * |
| * This class provides methods to access values of feature flags registered in |
| * |kFeaturesExposedToJava| in chrome/browser/android/flags/chrome_feature_list.cc and as a constant |
| * in this class. |
| * |
| * This class also provides methods to access values of field trial parameters associated to those |
| * flags. |
| */ |
| @JNINamespace("chrome::android") |
| @MainDex |
| public abstract class ChromeFeatureList { |
| /** Prevent instantiation. */ |
| private ChromeFeatureList() {} |
| |
| /** |
| * @see FeatureList#setTestCanUseDefaultsForTesting |
| */ |
| // TODO(crbug.com/1060097): Migrate callers to the FeatureList equivalent function. |
| @VisibleForTesting |
| public static void setTestCanUseDefaultsForTesting() { |
| FeatureList.setTestCanUseDefaultsForTesting(); |
| } |
| |
| /** |
| * @see FeatureList#resetTestCanUseDefaultsForTesting |
| */ |
| // TODO(crbug.com/1060097): Migrate callers to the FeatureList equivalent function. |
| @VisibleForTesting |
| public static void resetTestCanUseDefaultsForTesting() { |
| FeatureList.resetTestCanUseDefaultsForTesting(); |
| } |
| |
| /** |
| * @see FeatureList#setTestFeatures |
| * Sets the feature flags to use in JUnit tests, since native calls are not available there. |
| * Do not use directly, prefer using the {@link Features} annotation. |
| * |
| * @see Features |
| * @see Features.Processor |
| * |
| * @deprecated |
| * https://crbug.com/1058993 |
| */ |
| // TODO(crbug.com/1060097): Migrate callers to the FeatureList equivalent function. |
| @VisibleForTesting |
| @Deprecated |
| public static void setTestFeatures(Map<String, Boolean> features) { |
| FeatureList.setTestFeatures(features); |
| } |
| |
| /** |
| * @return Whether the native FeatureList has been initialized. If this method returns false, |
| * none of the methods in this class that require native access should be called (except |
| * in tests if test features have been set). |
| */ |
| // TODO(crbug.com/1060097): Migrate callers to the FeatureList equivalent function. |
| @Deprecated |
| public static boolean isInitialized() { |
| return FeatureList.isInitialized(); |
| } |
| |
| /* |
| * Returns whether the specified feature is enabled or not in native. |
| * |
| * @param featureName The name of the feature to query. |
| * @return Whether the feature is enabled or not. |
| */ |
| private static boolean isEnabledInNative(String featureName) { |
| assert FeatureList.isNativeInitialized(); |
| return ChromeFeatureListJni.get().isEnabled(featureName); |
| } |
| |
| /** |
| * Returns whether the specified feature is enabled or not. |
| * |
| * Note: Features queried through this API must be added to the array |
| * |kFeaturesExposedToJava| in chrome/browser/android/chrome_feature_list.cc |
| * |
| * Calling this has the side effect of bucketing this client, which may cause an experiment to |
| * be marked as active. |
| * |
| * Should be called only after native is loaded. If {@link #isInitialized()} return true, this |
| * method is safe to call. In tests, this will return any values set through |
| * {@link #setTestFeatures(Map)}, even before native is loaded. |
| * |
| * @param featureName The name of the feature to query. |
| * @return Whether the feature is enabled or not. |
| */ |
| public static boolean isEnabled(String featureName) { |
| // FeatureFlags set for testing override the native default value. |
| Boolean testValue = FeatureList.getTestValueForFeature(featureName); |
| if (testValue != null) return testValue; |
| return isEnabledInNative(featureName); |
| } |
| |
| /** |
| * Returns a field trial param for the specified feature. |
| * |
| * Note: Features queried through this API must be added to the array |
| * |kFeaturesExposedToJava| in chrome/browser/android/chrome_feature_list.cc |
| * |
| * @param featureName The name of the feature to retrieve a param for. |
| * @param paramName The name of the param for which to get as an integer. |
| * @return The parameter value as a String. The string is empty if the feature does not exist or |
| * the specified parameter does not exist. |
| */ |
| public static String getFieldTrialParamByFeature(String featureName, String paramName) { |
| if (FeatureList.hasTestFeatures()) return ""; |
| assert FeatureList.isInitialized(); |
| return ChromeFeatureListJni.get().getFieldTrialParamByFeature(featureName, paramName); |
| } |
| |
| /** |
| * Returns a field trial param as an int for the specified feature. |
| * |
| * Note: Features queried through this API must be added to the array |
| * |kFeaturesExposedToJava| in chrome/browser/android/chrome_feature_list.cc |
| * |
| * @param featureName The name of the feature to retrieve a param for. |
| * @param paramName The name of the param for which to get as an integer. |
| * @param defaultValue The integer value to use if the param is not available. |
| * @return The parameter value as an int. Default value if the feature does not exist or the |
| * specified parameter does not exist or its string value does not represent an int. |
| */ |
| public static int getFieldTrialParamByFeatureAsInt( |
| String featureName, String paramName, int defaultValue) { |
| if (FeatureList.hasTestFeatures()) return defaultValue; |
| assert FeatureList.isInitialized(); |
| return ChromeFeatureListJni.get().getFieldTrialParamByFeatureAsInt( |
| featureName, paramName, defaultValue); |
| } |
| |
| /** |
| * Returns a field trial param as a double for the specified feature. |
| * |
| * Note: Features queried through this API must be added to the array |
| * |kFeaturesExposedToJava| in chrome/browser/android/chrome_feature_list.cc |
| * |
| * @param featureName The name of the feature to retrieve a param for. |
| * @param paramName The name of the param for which to get as an integer. |
| * @param defaultValue The double value to use if the param is not available. |
| * @return The parameter value as a double. Default value if the feature does not exist or the |
| * specified parameter does not exist or its string value does not represent a double. |
| */ |
| public static double getFieldTrialParamByFeatureAsDouble( |
| String featureName, String paramName, double defaultValue) { |
| if (FeatureList.hasTestFeatures()) return defaultValue; |
| assert FeatureList.isInitialized(); |
| return ChromeFeatureListJni.get().getFieldTrialParamByFeatureAsDouble( |
| featureName, paramName, defaultValue); |
| } |
| |
| /** |
| * Returns a field trial param as a boolean for the specified feature. |
| * |
| * Note: Features queried through this API must be added to the array |
| * |kFeaturesExposedToJava| in chrome/browser/android/chrome_feature_list.cc |
| * |
| * @param featureName The name of the feature to retrieve a param for. |
| * @param paramName The name of the param for which to get as an integer. |
| * @param defaultValue The boolean value to use if the param is not available. |
| * @return The parameter value as a boolean. Default value if the feature does not exist or the |
| * specified parameter does not exist or its string value is neither "true" nor "false". |
| */ |
| public static boolean getFieldTrialParamByFeatureAsBoolean( |
| String featureName, String paramName, boolean defaultValue) { |
| if (FeatureList.hasTestFeatures()) return defaultValue; |
| assert FeatureList.isInitialized(); |
| return ChromeFeatureListJni.get().getFieldTrialParamByFeatureAsBoolean( |
| featureName, paramName, defaultValue); |
| } |
| |
| /** Alphabetical: */ |
| public static final String ALLOW_NEW_INCOGNITO_TAB_INTENTS = "AllowNewIncognitoTabIntents"; |
| public static final String ALLOW_REMOTE_CONTEXT_FOR_NOTIFICATIONS = |
| "AllowRemoteContextForNotifications"; |
| public static final String AUTOFILL_ALLOW_NON_HTTP_ACTIVATION = |
| "AutofillAllowNonHttpActivation"; |
| public static final String AUTOFILL_CREDIT_CARD_AUTHENTICATION = |
| "AutofillCreditCardAuthentication"; |
| public static final String AUTOFILL_ENABLE_CARD_NICKNAME_MANAGEMENT = |
| "AutofillEnableCardNicknameManagement"; |
| public static final String AUTOFILL_ENABLE_COMPANY_NAME = "AutofillEnableCompanyName"; |
| public static final String AUTOFILL_ENABLE_GOOGLE_ISSUED_CARD = |
| "AutofillEnableGoogleIssuedCard"; |
| public static final String AUTOFILL_ENABLE_SURFACING_SERVER_CARD_NICKNAME = |
| "AutofillEnableSurfacingServerCardNickname"; |
| public static final String ADJUST_WEBAPK_INSTALLATION_SPACE = "AdjustWebApkInstallationSpace"; |
| public static final String ANDROID_DEFAULT_BROWSER_PROMO = "AndroidDefaultBrowserPromo"; |
| public static final String ANDROID_MULTIPLE_DISPLAY = "AndroidMultipleDisplay"; |
| public static final String ANDROID_NIGHT_MODE_TAB_REPARENTING = |
| "AndroidNightModeTabReparenting"; |
| public static final String ANDROID_PARTNER_CUSTOMIZATION_PHENOTYPE = |
| "AndroidPartnerCustomizationPhenotype"; |
| public static final String ANDROID_PAY_INTEGRATION_V2 = "AndroidPayIntegrationV2"; |
| public static final String ANDROID_SEARCH_ENGINE_CHOICE_NOTIFICATION = |
| "AndroidSearchEngineChoiceNotification"; |
| public static final String AUTOFILL_ASSISTANT = "AutofillAssistant"; |
| public static final String AUTOFILL_ASSISTANT_CHROME_ENTRY = "AutofillAssistantChromeEntry"; |
| public static final String AUTOFILL_ASSISTANT_DIRECT_ACTIONS = "AutofillAssistantDirectActions"; |
| public static final String AUTOFILL_MANUAL_FALLBACK_ANDROID = "AutofillManualFallbackAndroid"; |
| public static final String AUTOFILL_REFRESH_STYLE_ANDROID = "AutofillRefreshStyleAndroid"; |
| public static final String AUTOFILL_KEYBOARD_ACCESSORY = "AutofillKeyboardAccessory"; |
| public static final String BACKGROUND_TASK_SCHEDULER_FOR_BACKGROUND_SYNC = |
| "BackgroundTaskSchedulerForBackgroundSync"; |
| public static final String BIOMETRIC_TOUCH_TO_FILL = "BiometricTouchToFill"; |
| public static final String CAPTIVE_PORTAL_CERTIFICATE_LIST = "CaptivePortalCertificateList"; |
| public static final String CCT_BACKGROUND_TAB = "CCTBackgroundTab"; |
| public static final String CCT_CLIENT_DATA_HEADER = "CCTClientDataHeader"; |
| public static final String CCT_INCOGNITO = "CCTIncognito"; |
| public static final String CCT_EXTERNAL_LINK_HANDLING = "CCTExternalLinkHandling"; |
| public static final String CCT_POST_MESSAGE_API = "CCTPostMessageAPI"; |
| public static final String CCT_REDIRECT_PRECONNECT = "CCTRedirectPreconnect"; |
| public static final String CCT_RESOURCE_PREFETCH = "CCTResourcePrefetch"; |
| public static final String CCT_REPORT_PARALLEL_REQUEST_STATUS = |
| "CCTReportParallelRequestStatus"; |
| public static final String CCT_TARGET_TRANSLATE_LANGUAGE = "CCTTargetTranslateLanguage"; |
| public static final String CLOSE_TAB_SUGGESTIONS = "CloseTabSuggestions"; |
| public static final String CHROME_DUET = "ChromeDuet"; |
| public static final String CHROME_DUET_ADAPTIVE = "ChromeDuetAdaptive"; |
| public static final String DONT_AUTO_HIDE_BROWSER_CONTROLS = "DontAutoHideBrowserControls"; |
| public static final String CHROME_DUET_LABELED = "ChromeDuetLabeled"; |
| public static final String CHROME_SHARE_HIGHLIGHTS_ANDROID = "ChromeShareHighlightsAndroid"; |
| public static final String CHROME_SHARE_QRCODE = "ChromeShareQRCode"; |
| public static final String CHROME_SHARE_SCREENSHOT = "ChromeShareScreenshot"; |
| public static final String CHROME_SHARING_HUB = "ChromeSharingHub"; |
| public static final String CHROME_SHARING_HUB_V15 = "ChromeSharingHubV15"; |
| public static final String CHROME_SMART_SELECTION = "ChromeSmartSelection"; |
| public static final String CLEAR_OLD_BROWSING_DATA = "ClearOldBrowsingData"; |
| public static final String COMMAND_LINE_ON_NON_ROOTED = "CommandLineOnNonRooted"; |
| public static final String CONDITIONAL_TAB_STRIP_ANDROID = "ConditionalTabStripAndroid"; |
| public static final String CONTACTS_PICKER_SELECT_ALL = "ContactsPickerSelectAll"; |
| public static final String CONTENT_SUGGESTIONS_SCROLL_TO_LOAD = |
| "ContentSuggestionsScrollToLoad"; |
| public static final String CONTENT_INDEXING_NTP = "ContentIndexingNTP"; |
| public static final String CONTENT_INDEXING_DOWNLOAD_HOME = "ContentIndexingDownloadHome"; |
| public static final String CONTEXT_MENU_COPY_IMAGE = "ContextMenuCopyImage"; |
| public static final String CONTEXT_MENU_SEARCH_WITH_GOOGLE_LENS = |
| "ContextMenuSearchWithGoogleLens"; |
| public static final String CONTEXT_MENU_SHOP_WITH_GOOGLE_LENS = "ContextMenuShopWithGoogleLens"; |
| public static final String CONTEXT_MENU_SEARCH_AND_SHOP_WITH_GOOGLE_LENS = |
| "ContextMenuSearchAndShopWithGoogleLens"; |
| public static final String CONTEXTUAL_SEARCH_DEBUG = "ContextualSearchDebug"; |
| public static final String CONTEXTUAL_SEARCH_DEFINITIONS = "ContextualSearchDefinitions"; |
| public static final String CONTEXTUAL_SEARCH_ML_TAP_SUPPRESSION = |
| "ContextualSearchMlTapSuppression"; |
| public static final String CONTEXTUAL_SEARCH_LONGPRESS_RESOLVE = |
| "ContextualSearchLongpressResolve"; |
| public static final String CONTEXTUAL_SEARCH_SECOND_TAP = "ContextualSearchSecondTap"; |
| public static final String CONTEXTUAL_SEARCH_TAP_DISABLE_OVERRIDE = |
| "ContextualSearchTapDisableOverride"; |
| public static final String CONTEXTUAL_SEARCH_TRANSLATIONS = "ContextualSearchTranslations"; |
| public static final String COOKIES_WITHOUT_SAME_SITE_MUST_BE_SECURE = |
| "CookiesWithoutSameSiteMustBeSecure"; |
| public static final String DARKEN_WEBSITES_CHECKBOX_IN_THEMES_SETTING = |
| "DarkenWebsitesCheckboxInThemesSetting"; |
| public static final String DIRECT_ACTIONS = "DirectActions"; |
| public static final String DNS_OVER_HTTPS = "DnsOverHttps"; |
| public static final String DOWNLOAD_FILE_PROVIDER = "DownloadFileProvider"; |
| public static final String DOWNLOAD_NOTIFICATION_BADGE = "DownloadNotificationBadge"; |
| public static final String DOWNLOAD_PROGRESS_INFOBAR = "DownloadProgressInfoBar"; |
| public static final String DOWNLOADS_FOREGROUND = "DownloadsForeground"; |
| public static final String DOWNLOADS_AUTO_RESUMPTION_NATIVE = "DownloadsAutoResumptionNative"; |
| public static final String DOWNLOAD_OFFLINE_CONTENT_PROVIDER = |
| "UseDownloadOfflineContentProvider"; |
| public static final String DOWNLOADS_LOCATION_CHANGE = "DownloadsLocationChange"; |
| public static final String DOWNLOAD_LATER = "DownloadLater"; |
| public static final String DRAW_VERTICALLY_EDGE_TO_EDGE = "DrawVerticallyEdgeToEdge"; |
| public static final String DUET_TABSTRIP_INTEGRATION_ANDROID = "DuetTabStripIntegrationAndroid"; |
| public static final String EPHEMERAL_TAB_USING_BOTTOM_SHEET = "EphemeralTabUsingBottomSheet"; |
| public static final String EXPLICIT_LANGUAGE_ASK = "ExplicitLanguageAsk"; |
| public static final String EXPLORE_SITES = "ExploreSites"; |
| public static final String FOCUS_OMNIBOX_IN_INCOGNITO_TAB_INTENTS = |
| "FocusOmniboxInIncognitoTabIntents"; |
| public static final String GRANT_NOTIFICATIONS_TO_DSE = "GrantNotificationsToDSE"; |
| public static final String HANDLE_MEDIA_INTENTS = "HandleMediaIntents"; |
| public static final String HOMEPAGE_LOCATION_POLICY = "HomepageLocationPolicy"; |
| public static final String HOMEPAGE_PROMO_CARD = "HomepagePromoCard"; |
| public static final String HOMEPAGE_PROMO_SYNTHETIC_PROMO_SEEN_ENABLED = |
| "HomepagePromoSyntheticPromoSeenEnabled"; |
| public static final String HOMEPAGE_PROMO_SYNTHETIC_PROMO_SEEN_TRACKING = |
| "HomepagePromoSyntheticPromoSeenTracking"; |
| public static final String HOMEPAGE_SETTINGS_UI_CONVERSION = "HomepageSettingsUIConversion"; |
| public static final String HORIZONTAL_TAB_SWITCHER_ANDROID = "HorizontalTabSwitcherAndroid"; |
| public static final String IMMERSIVE_UI_MODE = "ImmersiveUiMode"; |
| public static final String INLINE_UPDATE_FLOW = "InlineUpdateFlow"; |
| public static final String INSTALLABLE_AMBIENT_BADGE_INFOBAR = "InstallableAmbientBadgeInfoBar"; |
| public static final String INSTANT_START = "InstantStart"; |
| public static final String INTEREST_FEED_CONTENT_SUGGESTIONS = "InterestFeedContentSuggestions"; |
| public static final String INTEREST_FEED_FEEDBACK = "InterestFeedFeedback"; |
| public static final String INTEREST_FEED_V2 = "InterestFeedV2"; |
| public static final String KITKAT_SUPPORTED = "KitKatSupported"; |
| public static final String LOOKALIKE_NAVIGATION_URL_SUGGESTIONS_UI = |
| "LookalikeUrlNavigationSuggestionsUI"; |
| public static final String SEARCH_ENGINE_PROMO_EXISTING_DEVICE = |
| "SearchEnginePromo.ExistingDevice"; |
| public static final String SEARCH_ENGINE_PROMO_NEW_DEVICE = "SearchEnginePromo.NewDevice"; |
| public static final String MARK_HTTP_AS = "MarkHttpAs"; |
| public static final String MOBILE_IDENTITY_CONSISTENCY = "MobileIdentityConsistency"; |
| public static final String MODAL_PERMISSION_PROMPTS = "ModalPermissionPrompts"; |
| public static final String MODAL_PERMISSION_DIALOG_VIEW = "ModalPermissionDialogView"; |
| public static final String NEW_PHOTO_PICKER = "NewPhotoPicker"; |
| public static final String NOTIFICATION_SUSPENDER = "NotificationSuspender"; |
| public static final String NTP_ARTICLE_SUGGESTIONS = "NTPArticleSuggestions"; |
| public static final String OFFLINE_INDICATOR = "OfflineIndicator"; |
| public static final String OFFLINE_INDICATOR_ALWAYS_HTTP_PROBE = |
| "OfflineIndicatorAlwaysHttpProbe"; |
| public static final String OFFLINE_INDICATOR_V2 = "OfflineIndicatorV2"; |
| public static final String OFFLINE_PAGES_DESCRIPTIVE_FAIL_STATUS = |
| "OfflinePagesDescriptiveFailStatus"; |
| public static final String OFFLINE_PAGES_DESCRIPTIVE_PENDING_STATUS = |
| "OfflinePagesDescriptivePendingStatus"; |
| public static final String OFFLINE_PAGES_LIVE_PAGE_SHARING = "OfflinePagesLivePageSharing"; |
| public static final String OFFLINE_PAGES_PREFETCHING = "OfflinePagesPrefetching"; |
| public static final String OMNIBOX_ADAPTIVE_SUGGESTIONS_COUNT = |
| "OmniboxAdaptiveSuggestionsCount"; |
| public static final String OMNIBOX_ASSISTANT_VOICE_SEARCH = "OmniboxAssistantVoiceSearch"; |
| public static final String OMNIBOX_COMPACT_SUGGESTIONS = "OmniboxCompactSuggestions"; |
| public static final String OMNIBOX_DEFERRED_KEYBOARD_POPUP = "OmniboxDeferredKeyboardPopup"; |
| public static final String OMNIBOX_ENABLE_CLIPBOARD_PROVIDER_IMAGE_SUGGESTIONS = |
| "OmniboxEnableClipboardProviderImageSuggestions"; |
| public static final String OMNIBOX_SEARCH_ENGINE_LOGO = "OmniboxSearchEngineLogo"; |
| public static final String OMNIBOX_SEARCH_READY_INCOGNITO = "OmniboxSearchReadyIncognito"; |
| public static final String OMNIBOX_SPARE_RENDERER = "OmniboxSpareRenderer"; |
| public static final String OMNIBOX_SUGGESTIONS_RECYCLER_VIEW = "OmniboxSuggestionsRecyclerView"; |
| public static final String OMNIBOX_SUGGESTIONS_WRAP_AROUND = "OmniboxSuggestionsWrapAround"; |
| public static final String OVERLAY_NEW_LAYOUT = "OverlayNewLayout"; |
| public static final String OVERSCROLL_HISTORY_NAVIGATION = "OverscrollHistoryNavigation"; |
| public static final String PAGE_INFO_PERFORMANCE_HINTS = "PageInfoPerformanceHints"; |
| public static final String PAINT_PREVIEW_CAPTURE_EXPERIMENT = "PaintPreviewCaptureExperiment"; |
| public static final String PAINT_PREVIEW_DEMO = "PaintPreviewDemo"; |
| public static final String PAINT_PREVIEW_SHOW_ON_STARTUP = "PaintPreviewShowOnStartup"; |
| public static final String PASSWORD_CHECK = "PasswordCheck"; |
| public static final String PASSWORD_EDITING_ANDROID = "PasswordEditingAndroid"; |
| public static final String PASSWORD_MANAGER_ONBOARDING_ANDROID = |
| "PasswordManagerOnboardingAndroid"; |
| public static final String PAY_WITH_GOOGLE_V1 = "PayWithGoogleV1"; |
| public static final String PERMISSION_DELEGATION = "PermissionDelegation"; |
| public static final String PER_METHOD_CAN_MAKE_PAYMENT_QUOTA = |
| "WebPaymentsPerMethodCanMakePaymentQuota"; |
| public static final String PHOTO_PICKER_VIDEO_SUPPORT = "PhotoPickerVideoSupport"; |
| public static final String PHOTO_PICKER_ZOOM = "PhotoPickerZoom"; |
| public static final String PORTALS = "Portals"; |
| public static final String PORTALS_CROSS_ORIGIN = "PortalsCrossOrigin"; |
| public static final String PREDICTIVE_PREFETCHING_ALLOWED_ON_ALL_CONNECTION_TYPES = |
| "PredictivePrefetchingAllowedOnAllConnectionTypes"; |
| public static final String PRIORITIZE_BOOTSTRAP_TASKS = "PrioritizeBootstrapTasks"; |
| public static final String PRIVACY_ELEVATED_ANDROID = "PrivacyElevatedAndroid"; |
| public static final String PROBABILISTIC_CRYPTID_RENDERER = "ProbabilisticCryptidRenderer"; |
| public static final String QUERY_TILES_GEO_FILTER = "QueryTilesGeoFilter"; |
| public static final String QUERY_TILES = "QueryTiles"; |
| public static final String QUERY_TILES_IN_OMNIBOX = "QueryTilesInOmnibox"; |
| public static final String QUERY_TILES_ENABLE_QUERY_EDITING = "QueryTilesEnableQueryEditing"; |
| public static final String QUIET_NOTIFICATION_PROMPTS = "QuietNotificationPrompts"; |
| public static final String REACHED_CODE_PROFILER = "ReachedCodeProfiler"; |
| public static final String READER_MODE_IN_CCT = "ReaderModeInCCT"; |
| public static final String RECOVER_FROM_NEVER_SAVE_ANDROID = "RecoverFromNeverSaveAndroid"; |
| public static final String REMOVE_NAVIGATION_HISTORY = "RemoveNavigationHistory"; |
| public static final String RELATED_SEARCHES = "RelatedSearches"; |
| public static final String REPORT_FEED_USER_ACTIONS = "ReportFeedUserActions"; |
| public static final String REVAMPED_CONTEXT_MENU = "RevampedContextMenu"; |
| public static final String SAFETY_CHECK_ANDROID = "SafetyCheckAndroid"; |
| public static final String SAFE_BROWSING_ENHANCED_PROTECTION_ENABLED = |
| "SafeBrowsingEnhancedProtection"; |
| public static final String SAFE_BROWSING_SECURITY_SECTION_UI = |
| "SafeBrowsingSecuritySectionUIAndroid"; |
| public static final String SAME_SITE_BY_DEFAULT_COOKIES = "SameSiteByDefaultCookies"; |
| public static final String SEND_TAB_TO_SELF = "SyncSendTabToSelf"; |
| public static final String SERVICE_MANAGER_FOR_DOWNLOAD = "ServiceManagerForDownload"; |
| public static final String SHARE_BUTTON_IN_TOP_TOOLBAR = "ShareButtonInTopToolbar"; |
| public static final String SHARED_CLIPBOARD_UI = "SharedClipboardUI"; |
| public static final String SHARING_QR_CODE_ANDROID = "SharingQrCodeAndroid"; |
| public static final String SHOW_TRUSTED_PUBLISHER_URL = "ShowTrustedPublisherURL"; |
| public static final String SPANNABLE_INLINE_AUTOCOMPLETE = "SpannableInlineAutocomplete"; |
| public static final String START_SURFACE_ANDROID = "StartSurfaceAndroid"; |
| public static final String SWAP_PIXEL_FORMAT_TO_FIX_CONVERT_FROM_TRANSLUCENT = |
| "SwapPixelFormatToFixConvertFromTranslucent"; |
| public static final String SYNC_USE_SESSIONS_UNREGISTER_DELAY = |
| "SyncUseSessionsUnregisterDelay"; |
| public static final String TAB_ENGAGEMENT_REPORTING_ANDROID = "TabEngagementReportingAndroid"; |
| public static final String TAB_GROUPS_ANDROID = "TabGroupsAndroid"; |
| public static final String TAB_GROUPS_UI_IMPROVEMENTS_ANDROID = |
| "TabGroupsUiImprovementsAndroid"; |
| public static final String TAB_GROUPS_CONTINUATION_ANDROID = "TabGroupsContinuationAndroid"; |
| public static final String TAB_GRID_LAYOUT_ANDROID = "TabGridLayoutAndroid"; |
| public static final String TAB_REPARENTING = "TabReparenting"; |
| public static final String TAB_SWITCHER_ON_RETURN = "TabSwitcherOnReturn"; |
| public static final String TAB_TO_GTS_ANIMATION = "TabToGTSAnimation"; |
| public static final String TEST_DEFAULT_DISABLED = "TestDefaultDisabled"; |
| public static final String TEST_DEFAULT_ENABLED = "TestDefaultEnabled"; |
| public static final String TOUCH_TO_FILL_ANDROID = "TouchToFillAndroid"; |
| public static final String TRUSTED_WEB_ACTIVITY = "TrustedWebActivity"; |
| public static final String TRUSTED_WEB_ACTIVITY_POST_MESSAGE = "TrustedWebActivityPostMessage"; |
| public static final String TRUSTED_WEB_ACTIVITY_NOTIFICATION_DELEGATION_ENROLMENT = |
| "TrustedWebActivityNotificationDelegationAutoEnrolment"; |
| public static final String TRUSTED_WEB_ACTIVITY_NEW_DISCLOSURE = |
| "TrustedWebActivityNewDisclosure"; |
| public static final String TRUSTED_WEB_ACTIVITY_LOCATION_DELEGATION = |
| "TrustedWebActivityLocationDelegation"; |
| public static final String VIDEO_PERSISTENCE = "VideoPersistence"; |
| public static final String USAGE_STATS = "UsageStats"; |
| public static final String VR_BROWSING_FEEDBACK = "VrBrowsingFeedback"; |
| public static final String WEBAPK_ADAPTIVE_ICON = "WebApkAdaptiveIcon"; |
| public static final String WEB_AUTH = "WebAuthentication"; |
| public static final String WEB_AUTH_PHONE_SUPPORT = "WebAuthenticationPhoneSupport"; |
| public static final String SERVICE_MANAGER_FOR_BACKGROUND_PREFETCH = |
| "ServiceManagerForBackgroundPrefetch"; |
| public static final String SPLIT_CACHE_BY_NETWORK_ISOLATION_KEY = |
| "SplitCacheByNetworkIsolationKey"; |
| public static final String UPDATE_NOTIFICATION_SCHEDULING_INTEGRATION = |
| "UpdateNotificationSchedulingIntegration"; |
| public static final String UPDATE_NOTIFICATION_IMMEDIATE_SHOW_OPTION = |
| "UpdateNotificationScheduleServiceImmediateShowOption"; |
| public static final String PREFETCH_NOTIFICATION_SCHEDULING_INTEGRATION = |
| "PrefetchNotificationSchedulingIntegration"; |
| |
| @NativeMethods |
| interface Natives { |
| boolean isEnabled(String featureName); |
| String getFieldTrialParamByFeature(String featureName, String paramName); |
| int getFieldTrialParamByFeatureAsInt( |
| String featureName, String paramName, int defaultValue); |
| double getFieldTrialParamByFeatureAsDouble( |
| String featureName, String paramName, double defaultValue); |
| boolean getFieldTrialParamByFeatureAsBoolean( |
| String featureName, String paramName, boolean defaultValue); |
| } |
| } |