Home | History | Annotate | Download | only in alarms
      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 RunImpl() 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:
     44   virtual ~AlarmsGetFunction() {}
     45 
     46   // ExtensionFunction:
     47   virtual bool RunImpl() 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:
     56   virtual ~AlarmsGetAllFunction() {}
     57 
     58   // ExtensionFunction:
     59   virtual bool RunImpl() OVERRIDE;
     60  private:
     61   void Callback(const AlarmList* alarms);
     62   DECLARE_EXTENSION_FUNCTION("alarms.getAll", ALARMS_GETALL)
     63 };
     64 
     65 class AlarmsClearFunction : public ChromeAsyncExtensionFunction {
     66  protected:
     67   virtual ~AlarmsClearFunction() {}
     68 
     69   // ExtensionFunction:
     70   virtual bool RunImpl() OVERRIDE;
     71  private:
     72   void Callback(const std::string& name, bool success);
     73   DECLARE_EXTENSION_FUNCTION("alarms.clear", ALARMS_CLEAR)
     74 };
     75 
     76 class AlarmsClearAllFunction : public ChromeAsyncExtensionFunction {
     77  protected:
     78   virtual ~AlarmsClearAllFunction() {}
     79 
     80   // ExtensionFunction:
     81   virtual bool RunImpl() OVERRIDE;
     82  private:
     83   void Callback();
     84   DECLARE_EXTENSION_FUNCTION("alarms.clearAll", ALARMS_CLEARALL)
     85 };
     86 
     87 } //  namespace extensions
     88 
     89 #endif  // CHROME_BROWSER_EXTENSIONS_API_ALARMS_ALARMS_API_H__
     90