| 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 "extensions/browser/api/alarms/alarm_manager.h" | 5 #include "extensions/browser/api/alarms/alarm_manager.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 return base::TimeDelta::FromDays(1); | 38 return base::TimeDelta::FromDays(1); |
| 39 } | 39 } |
| 40 | 40 |
| 41 class DefaultAlarmDelegate : public AlarmManager::Delegate { | 41 class DefaultAlarmDelegate : public AlarmManager::Delegate { |
| 42 public: | 42 public: |
| 43 explicit DefaultAlarmDelegate(content::BrowserContext* context) | 43 explicit DefaultAlarmDelegate(content::BrowserContext* context) |
| 44 : browser_context_(context) {} | 44 : browser_context_(context) {} |
| 45 ~DefaultAlarmDelegate() override {} | 45 ~DefaultAlarmDelegate() override {} |
| 46 | 46 |
| 47 void OnAlarm(const std::string& extension_id, const Alarm& alarm) override { | 47 void OnAlarm(const std::string& extension_id, const Alarm& alarm) override { |
| 48 scoped_ptr<base::ListValue> args(new base::ListValue()); | 48 std::unique_ptr<base::ListValue> args(new base::ListValue()); |
| 49 args->Append(alarm.js_alarm->ToValue().release()); | 49 args->Append(alarm.js_alarm->ToValue().release()); |
| 50 scoped_ptr<Event> event(new Event( | 50 std::unique_ptr<Event> event(new Event( |
| 51 events::ALARMS_ON_ALARM, alarms::OnAlarm::kEventName, std::move(args))); | 51 events::ALARMS_ON_ALARM, alarms::OnAlarm::kEventName, std::move(args))); |
| 52 EventRouter::Get(browser_context_) | 52 EventRouter::Get(browser_context_) |
| 53 ->DispatchEventToExtension(extension_id, std::move(event)); | 53 ->DispatchEventToExtension(extension_id, std::move(event)); |
| 54 } | 54 } |
| 55 | 55 |
| 56 private: | 56 private: |
| 57 content::BrowserContext* browser_context_; | 57 content::BrowserContext* browser_context_; |
| 58 }; | 58 }; |
| 59 | 59 |
| 60 // Creates a TimeDelta from a delay as specified in the API. | 60 // Creates a TimeDelta from a delay as specified in the API. |
| (...skipping 11 matching lines...) Expand all Loading... |
| 72 alarms::Alarm::Populate(*alarm_dict, alarm.js_alarm.get())) { | 72 alarms::Alarm::Populate(*alarm_dict, alarm.js_alarm.get())) { |
| 73 const base::Value* time_value = NULL; | 73 const base::Value* time_value = NULL; |
| 74 if (alarm_dict->Get(kAlarmGranularity, &time_value)) | 74 if (alarm_dict->Get(kAlarmGranularity, &time_value)) |
| 75 base::GetValueAsTimeDelta(*time_value, &alarm.granularity); | 75 base::GetValueAsTimeDelta(*time_value, &alarm.granularity); |
| 76 alarms.push_back(alarm); | 76 alarms.push_back(alarm); |
| 77 } | 77 } |
| 78 } | 78 } |
| 79 return alarms; | 79 return alarms; |
| 80 } | 80 } |
| 81 | 81 |
| 82 scoped_ptr<base::ListValue> AlarmsToValue(const std::vector<Alarm>& alarms) { | 82 std::unique_ptr<base::ListValue> AlarmsToValue( |
| 83 scoped_ptr<base::ListValue> list(new base::ListValue()); | 83 const std::vector<Alarm>& alarms) { |
| 84 std::unique_ptr<base::ListValue> list(new base::ListValue()); |
| 84 for (size_t i = 0; i < alarms.size(); ++i) { | 85 for (size_t i = 0; i < alarms.size(); ++i) { |
| 85 scoped_ptr<base::DictionaryValue> alarm = alarms[i].js_alarm->ToValue(); | 86 std::unique_ptr<base::DictionaryValue> alarm = |
| 87 alarms[i].js_alarm->ToValue(); |
| 86 alarm->Set(kAlarmGranularity, | 88 alarm->Set(kAlarmGranularity, |
| 87 base::CreateTimeDeltaValue(alarms[i].granularity)); | 89 base::CreateTimeDeltaValue(alarms[i].granularity)); |
| 88 list->Append(alarm.release()); | 90 list->Append(alarm.release()); |
| 89 } | 91 } |
| 90 return list; | 92 return list; |
| 91 } | 93 } |
| 92 | 94 |
| 93 } // namespace | 95 } // namespace |
| 94 | 96 |
| 95 // AlarmManager | 97 // AlarmManager |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 283 base::Time::FromJsTime(alarm.js_alarm->scheduled_time); | 285 base::Time::FromJsTime(alarm.js_alarm->scheduled_time); |
| 284 if (next_poll_time_.is_null() || alarm_time < next_poll_time_) | 286 if (next_poll_time_.is_null() || alarm_time < next_poll_time_) |
| 285 SetNextPollTime(alarm_time); | 287 SetNextPollTime(alarm_time); |
| 286 } | 288 } |
| 287 | 289 |
| 288 void AlarmManager::WriteToStorage(const std::string& extension_id) { | 290 void AlarmManager::WriteToStorage(const std::string& extension_id) { |
| 289 StateStore* storage = ExtensionSystem::Get(browser_context_)->state_store(); | 291 StateStore* storage = ExtensionSystem::Get(browser_context_)->state_store(); |
| 290 if (!storage) | 292 if (!storage) |
| 291 return; | 293 return; |
| 292 | 294 |
| 293 scoped_ptr<base::Value> alarms; | 295 std::unique_ptr<base::Value> alarms; |
| 294 AlarmMap::iterator list = alarms_.find(extension_id); | 296 AlarmMap::iterator list = alarms_.find(extension_id); |
| 295 if (list != alarms_.end()) | 297 if (list != alarms_.end()) |
| 296 alarms.reset(AlarmsToValue(list->second).release()); | 298 alarms.reset(AlarmsToValue(list->second).release()); |
| 297 else | 299 else |
| 298 alarms.reset(AlarmsToValue(std::vector<Alarm>()).release()); | 300 alarms.reset(AlarmsToValue(std::vector<Alarm>()).release()); |
| 299 storage->SetExtensionValue(extension_id, kRegisteredAlarms, | 301 storage->SetExtensionValue(extension_id, kRegisteredAlarms, |
| 300 std::move(alarms)); | 302 std::move(alarms)); |
| 301 } | 303 } |
| 302 | 304 |
| 303 void AlarmManager::ReadFromStorage(const std::string& extension_id, | 305 void AlarmManager::ReadFromStorage(const std::string& extension_id, |
| 304 scoped_ptr<base::Value> value) { | 306 std::unique_ptr<base::Value> value) { |
| 305 base::ListValue* list = NULL; | 307 base::ListValue* list = NULL; |
| 306 if (value.get() && value->GetAsList(&list)) { | 308 if (value.get() && value->GetAsList(&list)) { |
| 307 std::vector<Alarm> alarm_states = AlarmsFromValue(list); | 309 std::vector<Alarm> alarm_states = AlarmsFromValue(list); |
| 308 for (size_t i = 0; i < alarm_states.size(); ++i) | 310 for (size_t i = 0; i < alarm_states.size(); ++i) |
| 309 AddAlarmImpl(extension_id, alarm_states[i]); | 311 AddAlarmImpl(extension_id, alarm_states[i]); |
| 310 } | 312 } |
| 311 | 313 |
| 312 ReadyQueue& extension_ready_queue = ready_actions_[extension_id]; | 314 ReadyQueue& extension_ready_queue = ready_actions_[extension_id]; |
| 313 while (!extension_ready_queue.empty()) { | 315 while (!extension_ready_queue.empty()) { |
| 314 extension_ready_queue.front().Run(extension_id); | 316 extension_ready_queue.front().Run(extension_id); |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 464 new double(*create_info.period_in_minutes)); | 466 new double(*create_info.period_in_minutes)); |
| 465 } | 467 } |
| 466 } | 468 } |
| 467 | 469 |
| 468 Alarm::Alarm(const Alarm& other) = default; | 470 Alarm::Alarm(const Alarm& other) = default; |
| 469 | 471 |
| 470 Alarm::~Alarm() { | 472 Alarm::~Alarm() { |
| 471 } | 473 } |
| 472 | 474 |
| 473 } // namespace extensions | 475 } // namespace extensions |
| OLD | NEW |