| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/extensions/api/alarms/alarm_manager.h" | 5 #include "chrome/browser/extensions/api/alarms/alarm_manager.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/json/json_writer.h" | 8 #include "base/json/json_writer.h" |
| 9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
| 10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 const char kRegisteredAlarms[] = "alarms"; | 32 const char kRegisteredAlarms[] = "alarms"; |
| 33 const char kAlarmGranularity[] = "granularity"; | 33 const char kAlarmGranularity[] = "granularity"; |
| 34 | 34 |
| 35 // The minimum period between polling for alarms to run. | 35 // The minimum period between polling for alarms to run. |
| 36 const base::TimeDelta kDefaultMinPollPeriod() { | 36 const base::TimeDelta kDefaultMinPollPeriod() { |
| 37 return base::TimeDelta::FromDays(1); | 37 return base::TimeDelta::FromDays(1); |
| 38 } | 38 } |
| 39 | 39 |
| 40 class DefaultAlarmDelegate : public AlarmManager::Delegate { | 40 class DefaultAlarmDelegate : public AlarmManager::Delegate { |
| 41 public: | 41 public: |
| 42 explicit DefaultAlarmDelegate(Profile* profile) : profile_(profile) {} | 42 explicit DefaultAlarmDelegate(content::BrowserContext* context) |
| 43 : browser_context_(context) {} |
| 43 virtual ~DefaultAlarmDelegate() {} | 44 virtual ~DefaultAlarmDelegate() {} |
| 44 | 45 |
| 45 virtual void OnAlarm(const std::string& extension_id, | 46 virtual void OnAlarm(const std::string& extension_id, |
| 46 const Alarm& alarm) OVERRIDE { | 47 const Alarm& alarm) OVERRIDE { |
| 47 scoped_ptr<base::ListValue> args(new base::ListValue()); | 48 scoped_ptr<base::ListValue> args(new base::ListValue()); |
| 48 args->Append(alarm.js_alarm->ToValue().release()); | 49 args->Append(alarm.js_alarm->ToValue().release()); |
| 49 scoped_ptr<Event> event(new Event(alarms::OnAlarm::kEventName, | 50 scoped_ptr<Event> event(new Event(alarms::OnAlarm::kEventName, |
| 50 args.Pass())); | 51 args.Pass())); |
| 51 ExtensionSystem::Get(profile_)->event_router()->DispatchEventToExtension( | 52 ExtensionSystem::Get(browser_context_) |
| 52 extension_id, event.Pass()); | 53 ->event_router() |
| 54 ->DispatchEventToExtension(extension_id, event.Pass()); |
| 53 } | 55 } |
| 54 | 56 |
| 55 private: | 57 private: |
| 56 Profile* profile_; | 58 content::BrowserContext* browser_context_; |
| 57 }; | 59 }; |
| 58 | 60 |
| 59 // Creates a TimeDelta from a delay as specified in the API. | 61 // Creates a TimeDelta from a delay as specified in the API. |
| 60 base::TimeDelta TimeDeltaFromDelay(double delay_in_minutes) { | 62 base::TimeDelta TimeDeltaFromDelay(double delay_in_minutes) { |
| 61 return base::TimeDelta::FromMicroseconds( | 63 return base::TimeDelta::FromMicroseconds( |
| 62 delay_in_minutes * base::Time::kMicrosecondsPerMinute); | 64 delay_in_minutes * base::Time::kMicrosecondsPerMinute); |
| 63 } | 65 } |
| 64 | 66 |
| 65 std::vector<Alarm> AlarmsFromValue(const base::ListValue* list) { | 67 std::vector<Alarm> AlarmsFromValue(const base::ListValue* list) { |
| 66 std::vector<Alarm> alarms; | 68 std::vector<Alarm> alarms; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 88 list->Append(alarm.release()); | 90 list->Append(alarm.release()); |
| 89 } | 91 } |
| 90 return list.Pass(); | 92 return list.Pass(); |
| 91 } | 93 } |
| 92 | 94 |
| 93 | 95 |
| 94 } // namespace | 96 } // namespace |
| 95 | 97 |
| 96 // AlarmManager | 98 // AlarmManager |
| 97 | 99 |
| 98 AlarmManager::AlarmManager(Profile* profile) | 100 AlarmManager::AlarmManager(content::BrowserContext* context) |
| 99 : profile_(profile), | 101 : profile_(Profile::FromBrowserContext(context)), |
| 100 clock_(new base::DefaultClock()), | 102 clock_(new base::DefaultClock()), |
| 101 delegate_(new DefaultAlarmDelegate(profile)) { | 103 delegate_(new DefaultAlarmDelegate(context)) { |
| 102 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED, | 104 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED, |
| 103 content::Source<Profile>(profile_)); | 105 content::Source<Profile>(profile_)); |
| 104 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNINSTALLED, | 106 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNINSTALLED, |
| 105 content::Source<Profile>(profile_)); | 107 content::Source<Profile>(profile_)); |
| 106 | 108 |
| 107 StateStore* storage = ExtensionSystem::Get(profile_)->state_store(); | 109 StateStore* storage = ExtensionSystem::Get(profile_)->state_store(); |
| 108 if (storage) | 110 if (storage) |
| 109 storage->RegisterKey(kRegisteredAlarms); | 111 storage->RegisterKey(kRegisteredAlarms); |
| 110 } | 112 } |
| 111 | 113 |
| (...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 476 if (create_info.period_in_minutes.get()) { | 478 if (create_info.period_in_minutes.get()) { |
| 477 js_alarm->period_in_minutes.reset( | 479 js_alarm->period_in_minutes.reset( |
| 478 new double(*create_info.period_in_minutes)); | 480 new double(*create_info.period_in_minutes)); |
| 479 } | 481 } |
| 480 } | 482 } |
| 481 | 483 |
| 482 Alarm::~Alarm() { | 484 Alarm::~Alarm() { |
| 483 } | 485 } |
| 484 | 486 |
| 485 } // namespace extensions | 487 } // namespace extensions |
| OLD | NEW |