1 // Copyright 2014 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.
5 #ifndef CHROME_BROWSER_EXTENSIONS_API_HOTWORD_PRIVATE_HOTWORD_PRIVATE_API_H_
6 #define CHROME_BROWSER_EXTENSIONS_API_HOTWORD_PRIVATE_HOTWORD_PRIVATE_API_H_
8 #include "base/prefs/pref_change_registrar.h"
9 #include "base/values.h"
10 #include "chrome/browser/extensions/chrome_extension_function.h"
11 #include "chrome/common/extensions/api/hotword_private.h"
12 #include "extensions/browser/browser_context_keyed_api_factory.h"
16 namespace extensions {
18 // Listens for changes in disable/enabled state and forwards as an extension
20 class HotwordPrivateEventService : public BrowserContextKeyedAPI {
22 explicit HotwordPrivateEventService(content::BrowserContext* context);
23 ~HotwordPrivateEventService() override;
25 // BrowserContextKeyedAPI implementation.
26 void Shutdown() override;
27 static BrowserContextKeyedAPIFactory<HotwordPrivateEventService>*
29 static const char* service_name();
31 void OnEnabledChanged(const std::string& pref_name);
33 void OnHotwordSessionRequested();
35 void OnHotwordSessionStopped();
37 void OnHotwordTriggered();
39 void OnFinalizeSpeakerModel();
42 friend class BrowserContextKeyedAPIFactory<HotwordPrivateEventService>;
44 void SignalEvent(const std::string& event_name);
47 PrefChangeRegistrar pref_change_registrar_;
51 class HotwordPrivateSetEnabledFunction : public ChromeSyncExtensionFunction {
53 DECLARE_EXTENSION_FUNCTION("hotwordPrivate.setEnabled",
54 HOTWORDPRIVATE_SETENABLED)
57 ~HotwordPrivateSetEnabledFunction() override {}
60 bool RunSync() override;
63 class HotwordPrivateSetAudioLoggingEnabledFunction
64 : public ChromeSyncExtensionFunction {
66 DECLARE_EXTENSION_FUNCTION("hotwordPrivate.setAudioLoggingEnabled",
67 HOTWORDPRIVATE_SETAUDIOLOGGINGENABLED)
70 ~HotwordPrivateSetAudioLoggingEnabledFunction() override {}
73 bool RunSync() override;
76 class HotwordPrivateSetHotwordAlwaysOnSearchEnabledFunction
77 : public ChromeSyncExtensionFunction {
79 DECLARE_EXTENSION_FUNCTION("hotwordPrivate.setHotwordAlwaysOnSearchEnabled",
80 HOTWORDPRIVATE_SETHOTWORDALWAYSONSEARCHENABLED)
83 ~HotwordPrivateSetHotwordAlwaysOnSearchEnabledFunction() override {}
86 bool RunSync() override;
89 class HotwordPrivateGetStatusFunction : public ChromeSyncExtensionFunction {
91 DECLARE_EXTENSION_FUNCTION("hotwordPrivate.getStatus",
92 HOTWORDPRIVATE_GETSTATUS)
95 ~HotwordPrivateGetStatusFunction() override {}
98 bool RunSync() override;
101 class HotwordPrivateSetHotwordSessionStateFunction
102 : public ChromeSyncExtensionFunction {
104 DECLARE_EXTENSION_FUNCTION("hotwordPrivate.setHotwordSessionState",
105 HOTWORDPRIVATE_SETHOTWORDSESSIONSTATE);
108 ~HotwordPrivateSetHotwordSessionStateFunction() override {}
110 // ExtensionFunction:
111 bool RunSync() override;
114 class HotwordPrivateNotifyHotwordRecognitionFunction
115 : public ChromeSyncExtensionFunction {
117 DECLARE_EXTENSION_FUNCTION("hotwordPrivate.notifyHotwordRecognition",
118 HOTWORDPRIVATE_NOTIFYHOTWORDRECOGNITION);
121 ~HotwordPrivateNotifyHotwordRecognitionFunction() override {}
123 // ExtensionFunction:
124 bool RunSync() override;
127 class HotwordPrivateGetLaunchStateFunction :
128 public ChromeSyncExtensionFunction {
130 DECLARE_EXTENSION_FUNCTION("hotwordPrivate.getLaunchState",
131 HOTWORDPRIVATE_GETLAUNCHSTATE)
134 ~HotwordPrivateGetLaunchStateFunction() override {}
136 // ExtensionFunction:
137 bool RunSync() override;
140 class HotwordPrivateStartTrainingFunction :
141 public ChromeSyncExtensionFunction {
143 DECLARE_EXTENSION_FUNCTION("hotwordPrivate.startTraining",
144 HOTWORDPRIVATE_STARTTRAINING)
147 ~HotwordPrivateStartTrainingFunction() override {}
149 // ExtensionFunction:
150 bool RunSync() override;
153 class HotwordPrivateFinalizeSpeakerModelFunction :
154 public ChromeSyncExtensionFunction {
156 DECLARE_EXTENSION_FUNCTION("hotwordPrivate.finalizeSpeakerModel",
157 HOTWORDPRIVATE_FINALIZESPEAKERMODEL)
160 ~HotwordPrivateFinalizeSpeakerModelFunction() override {}
162 // ExtensionFunction:
163 bool RunSync() override;
166 class HotwordPrivateStopTrainingFunction :
167 public ChromeSyncExtensionFunction {
169 DECLARE_EXTENSION_FUNCTION("hotwordPrivate.stopTraining",
170 HOTWORDPRIVATE_STOPTRAINING)
173 ~HotwordPrivateStopTrainingFunction() override {}
175 // ExtensionFunction:
176 bool RunSync() override;
179 } // namespace extensions
181 #endif // CHROME_BROWSER_EXTENSIONS_API_HOTWORD_PRIVATE_HOTWORD_PRIVATE_API_H_