Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / api / hotword_private / hotword_private_api.h
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.
4
5 #ifndef CHROME_BROWSER_EXTENSIONS_API_HOTWORD_PRIVATE_HOTWORD_PRIVATE_API_H_
6 #define CHROME_BROWSER_EXTENSIONS_API_HOTWORD_PRIVATE_HOTWORD_PRIVATE_API_H_
7
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"
13
14 class Profile;
15
16 namespace extensions {
17
18 // Listens for changes in disable/enabled state and forwards as an extension
19 // event.
20 class HotwordPrivateEventService : public BrowserContextKeyedAPI {
21  public:
22   explicit HotwordPrivateEventService(content::BrowserContext* context);
23   ~HotwordPrivateEventService() override;
24
25   // BrowserContextKeyedAPI implementation.
26   void Shutdown() override;
27   static BrowserContextKeyedAPIFactory<HotwordPrivateEventService>*
28       GetFactoryInstance();
29   static const char* service_name();
30
31   void OnEnabledChanged(const std::string& pref_name);
32
33   void OnHotwordSessionRequested();
34
35   void OnHotwordSessionStopped();
36
37   void OnHotwordTriggered();
38
39   void OnFinalizeSpeakerModel();
40
41  private:
42   friend class BrowserContextKeyedAPIFactory<HotwordPrivateEventService>;
43
44   void SignalEvent(const std::string& event_name);
45
46   Profile* profile_;
47   PrefChangeRegistrar pref_change_registrar_;
48 };
49
50
51 class HotwordPrivateSetEnabledFunction : public ChromeSyncExtensionFunction {
52  public:
53   DECLARE_EXTENSION_FUNCTION("hotwordPrivate.setEnabled",
54                              HOTWORDPRIVATE_SETENABLED)
55
56  protected:
57   ~HotwordPrivateSetEnabledFunction() override {}
58
59   // ExtensionFunction:
60   bool RunSync() override;
61 };
62
63 class HotwordPrivateSetAudioLoggingEnabledFunction
64     : public ChromeSyncExtensionFunction {
65  public:
66   DECLARE_EXTENSION_FUNCTION("hotwordPrivate.setAudioLoggingEnabled",
67                              HOTWORDPRIVATE_SETAUDIOLOGGINGENABLED)
68
69  protected:
70   ~HotwordPrivateSetAudioLoggingEnabledFunction() override {}
71
72   // ExtensionFunction:
73   bool RunSync() override;
74 };
75
76 class HotwordPrivateSetHotwordAlwaysOnSearchEnabledFunction
77     : public ChromeSyncExtensionFunction {
78  public:
79   DECLARE_EXTENSION_FUNCTION("hotwordPrivate.setHotwordAlwaysOnSearchEnabled",
80                              HOTWORDPRIVATE_SETHOTWORDALWAYSONSEARCHENABLED)
81
82  protected:
83   ~HotwordPrivateSetHotwordAlwaysOnSearchEnabledFunction() override {}
84
85   // ExtensionFunction:
86   bool RunSync() override;
87 };
88
89 class HotwordPrivateGetStatusFunction : public ChromeSyncExtensionFunction {
90  public:
91   DECLARE_EXTENSION_FUNCTION("hotwordPrivate.getStatus",
92                              HOTWORDPRIVATE_GETSTATUS)
93
94  protected:
95   ~HotwordPrivateGetStatusFunction() override {}
96
97   // ExtensionFunction:
98   bool RunSync() override;
99 };
100
101 class HotwordPrivateSetHotwordSessionStateFunction
102     : public ChromeSyncExtensionFunction {
103  public:
104   DECLARE_EXTENSION_FUNCTION("hotwordPrivate.setHotwordSessionState",
105                              HOTWORDPRIVATE_SETHOTWORDSESSIONSTATE);
106
107  protected:
108   ~HotwordPrivateSetHotwordSessionStateFunction() override {}
109
110   // ExtensionFunction:
111   bool RunSync() override;
112 };
113
114 class HotwordPrivateNotifyHotwordRecognitionFunction
115     : public ChromeSyncExtensionFunction {
116  public:
117   DECLARE_EXTENSION_FUNCTION("hotwordPrivate.notifyHotwordRecognition",
118                              HOTWORDPRIVATE_NOTIFYHOTWORDRECOGNITION);
119
120  protected:
121   ~HotwordPrivateNotifyHotwordRecognitionFunction() override {}
122
123   // ExtensionFunction:
124   bool RunSync() override;
125 };
126
127 class HotwordPrivateGetLaunchStateFunction :
128     public ChromeSyncExtensionFunction {
129  public:
130   DECLARE_EXTENSION_FUNCTION("hotwordPrivate.getLaunchState",
131                              HOTWORDPRIVATE_GETLAUNCHSTATE)
132
133  protected:
134   ~HotwordPrivateGetLaunchStateFunction() override {}
135
136   // ExtensionFunction:
137   bool RunSync() override;
138 };
139
140 class HotwordPrivateStartTrainingFunction :
141     public ChromeSyncExtensionFunction {
142  public:
143   DECLARE_EXTENSION_FUNCTION("hotwordPrivate.startTraining",
144                              HOTWORDPRIVATE_STARTTRAINING)
145
146  protected:
147   ~HotwordPrivateStartTrainingFunction() override {}
148
149   // ExtensionFunction:
150   bool RunSync() override;
151 };
152
153 class HotwordPrivateFinalizeSpeakerModelFunction :
154     public ChromeSyncExtensionFunction {
155  public:
156   DECLARE_EXTENSION_FUNCTION("hotwordPrivate.finalizeSpeakerModel",
157                              HOTWORDPRIVATE_FINALIZESPEAKERMODEL)
158
159  protected:
160   ~HotwordPrivateFinalizeSpeakerModelFunction() override {}
161
162   // ExtensionFunction:
163   bool RunSync() override;
164 };
165
166 class HotwordPrivateStopTrainingFunction :
167     public ChromeSyncExtensionFunction {
168  public:
169   DECLARE_EXTENSION_FUNCTION("hotwordPrivate.stopTraining",
170                              HOTWORDPRIVATE_STOPTRAINING)
171
172  protected:
173   ~HotwordPrivateStopTrainingFunction() override {}
174
175   // ExtensionFunction:
176   bool RunSync() override;
177 };
178
179 }  // namespace extensions
180
181 #endif  // CHROME_BROWSER_EXTENSIONS_API_HOTWORD_PRIVATE_HOTWORD_PRIVATE_API_H_