| Index: chrome/browser/extensions/api/alarms/alarm_manager.cc
|
| diff --git a/chrome/browser/extensions/api/alarms/alarm_manager.cc b/chrome/browser/extensions/api/alarms/alarm_manager.cc
|
| index 84d8592cda3d81c853cad3cd27d536753383a416..1a0a2fce5496a89a24e5eb6ec9f0e5a90f566dff 100644
|
| --- a/chrome/browser/extensions/api/alarms/alarm_manager.cc
|
| +++ b/chrome/browser/extensions/api/alarms/alarm_manager.cc
|
| @@ -6,9 +6,11 @@
|
|
|
| #include "base/bind.h"
|
| #include "base/json/json_writer.h"
|
| +#include "base/lazy_instance.h"
|
| #include "base/message_loop.h"
|
| #include "base/time.h"
|
| #include "base/time/clock.h"
|
| +#include "base/time/default_clock.h"
|
| #include "base/value_conversions.h"
|
| #include "base/values.h"
|
| #include "chrome/browser/extensions/event_router.h"
|
| @@ -89,10 +91,12 @@ scoped_ptr<base::ListValue> AlarmsToValue(const std::vector<Alarm>& alarms) {
|
|
|
| // AlarmManager
|
|
|
| -AlarmManager::AlarmManager(Profile* profile, base::Clock* clock)
|
| +AlarmManager::AlarmManager(Profile* profile)
|
| : profile_(profile),
|
| - clock_(clock),
|
| + owns_clock_(true),
|
| delegate_(new DefaultAlarmDelegate(profile)) {
|
| + clock_ = new base::DefaultClock();
|
| +
|
| registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED,
|
| content::Source<Profile>(profile_));
|
|
|
| @@ -102,6 +106,8 @@ AlarmManager::AlarmManager(Profile* profile, base::Clock* clock)
|
| }
|
|
|
| AlarmManager::~AlarmManager() {
|
| + if (owns_clock_)
|
| + delete clock_;
|
| }
|
|
|
| void AlarmManager::AddAlarm(const std::string& extension_id,
|
| @@ -166,6 +172,26 @@ void AlarmManager::RemoveAllAlarms(const std::string& extension_id) {
|
| WriteToStorage(extension_id);
|
| }
|
|
|
| +void AlarmManager::SetClockForTesting(base::Clock* clock) {
|
| + if (owns_clock_)
|
| + delete clock_;
|
| + owns_clock_ = false;
|
| + clock_ = clock;
|
| +}
|
| +
|
| +static base::LazyInstance<ProfileKeyedAPIFactory<AlarmManager> >
|
| +g_factory = LAZY_INSTANCE_INITIALIZER;
|
| +
|
| +// static
|
| +ProfileKeyedAPIFactory<AlarmManager>* AlarmManager::GetFactoryInstance() {
|
| + return &g_factory.Get();
|
| +}
|
| +
|
| +// static
|
| +AlarmManager* AlarmManager::Get(Profile* profile) {
|
| + return ProfileKeyedAPIFactory<AlarmManager>::GetForProfile(profile);
|
| +}
|
| +
|
| void AlarmManager::RemoveAlarmIterator(const AlarmIterator& iter) {
|
| AlarmList& list = iter.first->second;
|
| list.erase(iter.second);
|
|
|