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 virtual ~HotwordPrivateEventService(); 24 25 // BrowserContextKeyedAPI implementation. 26 virtual 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 private: 38 friend class BrowserContextKeyedAPIFactory<HotwordPrivateEventService>; 39 40 void SignalEvent(const std::string& event_name); 41 42 Profile* profile_; 43 PrefChangeRegistrar pref_change_registrar_; 44 }; 45 46 47 class HotwordPrivateSetEnabledFunction : public ChromeSyncExtensionFunction { 48 public: 49 DECLARE_EXTENSION_FUNCTION("hotwordPrivate.setEnabled", 50 HOTWORDPRIVATE_SETENABLED) 51 52 protected: 53 virtual ~HotwordPrivateSetEnabledFunction() {} 54 55 // ExtensionFunction: 56 virtual bool RunSync() OVERRIDE; 57 }; 58 59 class HotwordPrivateSetAudioLoggingEnabledFunction 60 : public ChromeSyncExtensionFunction { 61 public: 62 DECLARE_EXTENSION_FUNCTION("hotwordPrivate.setAudioLoggingEnabled", 63 HOTWORDPRIVATE_SETAUDIOLOGGINGENABLED) 64 65 protected: 66 virtual ~HotwordPrivateSetAudioLoggingEnabledFunction() {} 67 68 // ExtensionFunction: 69 virtual bool RunSync() OVERRIDE; 70 }; 71 72 class HotwordPrivateSetHotwordAlwaysOnSearchEnabledFunction 73 : public ChromeSyncExtensionFunction { 74 public: 75 DECLARE_EXTENSION_FUNCTION("hotwordPrivate.setHotwordAlwaysOnSearchEnabled", 76 HOTWORDPRIVATE_SETHOTWORDALWAYSONSEARCHENABLED) 77 78 protected: 79 virtual ~HotwordPrivateSetHotwordAlwaysOnSearchEnabledFunction() {} 80 81 // ExtensionFunction: 82 virtual bool RunSync() OVERRIDE; 83 }; 84 85 class HotwordPrivateGetStatusFunction : public ChromeSyncExtensionFunction { 86 public: 87 DECLARE_EXTENSION_FUNCTION("hotwordPrivate.getStatus", 88 HOTWORDPRIVATE_GETSTATUS) 89 90 protected: 91 virtual ~HotwordPrivateGetStatusFunction() {} 92 93 // ExtensionFunction: 94 virtual bool RunSync() OVERRIDE; 95 }; 96 97 class HotwordPrivateSetHotwordSessionStateFunction 98 : public ChromeSyncExtensionFunction { 99 public: 100 DECLARE_EXTENSION_FUNCTION("hotwordPrivate.setHotwordSessionState", 101 HOTWORDPRIVATE_SETHOTWORDSESSIONSTATE); 102 103 protected: 104 virtual ~HotwordPrivateSetHotwordSessionStateFunction() {} 105 106 // ExtensionFunction: 107 virtual bool RunSync() OVERRIDE; 108 }; 109 110 class HotwordPrivateNotifyHotwordRecognitionFunction 111 : public ChromeSyncExtensionFunction { 112 public: 113 DECLARE_EXTENSION_FUNCTION("hotwordPrivate.notifyHotwordRecognition", 114 HOTWORDPRIVATE_NOTIFYHOTWORDRECOGNITION); 115 116 protected: 117 virtual ~HotwordPrivateNotifyHotwordRecognitionFunction() {} 118 119 // ExtensionFunction: 120 virtual bool RunSync() OVERRIDE; 121 }; 122 123 class HotwordPrivateGetLaunchStateFunction : 124 public ChromeSyncExtensionFunction { 125 public: 126 DECLARE_EXTENSION_FUNCTION("hotwordPrivate.getLaunchState", 127 HOTWORDPRIVATE_GETLAUNCHSTATE) 128 129 protected: 130 virtual ~HotwordPrivateGetLaunchStateFunction() {} 131 132 // ExtensionFunction: 133 virtual bool RunSync() OVERRIDE; 134 }; 135 136 } // namespace extensions 137 138 #endif // CHROME_BROWSER_EXTENSIONS_API_HOTWORD_PRIVATE_HOTWORD_PRIVATE_API_H_ 139