Home | History | Annotate | Download | only in hotword_private
      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