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