blob: dfa49e9b23209d220273314ea9b5946ce5e20171 [file] [log] [blame]
// Copyright 2018 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.
#include "components/unified_consent/feature.h"
#include "base/feature_list.h"
#include "base/metrics/field_trial_params.h"
#include "components/sync/driver/sync_driver_switches.h"
namespace unified_consent {
// base::Feature definitions.
const base::Feature kUnifiedConsent{"UnifiedConsent",
base::FEATURE_DISABLED_BY_DEFAULT};
const char kUnifiedConsentShowBumpParameter[] = "show_consent_bump";
const base::Feature kForceUnifiedConsentBump{"ForceUnifiedConsentBump",
base::FEATURE_DISABLED_BY_DEFAULT};
namespace {
UnifiedConsentFeatureState GetUnifiedConsentFeatureState() {
// Unified consent requires user consent to be recorded via its own
// sync model type.The reason is that when unified consent is enabled,
// |USER_EVENTS| sync model type is configurable and the user may disable it.
// Chromium needs to continue to record user consent even if the user
// manually disables |USER_EVENTS|.
if (!base::FeatureList::IsEnabled(switches::kSyncUserConsentSeparateType))
return UnifiedConsentFeatureState::kDisabled;
if (!base::FeatureList::IsEnabled(kUnifiedConsent))
return UnifiedConsentFeatureState::kDisabled;
std::string show_bump = base::GetFieldTrialParamValueByFeature(
kUnifiedConsent, kUnifiedConsentShowBumpParameter);
return show_bump.empty() ? UnifiedConsentFeatureState::kEnabledNoBump
: UnifiedConsentFeatureState::kEnabledWithBump;
}
} // namespace
bool IsUnifiedConsentFeatureEnabled() {
return GetUnifiedConsentFeatureState() !=
UnifiedConsentFeatureState::kDisabled;
}
bool IsUnifiedConsentFeatureWithBumpEnabled() {
return GetUnifiedConsentFeatureState() ==
UnifiedConsentFeatureState::kEnabledWithBump;
}
} // namespace unified_consent