blob: 97a26d0954782edea43126f5e65a81f2ca39ee8a [file] [log] [blame]
// Copyright 2025 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/intelligence/features/features.h"
#import "base/check.h"
#import "base/metrics/field_trial_params.h"
#import "base/time/time.h"
#import "ios/chrome/browser/shared/public/features/features.h"
BASE_FEATURE(kEnhancedCalendar, base::FEATURE_DISABLED_BY_DEFAULT);
bool IsEnhancedCalendarEnabled() {
return base::FeatureList::IsEnabled(kEnhancedCalendar);
}
BASE_FEATURE(kPageActionMenu, base::FEATURE_DISABLED_BY_DEFAULT);
const char kPageActionMenuDirectEntryPointParam[] =
"PageActionMenuDirectEntryPoint";
bool IsPageActionMenuEnabled() {
if (IsDiamondPrototypeEnabled()) {
return true;
}
return base::FeatureList::IsEnabled(kPageActionMenu);
}
BASE_FEATURE(kProactiveSuggestionsFramework, base::FEATURE_DISABLED_BY_DEFAULT);
bool IsProactiveSuggestionsFrameworkEnabled() {
return base::FeatureList::IsEnabled(kProactiveSuggestionsFramework);
}
BASE_FEATURE(kAskGeminiChip, base::FEATURE_DISABLED_BY_DEFAULT);
bool IsAskGeminiChipEnabled() {
return base::FeatureList::IsEnabled(kAskGeminiChip);
}
BASE_FEATURE(kGeminiCrossTab, base::FEATURE_DISABLED_BY_DEFAULT);
bool IsGeminiCrossTabEnabled() {
if (!IsPageActionMenuEnabled()) {
return false;
}
return base::FeatureList::IsEnabled(kGeminiCrossTab);
}
bool IsDirectBWGEntryPoint() {
CHECK(IsPageActionMenuEnabled());
return base::GetFieldTrialParamByFeatureAsBool(
kPageActionMenu, kPageActionMenuDirectEntryPointParam, false);
}
const char kBWGSessionValidityDurationParam[] = "BWGSessionValidityDuration";
const base::TimeDelta BWGSessionValidityDuration() {
return base::Minutes(base::GetFieldTrialParamByFeatureAsInt(
kPageActionMenu, kBWGSessionValidityDurationParam, 30));
}
const char kBWGPromoConsentParams[] = "BWGPromoConsentVariations";
BWGPromoConsentVariations BWGPromoConsentVariationsParam() {
int param = base::GetFieldTrialParamByFeatureAsInt(kBWGPromoConsent,
kBWGPromoConsentParams, 0);
if (!IsPageActionMenuEnabled()) {
return BWGPromoConsentVariations::kDisabled;
}
if (param == 1) {
return BWGPromoConsentVariations::kSinglePage;
}
if (param == 2) {
return BWGPromoConsentVariations::kDoublePage;
}
if (param == 3) {
return BWGPromoConsentVariations::kSkipConsent;
}
if (param == 4) {
return BWGPromoConsentVariations::kForceFRE;
}
if (param == 5) {
return BWGPromoConsentVariations::kSkipNewUserDelay;
}
return BWGPromoConsentVariations::kDisabled;
}
bool ShouldForceBWGPromo() {
return BWGPromoConsentVariationsParam() ==
BWGPromoConsentVariations::kForceFRE;
}
bool ShouldSkipBWGPromoNewUserDelay() {
return BWGPromoConsentVariationsParam() ==
BWGPromoConsentVariations::kSkipNewUserDelay;
}
BASE_FEATURE(kBWGPromoConsent, base::FEATURE_DISABLED_BY_DEFAULT);
const char kExplainGeminiEditMenuParams[] = "PositionForExplainGeminiEditMenu";
PositionForExplainGeminiEditMenu ExplainGeminiEditMenuPosition() {
int param = base::GetFieldTrialParamByFeatureAsInt(
kExplainGeminiEditMenu, kExplainGeminiEditMenuParams, 0);
if (param == 1) {
return PositionForExplainGeminiEditMenu::kAfterEdit;
}
if (param == 2) {
return PositionForExplainGeminiEditMenu::kAfterSearch;
}
return PositionForExplainGeminiEditMenu::kDisabled;
}
BASE_FEATURE(kExplainGeminiEditMenu, base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kBWGPreciseLocation, base::FEATURE_DISABLED_BY_DEFAULT);
bool IsBWGPreciseLocationEnabled() {
CHECK(IsPageActionMenuEnabled());
return base::FeatureList::IsEnabled(kBWGPreciseLocation);
}
BASE_FEATURE(kPageContextAnchorTags, base::FEATURE_DISABLED_BY_DEFAULT);
bool IsPageContextAnchorTagsEnabled() {
return base::FeatureList::IsEnabled(kPageContextAnchorTags);
}
BASE_FEATURE(kGeminiForManagedAccounts, base::FEATURE_DISABLED_BY_DEFAULT);
bool IsGeminiAvailableForManagedAccounts() {
return base::FeatureList::IsEnabled(kGeminiForManagedAccounts);
}
BASE_FEATURE(kAIHubNewBadge, base::FEATURE_DISABLED_BY_DEFAULT);
bool ShouldDeleteGeminiConsentPref() {
return base::FeatureList::IsEnabled(kDeleteGeminiConsentPref);
}
BASE_FEATURE(kDeleteGeminiConsentPref, base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kSmartTabGrouping, base::FEATURE_DISABLED_BY_DEFAULT);
bool IsSmartTabGroupingEnabled() {
return base::FeatureList::IsEnabled(kSmartTabGrouping);
}
BASE_FEATURE(kPersistTabContext, base::FEATURE_DISABLED_BY_DEFAULT);
bool IsPersistTabContextEnabled() {
if (IsSmartTabGroupingEnabled()) {
return true;
}
return base::FeatureList::IsEnabled(kPersistTabContext);
}
BASE_FEATURE(kGeminiNavigationPromo, base::FEATURE_DISABLED_BY_DEFAULT);
bool IsGeminiNavigationPromoEnabled() {
if (!IsPageActionMenuEnabled()) {
return false;
}
return base::FeatureList::IsEnabled(kGeminiNavigationPromo);
}