blob: 3c8d6a9096020466703acde2a3450f38ffdc9446 [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/reader_mode/model/features.h"
#import "base/feature_list.h"
#import "base/json/values_util.h"
#import "base/metrics/field_trial_params.h"
#import "ios/chrome/browser/reader_mode/model/constants.h"
#import "ios/chrome/browser/shared/model/application_context/application_context.h"
#import "ios/chrome/browser/shared/public/features/features.h"
#import "ios/chrome/browser/shared/public/features/system_flags.h"
namespace {
// The default number of days to span for determining Reading Mode default
// browser eligibility.
constexpr int kReaderModeDefaultBrowserPromoNumDaysCriteria = 14;
// The default number of days a user should be active to display the default
// browser promo.
constexpr int kReaderModeDefaultBrowserPromoActiveDaysCriteria = 2;
// Name to configure the number of days a user should be active in Reading Mode
// to display a default browser promo.
const char kReaderModeDefaultBrowserActiveDaysCriteriaStringName[] =
"reader-mode-default-browser-active-days";
// Name to configure the number of days to span for determining the Reading Mode
// default browser eligibility criteria.
const char kReaderModeDefaultBrowserNumDaysCriteriaStringName[] =
"reader-mode-default-browser-num-days";
} // namespace
BASE_FEATURE(kEnableReaderMode, base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kEnableReaderModeOmniboxEntryPoint,
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kEnableReaderModeTranslation, base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kEnableReadabilityHeuristic, base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kEnableReaderModePageEligibilityForToolsMenu,
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kEnableReaderModeDebugInfo, base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kEnableReaderModeDefaultBrowserPromo,
base::FEATURE_DISABLED_BY_DEFAULT);
const char kReaderModeHeuristicPageLoadDelayDurationStringName[] =
"reader-mode-heuristic-page-load-delay-duration-string";
const char kReaderModeDistillationTimeoutDurationStringName[] =
"reader-mode-distillation-timeout-duration-string";
const base::TimeDelta ReaderModeDistillationTimeout() {
return base::GetFieldTrialParamByFeatureAsTimeDelta(
kEnableReaderMode,
/*name=*/kReaderModeDistillationTimeoutDurationStringName,
/*default_value=*/kReaderModeDistillationTimeout);
}
const base::TimeDelta ReaderModeHeuristicPageLoadDelay() {
return base::GetFieldTrialParamByFeatureAsTimeDelta(
kEnableReaderMode,
/*name=*/kReaderModeHeuristicPageLoadDelayDurationStringName,
/*default_value=*/kReaderModeHeuristicPageLoadDelay);
}
bool IsReaderModeAvailable() {
if (IsDiamondPrototypeEnabled()) {
return true;
}
return base::FeatureList::IsEnabled(kEnableReaderMode);
}
bool IsReaderModeOmniboxEntryPointEnabled() {
return base::FeatureList::IsEnabled(kEnableReaderModeOmniboxEntryPoint);
}
bool IsReaderModeSnackbarEnabled() {
return base::FeatureList::IsEnabled(kEnableReaderModeDebugInfo);
}
int ReaderModeDefaultBrowserActiveDaysCriteria() {
return base::GetFieldTrialParamByFeatureAsInt(
kEnableReaderModeDefaultBrowserPromo,
/*name=*/kReaderModeDefaultBrowserActiveDaysCriteriaStringName,
/*default_value=*/kReaderModeDefaultBrowserPromoActiveDaysCriteria);
}
int ReaderModeDefaultBrowserNumDaysCriteria() {
return base::GetFieldTrialParamByFeatureAsInt(
kEnableReaderModeDefaultBrowserPromo,
/*name=*/kReaderModeDefaultBrowserNumDaysCriteriaStringName,
/*default_value=*/kReaderModeDefaultBrowserPromoNumDaysCriteria);
}