Upstream version 5.34.104.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/api/profile_keyed_api_factory.h"
11 #include "chrome/browser/extensions/chrome_extension_function.h"
12 #include "chrome/common/extensions/api/hotword_private.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 ProfileKeyedAPI  {
21  public:
22   explicit HotwordPrivateEventService(Profile* profile);
23   virtual ~HotwordPrivateEventService();
24
25   // ProfileKeyedAPI implementation.
26   virtual void Shutdown() OVERRIDE;
27   static ProfileKeyedAPIFactory<HotwordPrivateEventService>*
28       GetFactoryInstance();
29   static const char* service_name();
30
31   void OnEnabledChanged(const std::string& pref_name);
32
33  private:
34   friend class ProfileKeyedAPIFactory<HotwordPrivateEventService>;
35
36   void SignalEvent();
37
38   Profile* profile_;
39   PrefChangeRegistrar pref_change_registrar_;
40 };
41
42
43 class HotwordPrivateSetEnabledFunction : public ChromeSyncExtensionFunction {
44  public:
45   DECLARE_EXTENSION_FUNCTION("hotwordPrivate.setEnabled",
46                              HOTWORDPRIVATE_SETENABLED)
47
48  protected:
49   virtual ~HotwordPrivateSetEnabledFunction() {}
50
51   // ExtensionFunction:
52   virtual bool RunImpl() OVERRIDE;
53 };
54
55 class HotwordPrivateGetStatusFunction : public ChromeSyncExtensionFunction {
56  public:
57   DECLARE_EXTENSION_FUNCTION("hotwordPrivate.getStatus",
58                              HOTWORDPRIVATE_GETSTATUS)
59
60  protected:
61   virtual ~HotwordPrivateGetStatusFunction() {}
62
63   // ExtensionFunction:
64   virtual bool RunImpl() OVERRIDE;
65 };
66
67 }  // namespace extensions
68
69 #endif  // CHROME_BROWSER_EXTENSIONS_API_HOTWORD_PRIVATE_HOTWORD_PRIVATE_API_H_