diff options
Diffstat (limited to 'chromium/components/unified_consent/feature.cc')
-rw-r--r-- | chromium/components/unified_consent/feature.cc | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/chromium/components/unified_consent/feature.cc b/chromium/components/unified_consent/feature.cc new file mode 100644 index 00000000000..b9c1feb616c --- /dev/null +++ b/chromium/components/unified_consent/feature.cc @@ -0,0 +1,38 @@ +// 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"; + +namespace internal { +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 internal + +} // namespace unified_consent |