// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_EXTENSIONS_API_ALARMS_ALARMS_API_H__ #define CHROME_BROWSER_EXTENSIONS_API_ALARMS_ALARMS_API_H__ #include #include "chrome/browser/extensions/chrome_extension_function.h" namespace base { class Clock; } // namespace base namespace extensions { struct Alarm; typedef std::vector AlarmList; class AlarmsCreateFunction : public ChromeAsyncExtensionFunction { public: AlarmsCreateFunction(); // Use |clock| instead of the default clock. Does not take ownership // of |clock|. Used for testing. explicit AlarmsCreateFunction(base::Clock* clock); protected: virtual ~AlarmsCreateFunction(); // ExtensionFunction: virtual bool RunImpl() OVERRIDE; DECLARE_EXTENSION_FUNCTION("alarms.create", ALARMS_CREATE) private: void Callback(); base::Clock* const clock_; // Whether or not we own |clock_|. This is needed because we own it // when we create it ourselves, but not when it's passed in for // testing. bool owns_clock_; }; class AlarmsGetFunction : public ChromeAsyncExtensionFunction { protected: virtual ~AlarmsGetFunction() {} // ExtensionFunction: virtual bool RunImpl() OVERRIDE; private: void Callback(const std::string& name, Alarm* alarm); DECLARE_EXTENSION_FUNCTION("alarms.get", ALARMS_GET) }; class AlarmsGetAllFunction : public ChromeAsyncExtensionFunction { protected: virtual ~AlarmsGetAllFunction() {} // ExtensionFunction: virtual bool RunImpl() OVERRIDE; private: void Callback(const AlarmList* alarms); DECLARE_EXTENSION_FUNCTION("alarms.getAll", ALARMS_GETALL) }; class AlarmsClearFunction : public ChromeAsyncExtensionFunction { protected: virtual ~AlarmsClearFunction() {} // ExtensionFunction: virtual bool RunImpl() OVERRIDE; private: void Callback(const std::string& name, bool success); DECLARE_EXTENSION_FUNCTION("alarms.clear", ALARMS_CLEAR) }; class AlarmsClearAllFunction : public ChromeAsyncExtensionFunction { protected: virtual ~AlarmsClearAllFunction() {} // ExtensionFunction: virtual bool RunImpl() OVERRIDE; private: void Callback(); DECLARE_EXTENSION_FUNCTION("alarms.clearAll", ALARMS_CLEARALL) }; } // namespace extensions #endif // CHROME_BROWSER_EXTENSIONS_API_ALARMS_ALARMS_API_H__