blob: 68a743c80233bb040906655ef3de065c0564b1ea [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.
#import "ios/chrome/browser/shared/public/features/features.h"
#import "ui/base/device_form_factor.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
BASE_FEATURE(kDefaultBrowserBlueDotPromo,
"DefaultBrowserBlueDotPromo",
base::FEATURE_ENABLED_BY_DEFAULT);
constexpr base::FeatureParam<BlueDotPromoUserGroup>::Option
kBlueDotPromoUserGroupOptions[] = {
{BlueDotPromoUserGroup::kAllDBPromosDisabled, "all-db-promos-disabled"},
{BlueDotPromoUserGroup::kAllDBPromosEnabled, "all-db-promos-enabled"},
{BlueDotPromoUserGroup::kOnlyBlueDotPromoEnabled,
"only-blue-dot-promo-enabled"}};
constexpr base::FeatureParam<BlueDotPromoUserGroup> kBlueDotPromoUserGroupParam{
&kDefaultBrowserBlueDotPromo, "user-group",
BlueDotPromoUserGroup::kAllDBPromosEnabled, &kBlueDotPromoUserGroupOptions};
BASE_FEATURE(kIOSPaymentsBottomSheet,
"IOSPaymentsBottomSheet",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kExpandedTabStrip,
"ExpandedTabStrip",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kTestFeature, "TestFeature", base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kSharedHighlightingIOS,
"SharedHighlightingIOS",
base::FEATURE_ENABLED_BY_DEFAULT);
// TODO(crbug.com/1128242): Remove this flag after the refactoring work is
// finished.
BASE_FEATURE(kModernTabStrip,
"ModernTabStrip",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kIncognitoNtpRevamp,
"IncognitoNtpRevamp",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kDefaultBrowserIntentsShowSettings,
"DefaultBrowserIntentsShowSettings",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kIOSBrowserEditMenuMetrics,
"IOSBrowserEditMenuMetrics",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kDefaultBrowserRefactoringPromoManager,
"DefaultBrowserRefactoringPromoManager",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kDefaultBrowserVideoPromo,
"DefaultBrowserVideoPromo",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kIOSCustomBrowserEditMenu,
"IOSCustomBrowserEditMenu",
base::FEATURE_ENABLED_BY_DEFAULT);
const char kIOSEditMenuPartialTranslateNoIncognitoParam[] =
"IOSEditMenuPartialTranslateNoIncognitoParam";
BASE_FEATURE(kIOSEditMenuPartialTranslate,
"IOSEditMenuPartialTranslate",
base::FEATURE_ENABLED_BY_DEFAULT);
bool IsPartialTranslateEnabled() {
if (@available(iOS 16, *)) {
return base::FeatureList::IsEnabled(kIOSEditMenuPartialTranslate);
}
return false;
}
bool ShouldShowPartialTranslateInIncognito() {
if (!IsPartialTranslateEnabled()) {
return false;
}
return !base::GetFieldTrialParamByFeatureAsBool(
kIOSEditMenuPartialTranslate,
kIOSEditMenuPartialTranslateNoIncognitoParam, true);
}
const char kIOSEditMenuSearchWithTitleParamTitle[] =
"IOSEditMenuSearchWithTitleParam";
const char kIOSEditMenuSearchWithTitleSearchParam[] = "Search";
const char kIOSEditMenuSearchWithTitleSearchWithParam[] = "SearchWith";
const char kIOSEditMenuSearchWithTitleWebSearchParam[] = "WebSearch";
BASE_FEATURE(kIOSEditMenuSearchWith,
"IOSEditMenuSearchWith",
base::FEATURE_DISABLED_BY_DEFAULT);
bool IsSearchWithEnabled() {
if (@available(iOS 16, *)) {
return base::FeatureList::IsEnabled(kIOSEditMenuSearchWith) &&
base::FeatureList::IsEnabled(kIOSCustomBrowserEditMenu);
}
return false;
}
BASE_FEATURE(kIOSEditMenuHideSearchWeb,
"IOSEditMenuHideSearchWeb",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kIOSNewOmniboxImplementation,
"kIOSNewOmniboxImplementation",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kIOSLocationBarUseNativeContextMenu,
"IOSLocationBarUseNativeContextMenu",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kEnableLensInHomeScreenWidget,
"EnableLensInHomeScreenWidget",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kEnableLensInKeyboard,
"EnableLensInKeyboard",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kEnableLensInNTP,
"EnableLensInNTP",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kEnableLensContextMenuAltText,
"EnableLensContextMenuAltText",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kEnableLensInOmniboxCopiedImage,
"EnableLensInOmniboxCopiedImage",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kEnableUIButtonConfiguration,
"EnableUIButtonConfiguration",
base::FEATURE_DISABLED_BY_DEFAULT);
bool IsUIButtonConfigurationEnabled() {
return base::FeatureList::IsEnabled(kEnableUIButtonConfiguration);
}
BASE_FEATURE(kRemoveExcessNTPs,
"RemoveExcessNTPs",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kEnableShortenedPasswordAutoFillInstruction,
"EnableShortenedPasswordAutoFillInstruction",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kSFSymbolsFollowUp,
"SFSymbolsFollowUp",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kEnableExpKitAppleCalendar,
"EnableExpKitAppleCalendar",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kTabGridRecencySort,
"TabGridRecencySort",
base::FEATURE_DISABLED_BY_DEFAULT);
bool IsTabGridSortedByRecency() {
if (ui::GetDeviceFormFactor() == ui::DEVICE_FORM_FACTOR_TABLET) {
return false;
}
return base::FeatureList::IsEnabled(kTabGridRecencySort);
}
BASE_FEATURE(kTabGridNewTransitions,
"TabGridNewTransitions",
base::FEATURE_DISABLED_BY_DEFAULT);
bool IsNewTabGridTransitionsEnabled() {
return base::FeatureList::IsEnabled(kTabGridNewTransitions);
}
BASE_FEATURE(kMultilineFadeTruncatingLabel,
"MultilineFadeTruncatingLabel",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kNotificationSettingsMenuItem,
"NotificationSettingsMenuItem",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kSpotlightOpenTabsSource,
"SpotlightOpenTabsSource",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kSpotlightReadingListSource,
"SpotlightReadingListSource",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kConsistencyNewAccountInterface,
"ConsistencyNewAccountInterface",
base::FEATURE_DISABLED_BY_DEFAULT);
bool IsConsistencyNewAccountInterfaceEnabled() {
return base::FeatureList::IsEnabled(kConsistencyNewAccountInterface);
}
BASE_FEATURE(kAddToHomeScreen,
"AddToHomeScreen",
base::FEATURE_ENABLED_BY_DEFAULT);
const char kAddToHomeScreenDisableIncognitoParam[] =
"AddToHomeScreenDisableIncognitoParam";
bool ShouldAddToHomeScreen(bool in_incognito) {
if (!base::FeatureList::IsEnabled(kAddToHomeScreen)) {
return false;
}
if (!in_incognito) {
return true;
}
return !base::GetFieldTrialParamByFeatureAsBool(
kAddToHomeScreen, kAddToHomeScreenDisableIncognitoParam, true);
}
BASE_FEATURE(kNewNTPOmniboxLayout,
"kNewNTPOmniboxLayout",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kEnableEmailInBookmarksReadingListSnackbar,
"EnableEmailInBookmarksReadingListSnackbar",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kIndicateSyncErrorInOverflowMenu,
"IndicateSyncErrorInOverflowMenu",
base::FEATURE_ENABLED_BY_DEFAULT);
bool IsIndicateSyncErrorInOverflowMenuEnabled() {
return base::FeatureList::IsEnabled(kIndicateSyncErrorInOverflowMenu);
}
BASE_FEATURE(kBottomOmniboxSteadyState,
"BottomOmniboxSteadyState",
base::FEATURE_DISABLED_BY_DEFAULT);
bool IsBottomOmniboxSteadyStateEnabled() {
// Bottom omnibox is only available on phones.
if (ui::GetDeviceFormFactor() != ui::DEVICE_FORM_FACTOR_PHONE) {
return false;
}
return base::FeatureList::IsEnabled(kBottomOmniboxSteadyState);
}
BASE_FEATURE(kOnlyAccessClipboardAsync,
"OnlyAccessClipboardAsync",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kHideSettingsSyncPromo,
"HideSettingsSyncPromo",
base::FEATURE_DISABLED_BY_DEFAULT);