blob: bbb93d5c17041673d2d5be217271755cf6652e77 [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/user_education/common/user_education_features.h"
#include "base/command_line.h"
#include "base/feature_list.h"
#include "base/metrics/field_trial_params.h"
#include "base/time/time.h"
namespace user_education::features {
namespace {
inline constexpr base::TimeDelta kDefaultMinimumValidSessionLength =
base::Minutes(2);
inline constexpr base::TimeDelta kDefaultIdleTimeBetweenSessions =
base::Hours(4);
inline constexpr base::TimeDelta kDefaultSessionStartGracePeriod =
base::Minutes(10);
inline constexpr base::TimeDelta kDefaultNewProfileGracePeriod = base::Days(7);
inline constexpr base::TimeDelta kDefaultLowPriorityCooldown = base::Days(8);
inline constexpr base::TimeDelta kDefaultSnoozeDuration = base::Days(7);
inline constexpr base::TimeDelta kDefaultAbortCooldown = base::Hours(4);
inline constexpr int kDefaultMaxSnoozeCount = 3;
inline constexpr int kDefaultMaxPromoShowCount = 3;
inline constexpr int kDefaultNewBadgeShowCount = 10;
inline constexpr int kDefaultNewBadgeFeatureUsedCount = 2;
inline constexpr base::TimeDelta kDefaultNewBadgeDisplayWindow = base::Days(60);
inline constexpr char kHighPriorityTimeout[] = "high_priority_timeout";
inline constexpr base::TimeDelta kDefaultHighPriorityTimeout =
base::Seconds(15);
inline constexpr char kMediumPriorityTimeout[] = "medium_priority_timeout";
inline constexpr base::TimeDelta kDefaultMediumPriorityTimeout =
base::Seconds(20);
inline constexpr char kLowPriorityTimeout[] = "low_priority_timeout";
inline constexpr base::TimeDelta kDefaultLowPriorityTimeout = base::Seconds(30);
inline constexpr char kIdleTimeBeforeHeavyweight[] = "idle_before_heavyweight";
inline constexpr base::TimeDelta kDefaultIdleTimeBeforeHeavyweight =
base::Seconds(5);
inline constexpr char kPollingInterval[] = "polling_interval";
inline constexpr base::TimeDelta kDefaultPollingInterval =
base::Milliseconds(500);
} // namespace
BASE_FEATURE(kUserEducationExperienceVersion2Point5,
"UserEducationExperienceVersion2Point5",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kNewBadgeTestFeature,
"NewBadgeTestFeature",
base::FEATURE_DISABLED_BY_DEFAULT);
bool IsUserEducationV25() {
return base::FeatureList::IsEnabled(kUserEducationExperienceVersion2Point5);
}
bool IsRateLimitingDisabled() {
return base::CommandLine::ForCurrentProcess()->HasSwitch(
kDisableRateLimitingCommandLine);
}
base::TimeDelta GetMinimumValidSessionLength() {
return kDefaultMinimumValidSessionLength;
}
base::TimeDelta GetIdleTimeBetweenSessions() {
return kDefaultIdleTimeBetweenSessions;
}
base::TimeDelta GetSessionStartGracePeriod() {
if (IsRateLimitingDisabled()) {
return base::TimeDelta();
}
return kDefaultSessionStartGracePeriod;
}
base::TimeDelta GetLowPriorityCooldown() {
if (IsRateLimitingDisabled()) {
return base::TimeDelta();
}
return kDefaultLowPriorityCooldown;
}
base::TimeDelta GetNewProfileGracePeriod() {
if (IsRateLimitingDisabled()) {
return base::TimeDelta();
}
return kDefaultNewProfileGracePeriod;
}
base::TimeDelta GetSnoozeDuration() {
return kDefaultSnoozeDuration;
}
base::TimeDelta GetAbortCooldown() {
return kDefaultAbortCooldown;
}
int GetMaxSnoozeCount() {
return kDefaultMaxSnoozeCount;
}
int GetMaxPromoShowCount() {
return kDefaultMaxPromoShowCount;
}
int GetNewBadgeShowCount() {
return kDefaultNewBadgeShowCount;
}
int GetNewBadgeFeatureUsedCount() {
return kDefaultNewBadgeFeatureUsedCount;
}
base::TimeDelta GetNewBadgeDisplayWindow() {
return kDefaultNewBadgeDisplayWindow;
}
base::TimeDelta GetHighPriorityTimeout() {
return base::GetFieldTrialParamByFeatureAsTimeDelta(
kUserEducationExperienceVersion2Point5, kHighPriorityTimeout,
kDefaultHighPriorityTimeout);
}
base::TimeDelta GetMediumPriorityTimeout() {
return base::GetFieldTrialParamByFeatureAsTimeDelta(
kUserEducationExperienceVersion2Point5, kMediumPriorityTimeout,
kDefaultMediumPriorityTimeout);
}
base::TimeDelta GetLowPriorityTimeout() {
return base::GetFieldTrialParamByFeatureAsTimeDelta(
kUserEducationExperienceVersion2Point5, kLowPriorityTimeout,
kDefaultLowPriorityTimeout);
}
base::TimeDelta GetIdleTimeBeforeHeavyweightPromo() {
return base::GetFieldTrialParamByFeatureAsTimeDelta(
kUserEducationExperienceVersion2Point5, kIdleTimeBeforeHeavyweight,
kDefaultIdleTimeBeforeHeavyweight);
}
base::TimeDelta GetPromoControllerPollingInterval() {
return base::GetFieldTrialParamByFeatureAsTimeDelta(
kUserEducationExperienceVersion2Point5, kPollingInterval,
kDefaultPollingInterval);
}
} // namespace user_education::features