#include "base/prefs/pref_change_registrar.h"
#include "base/values.h"
-#include "chrome/browser/extensions/api/profile_keyed_api_factory.h"
#include "chrome/browser/extensions/chrome_extension_function.h"
#include "chrome/common/extensions/api/hotword_private.h"
+#include "extensions/browser/browser_context_keyed_api_factory.h"
class Profile;
// Listens for changes in disable/enabled state and forwards as an extension
// event.
-class HotwordPrivateEventService : public ProfileKeyedAPI {
+class HotwordPrivateEventService : public BrowserContextKeyedAPI {
public:
- explicit HotwordPrivateEventService(Profile* profile);
- virtual ~HotwordPrivateEventService();
+ explicit HotwordPrivateEventService(content::BrowserContext* context);
+ ~HotwordPrivateEventService() override;
- // ProfileKeyedAPI implementation.
- virtual void Shutdown() OVERRIDE;
- static ProfileKeyedAPIFactory<HotwordPrivateEventService>*
+ // BrowserContextKeyedAPI implementation.
+ void Shutdown() override;
+ static BrowserContextKeyedAPIFactory<HotwordPrivateEventService>*
GetFactoryInstance();
static const char* service_name();
void OnEnabledChanged(const std::string& pref_name);
+ void OnHotwordSessionRequested();
+
+ void OnHotwordSessionStopped();
+
+ void OnHotwordTriggered();
+
+ void OnFinalizeSpeakerModel();
+
private:
- friend class ProfileKeyedAPIFactory<HotwordPrivateEventService>;
+ friend class BrowserContextKeyedAPIFactory<HotwordPrivateEventService>;
- void SignalEvent();
+ void SignalEvent(const std::string& event_name);
Profile* profile_;
PrefChangeRegistrar pref_change_registrar_;
HOTWORDPRIVATE_SETENABLED)
protected:
- virtual ~HotwordPrivateSetEnabledFunction() {}
+ ~HotwordPrivateSetEnabledFunction() override {}
+
+ // ExtensionFunction:
+ bool RunSync() override;
+};
+
+class HotwordPrivateSetAudioLoggingEnabledFunction
+ : public ChromeSyncExtensionFunction {
+ public:
+ DECLARE_EXTENSION_FUNCTION("hotwordPrivate.setAudioLoggingEnabled",
+ HOTWORDPRIVATE_SETAUDIOLOGGINGENABLED)
+
+ protected:
+ ~HotwordPrivateSetAudioLoggingEnabledFunction() override {}
+
+ // ExtensionFunction:
+ bool RunSync() override;
+};
+
+class HotwordPrivateSetHotwordAlwaysOnSearchEnabledFunction
+ : public ChromeSyncExtensionFunction {
+ public:
+ DECLARE_EXTENSION_FUNCTION("hotwordPrivate.setHotwordAlwaysOnSearchEnabled",
+ HOTWORDPRIVATE_SETHOTWORDALWAYSONSEARCHENABLED)
+
+ protected:
+ ~HotwordPrivateSetHotwordAlwaysOnSearchEnabledFunction() override {}
// ExtensionFunction:
- virtual bool RunImpl() OVERRIDE;
+ bool RunSync() override;
};
class HotwordPrivateGetStatusFunction : public ChromeSyncExtensionFunction {
HOTWORDPRIVATE_GETSTATUS)
protected:
- virtual ~HotwordPrivateGetStatusFunction() {}
+ ~HotwordPrivateGetStatusFunction() override {}
+
+ // ExtensionFunction:
+ bool RunSync() override;
+};
+
+class HotwordPrivateSetHotwordSessionStateFunction
+ : public ChromeSyncExtensionFunction {
+ public:
+ DECLARE_EXTENSION_FUNCTION("hotwordPrivate.setHotwordSessionState",
+ HOTWORDPRIVATE_SETHOTWORDSESSIONSTATE);
+
+ protected:
+ ~HotwordPrivateSetHotwordSessionStateFunction() override {}
+
+ // ExtensionFunction:
+ bool RunSync() override;
+};
+
+class HotwordPrivateNotifyHotwordRecognitionFunction
+ : public ChromeSyncExtensionFunction {
+ public:
+ DECLARE_EXTENSION_FUNCTION("hotwordPrivate.notifyHotwordRecognition",
+ HOTWORDPRIVATE_NOTIFYHOTWORDRECOGNITION);
+
+ protected:
+ ~HotwordPrivateNotifyHotwordRecognitionFunction() override {}
+
+ // ExtensionFunction:
+ bool RunSync() override;
+};
+
+class HotwordPrivateGetLaunchStateFunction :
+ public ChromeSyncExtensionFunction {
+ public:
+ DECLARE_EXTENSION_FUNCTION("hotwordPrivate.getLaunchState",
+ HOTWORDPRIVATE_GETLAUNCHSTATE)
+
+ protected:
+ ~HotwordPrivateGetLaunchStateFunction() override {}
+
+ // ExtensionFunction:
+ bool RunSync() override;
+};
+
+class HotwordPrivateStartTrainingFunction :
+ public ChromeSyncExtensionFunction {
+ public:
+ DECLARE_EXTENSION_FUNCTION("hotwordPrivate.startTraining",
+ HOTWORDPRIVATE_STARTTRAINING)
+
+ protected:
+ ~HotwordPrivateStartTrainingFunction() override {}
+
+ // ExtensionFunction:
+ bool RunSync() override;
+};
+
+class HotwordPrivateFinalizeSpeakerModelFunction :
+ public ChromeSyncExtensionFunction {
+ public:
+ DECLARE_EXTENSION_FUNCTION("hotwordPrivate.finalizeSpeakerModel",
+ HOTWORDPRIVATE_FINALIZESPEAKERMODEL)
+
+ protected:
+ ~HotwordPrivateFinalizeSpeakerModelFunction() override {}
+
+ // ExtensionFunction:
+ bool RunSync() override;
+};
+
+class HotwordPrivateStopTrainingFunction :
+ public ChromeSyncExtensionFunction {
+ public:
+ DECLARE_EXTENSION_FUNCTION("hotwordPrivate.stopTraining",
+ HOTWORDPRIVATE_STOPTRAINING)
+
+ protected:
+ ~HotwordPrivateStopTrainingFunction() override {}
// ExtensionFunction:
- virtual bool RunImpl() OVERRIDE;
+ bool RunSync() override;
};
} // namespace extensions