1 // 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 "chromeos/services/assistant/public/cpp/features.h"
6 #include "chromeos/constants/chromeos_features.h"
7 
8 #include "base/feature_list.h"
9 
10 namespace chromeos {
11 namespace assistant {
12 namespace features {
13 
14 const base::Feature kAssistantAudioEraser{"AssistantAudioEraser",
15                                           base::FEATURE_DISABLED_BY_DEFAULT};
16 
17 const base::Feature kAssistantAppSupport{"AssistantAppSupport",
18                                          base::FEATURE_ENABLED_BY_DEFAULT};
19 
20 const base::Feature kAssistantBetterOnboarding{
21     "AssistantBetterOnboarding", base::FEATURE_ENABLED_BY_DEFAULT};
22 
23 const base::Feature kAssistantConversationStartersV2{
24     "AssistantConversationStartersV2", base::FEATURE_DISABLED_BY_DEFAULT};
25 
26 const base::Feature kAssistantDebugging{"AssistantDebugging",
27                                         base::FEATURE_DISABLED_BY_DEFAULT};
28 
29 const base::Feature kAssistantLauncherChipIntegration{
30     "AssistantLauncherChipIntegration", base::FEATURE_DISABLED_BY_DEFAULT};
31 
32 const base::Feature kAssistantResponseProcessingV2{
33     "AssistantResponseProcessingV2", base::FEATURE_ENABLED_BY_DEFAULT};
34 
35 const base::Feature kAssistantRoutines{"AssistantRoutines",
36                                        base::FEATURE_DISABLED_BY_DEFAULT};
37 
38 const base::Feature kAssistantTimersV2{"AssistantTimersV2",
39                                        base::FEATURE_ENABLED_BY_DEFAULT};
40 
41 const base::Feature kAssistantWaitScheduling{"AssistantWaitScheduling",
42                                              base::FEATURE_ENABLED_BY_DEFAULT};
43 
44 const base::Feature kEnableBetterAssistant{"EnableBetterAssistant",
45                                            base::FEATURE_DISABLED_BY_DEFAULT};
46 
47 const base::Feature kEnableBloom{"EnableBloom",
48                                  base::FEATURE_DISABLED_BY_DEFAULT};
49 
50 const base::Feature kEnableAmbientAssistant{"EnableAmbientAssistant",
51                                             base::FEATURE_DISABLED_BY_DEFAULT};
52 
53 const base::Feature kEnableDspHotword{"EnableDspHotword",
54                                       base::FEATURE_DISABLED_BY_DEFAULT};
55 
56 const base::Feature kEnableStereoAudioInput{"AssistantEnableStereoAudioInput",
57                                             base::FEATURE_DISABLED_BY_DEFAULT};
58 
59 const base::Feature kEnablePowerManager{"ChromeOSAssistantEnablePowerManager",
60                                         base::FEATURE_DISABLED_BY_DEFAULT};
61 
62 const base::Feature kEnableOnDeviceAssistant{"OnDeviceAssistant",
63                                              base::FEATURE_DISABLED_BY_DEFAULT};
64 
65 const base::Feature kEnableLibAssistantBetaBackend{
66     "LibAssistantBetaBackend", base::FEATURE_DISABLED_BY_DEFAULT};
67 
68 const base::Feature kEnableMediaSessionIntegration{
69     "AssistantEnableMediaSessionIntegration", base::FEATURE_ENABLED_BY_DEFAULT};
70 
71 // Disable voice match for test purpose.
72 const base::Feature kDisableVoiceMatch{"DisableVoiceMatch",
73                                        base::FEATURE_DISABLED_BY_DEFAULT};
74 
IsAmbientAssistantEnabled()75 bool IsAmbientAssistantEnabled() {
76   return chromeos::features::IsAmbientModeEnabled() &&
77          base::FeatureList::IsEnabled(
78              assistant::features::kEnableAmbientAssistant);
79 }
80 
IsAppSupportEnabled()81 bool IsAppSupportEnabled() {
82   return base::FeatureList::IsEnabled(
83       assistant::features::kAssistantAppSupport);
84 }
85 
IsAudioEraserEnabled()86 bool IsAudioEraserEnabled() {
87   return base::FeatureList::IsEnabled(kAssistantAudioEraser);
88 }
89 
IsBetterAssistantEnabled()90 bool IsBetterAssistantEnabled() {
91   return base::FeatureList::IsEnabled(kEnableBetterAssistant);
92 }
93 
IsBetterOnboardingEnabled()94 bool IsBetterOnboardingEnabled() {
95   return base::FeatureList::IsEnabled(kAssistantBetterOnboarding);
96 }
97 
IsBloomEnabled()98 bool IsBloomEnabled() {
99   return base::FeatureList::IsEnabled(kEnableBloom);
100 }
101 
IsConversationStartersV2Enabled()102 bool IsConversationStartersV2Enabled() {
103   return base::FeatureList::IsEnabled(kAssistantConversationStartersV2);
104 }
105 
IsAssistantDebuggingEnabled()106 bool IsAssistantDebuggingEnabled() {
107   return base::FeatureList::IsEnabled(kAssistantDebugging);
108 }
109 
IsDspHotwordEnabled()110 bool IsDspHotwordEnabled() {
111   return base::FeatureList::IsEnabled(kEnableDspHotword);
112 }
113 
IsLauncherChipIntegrationEnabled()114 bool IsLauncherChipIntegrationEnabled() {
115   return base::FeatureList::IsEnabled(kAssistantLauncherChipIntegration);
116 }
117 
IsMediaSessionIntegrationEnabled()118 bool IsMediaSessionIntegrationEnabled() {
119   return base::FeatureList::IsEnabled(kEnableMediaSessionIntegration);
120 }
121 
IsPowerManagerEnabled()122 bool IsPowerManagerEnabled() {
123   return base::FeatureList::IsEnabled(kEnablePowerManager);
124 }
125 
IsOnDeviceAssistantEnabled()126 bool IsOnDeviceAssistantEnabled() {
127   return base::FeatureList::IsEnabled(kEnableOnDeviceAssistant);
128 }
129 
IsLibAssistantBetaBackendEnabled()130 bool IsLibAssistantBetaBackendEnabled() {
131   return base::FeatureList::IsEnabled(kEnableLibAssistantBetaBackend);
132 }
133 
IsResponseProcessingV2Enabled()134 bool IsResponseProcessingV2Enabled() {
135   return base::FeatureList::IsEnabled(kAssistantResponseProcessingV2);
136 }
137 
IsRoutinesEnabled()138 bool IsRoutinesEnabled() {
139   return base::FeatureList::IsEnabled(kAssistantRoutines);
140 }
141 
IsStereoAudioInputEnabled()142 bool IsStereoAudioInputEnabled() {
143   return base::FeatureList::IsEnabled(kEnableStereoAudioInput) ||
144          // Audio eraser requires 2 channel input.
145          base::FeatureList::IsEnabled(kAssistantAudioEraser);
146 }
147 
IsTimersV2Enabled()148 bool IsTimersV2Enabled() {
149   return base::FeatureList::IsEnabled(kAssistantTimersV2);
150 }
151 
IsVoiceMatchDisabled()152 bool IsVoiceMatchDisabled() {
153   return base::FeatureList::IsEnabled(kDisableVoiceMatch);
154 }
155 
IsWaitSchedulingEnabled()156 bool IsWaitSchedulingEnabled() {
157   // Wait scheduling is only supported for response processing v2 and routines.
158   return base::FeatureList::IsEnabled(kAssistantWaitScheduling) &&
159          (IsResponseProcessingV2Enabled() || IsRoutinesEnabled());
160 }
161 
162 }  // namespace features
163 }  // namespace assistant
164 }  // namespace chromeos
165