blob: dfa49e9b23209d220273314ea9b5946ce5e20171 [file] [log] [blame]
Mihai Sardarescu160ec662018-07-18 21:13:511// Copyright 2018 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "components/unified_consent/feature.h"
6
7#include "base/feature_list.h"
8#include "base/metrics/field_trial_params.h"
9#include "components/sync/driver/sync_driver_switches.h"
10
11namespace unified_consent {
12
13// base::Feature definitions.
14const base::Feature kUnifiedConsent{"UnifiedConsent",
15 base::FEATURE_DISABLED_BY_DEFAULT};
16const char kUnifiedConsentShowBumpParameter[] = "show_consent_bump";
Jérôme Lebelfe1b2e02018-08-03 12:26:2017const base::Feature kForceUnifiedConsentBump{"ForceUnifiedConsentBump",
18 base::FEATURE_DISABLED_BY_DEFAULT};
Mihai Sardarescu160ec662018-07-18 21:13:5119
Mihai Sardarescu29a8cd82018-09-05 16:52:2020namespace {
Mihai Sardarescu160ec662018-07-18 21:13:5121UnifiedConsentFeatureState GetUnifiedConsentFeatureState() {
22 // Unified consent requires user consent to be recorded via its own
23 // sync model type.The reason is that when unified consent is enabled,
24 // |USER_EVENTS| sync model type is configurable and the user may disable it.
25 // Chromium needs to continue to record user consent even if the user
26 // manually disables |USER_EVENTS|.
27 if (!base::FeatureList::IsEnabled(switches::kSyncUserConsentSeparateType))
28 return UnifiedConsentFeatureState::kDisabled;
29
30 if (!base::FeatureList::IsEnabled(kUnifiedConsent))
31 return UnifiedConsentFeatureState::kDisabled;
32
33 std::string show_bump = base::GetFieldTrialParamValueByFeature(
34 kUnifiedConsent, kUnifiedConsentShowBumpParameter);
35 return show_bump.empty() ? UnifiedConsentFeatureState::kEnabledNoBump
36 : UnifiedConsentFeatureState::kEnabledWithBump;
37}
Mihai Sardarescu29a8cd82018-09-05 16:52:2038} // namespace
39
40bool IsUnifiedConsentFeatureEnabled() {
41 return GetUnifiedConsentFeatureState() !=
42 UnifiedConsentFeatureState::kDisabled;
43}
44
45bool IsUnifiedConsentFeatureWithBumpEnabled() {
46 return GetUnifiedConsentFeatureState() ==
47 UnifiedConsentFeatureState::kEnabledWithBump;
48}
Mihai Sardarescu160ec662018-07-18 21:13:5149
50} // namespace unified_consent