• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 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_ALARMS_ALARMS_API_H__
6 #define CHROME_BROWSER_EXTENSIONS_API_ALARMS_ALARMS_API_H__
7 
8 #include <vector>
9 
10 #include "chrome/browser/extensions/chrome_extension_function.h"
11 
12 namespace base {
13 class Clock;
14 }  // namespace base
15 
16 namespace extensions {
17 struct Alarm;
18 typedef std::vector<Alarm> AlarmList;
19 
20 class AlarmsCreateFunction : public ChromeAsyncExtensionFunction {
21  public:
22   AlarmsCreateFunction();
23   // Use |clock| instead of the default clock. Does not take ownership
24   // of |clock|. Used for testing.
25   explicit AlarmsCreateFunction(base::Clock* clock);
26  protected:
27   virtual ~AlarmsCreateFunction();
28 
29   // ExtensionFunction:
30   virtual bool RunAsync() OVERRIDE;
31   DECLARE_EXTENSION_FUNCTION("alarms.create", ALARMS_CREATE)
32  private:
33   void Callback();
34 
35   base::Clock* const clock_;
36   // Whether or not we own |clock_|. This is needed because we own it
37   // when we create it ourselves, but not when it's passed in for
38   // testing.
39   bool owns_clock_;
40 };
41 
42 class AlarmsGetFunction : public ChromeAsyncExtensionFunction {
43  protected:
~AlarmsGetFunction()44   virtual ~AlarmsGetFunction() {}
45 
46   // ExtensionFunction:
47   virtual bool RunAsync() OVERRIDE;
48 
49  private:
50   void Callback(const std::string& name, Alarm* alarm);
51   DECLARE_EXTENSION_FUNCTION("alarms.get", ALARMS_GET)
52 };
53 
54 class AlarmsGetAllFunction : public ChromeAsyncExtensionFunction {
55  protected:
~AlarmsGetAllFunction()56   virtual ~AlarmsGetAllFunction() {}
57 
58   // ExtensionFunction:
59   virtual bool RunAsync() OVERRIDE;
60 
61  private:
62   void Callback(const AlarmList* alarms);
63   DECLARE_EXTENSION_FUNCTION("alarms.getAll", ALARMS_GETALL)
64 };
65 
66 class AlarmsClearFunction : public ChromeAsyncExtensionFunction {
67  protected:
~AlarmsClearFunction()68   virtual ~AlarmsClearFunction() {}
69 
70   // ExtensionFunction:
71   virtual bool RunAsync() OVERRIDE;
72 
73  private:
74   void Callback(const std::string& name, bool success);
75   DECLARE_EXTENSION_FUNCTION("alarms.clear", ALARMS_CLEAR)
76 };
77 
78 class AlarmsClearAllFunction : public ChromeAsyncExtensionFunction {
79  protected:
~AlarmsClearAllFunction()80   virtual ~AlarmsClearAllFunction() {}
81 
82   // ExtensionFunction:
83   virtual bool RunAsync() OVERRIDE;
84 
85  private:
86   void Callback();
87   DECLARE_EXTENSION_FUNCTION("alarms.clearAll", ALARMS_CLEARALL)
88 };
89 
90 } //  namespace extensions
91 
92 #endif  // CHROME_BROWSER_EXTENSIONS_API_ALARMS_ALARMS_API_H__
93