Chromium Code Reviews| 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..9f96d2c036197a75d7338d77735774d528978375 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,9 +91,9 @@ 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), |
| + clock_(new base::DefaultClock()), |
| delegate_(new DefaultAlarmDelegate(profile)) { |
| registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED, |
| content::Source<Profile>(profile_)); |
| @@ -166,6 +168,23 @@ void AlarmManager::RemoveAllAlarms(const std::string& extension_id) { |
| WriteToStorage(extension_id); |
| } |
| +void AlarmManager::SetClockForTesting(base::Clock* clock) { |
|
Devlin
2013/04/22 21:19:28
Put methods in the .cc file in approximately the s
Patrick Riordan
2013/04/23 23:32:04
They do.
|
| + clock_.reset(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); |