Index: chrome/browser/extensions/api/alarms/alarms_api.cc |
diff --git a/chrome/browser/extensions/api/alarms/alarms_api.cc b/chrome/browser/extensions/api/alarms/alarms_api.cc |
index 916a8c232e90554870d96e6a65a7fb0819b7001d..cc49b6ed466b1bec4e0743682cb060087b43956d 100644 |
--- a/chrome/browser/extensions/api/alarms/alarms_api.cc |
+++ b/chrome/browser/extensions/api/alarms/alarms_api.cc |
@@ -107,8 +107,9 @@ bool AlarmsCreateFunction::RunImpl() { |
params->name.get() ? *params->name : kDefaultAlarmName; |
std::vector<std::string> warnings; |
if (!ValidateAlarmCreateInfo( |
- alarm_name, params->alarm_info, GetExtension(), &error_, &warnings)) |
+ alarm_name, params->alarm_info, GetExtension(), &error_, &warnings)) { |
return false; |
+ } |
for (std::vector<std::string>::const_iterator it = warnings.begin(); |
it != warnings.end(); ++it) |
WriteToConsole(content::CONSOLE_MESSAGE_LEVEL_WARNING, *it); |
@@ -119,31 +120,45 @@ bool AlarmsCreateFunction::RunImpl() { |
Manifest::IsUnpackedLocation(GetExtension()->location()) ? |
kDevDelayMinimum : kReleaseDelayMinimum), |
clock_->Now()); |
- AlarmManager::Get(profile())->AddAlarm(extension_id(), alarm); |
+ AlarmManager::Get(profile())->AddAlarm(extension_id(), alarm, base::Bind( |
+ &AlarmsCreateFunction::Callback, this)); |
return true; |
} |
+void AlarmsCreateFunction::Callback() { |
+ SendResponse(true); |
+} |
+ |
bool AlarmsGetFunction::RunImpl() { |
scoped_ptr<alarms::Get::Params> params(alarms::Get::Params::Create(*args_)); |
EXTENSION_FUNCTION_VALIDATE(params.get()); |
std::string name = params->name.get() ? *params->name : kDefaultAlarmName; |
- const Alarm* alarm = |
- AlarmManager::Get(profile())->GetAlarm(extension_id(), name); |
+ AlarmManager::Get(profile())->GetAlarm(extension_id(), name, base::Bind( |
+ &AlarmsGetFunction::Callback, this, name)); |
+ |
+ return true; |
+} |
- if (!alarm) { |
+void AlarmsGetFunction::Callback( |
+ const std::string& name, extensions::Alarm* alarm) { |
+ if (alarm) { |
+ results_ = alarms::Get::Results::Create(*alarm->js_alarm); |
+ SendResponse(true); |
+ } else { |
error_ = ErrorUtils::FormatErrorMessage(kAlarmNotFound, name); |
- return false; |
+ SendResponse(false); |
} |
+} |
- results_ = alarms::Get::Results::Create(*alarm->js_alarm); |
+bool AlarmsGetAllFunction::RunImpl() { |
+ AlarmManager::Get(profile())->GetAllAlarms(extension_id(), base::Bind( |
+ &AlarmsGetAllFunction::Callback, this)); |
return true; |
} |
-bool AlarmsGetAllFunction::RunImpl() { |
- const AlarmManager::AlarmList* alarms = |
- AlarmManager::Get(profile())->GetAllAlarms(extension_id()); |
+void AlarmsGetAllFunction::Callback(const AlarmList* alarms) { |
if (alarms) { |
std::vector<linked_ptr<extensions::api::alarms::Alarm> > create_arg; |
create_arg.reserve(alarms->size()); |
@@ -154,7 +169,7 @@ bool AlarmsGetAllFunction::RunImpl() { |
} else { |
SetResult(new base::ListValue()); |
} |
- return true; |
+ SendResponse(true); |
} |
bool AlarmsClearFunction::RunImpl() { |
@@ -163,20 +178,27 @@ bool AlarmsClearFunction::RunImpl() { |
EXTENSION_FUNCTION_VALIDATE(params.get()); |
std::string name = params->name.get() ? *params->name : kDefaultAlarmName; |
- bool success = AlarmManager::Get(profile())->RemoveAlarm(extension_id(), |
- name); |
+ AlarmManager::Get(profile())->RemoveAlarm(extension_id(), name, base::Bind( |
+ &AlarmsClearFunction::Callback, this, name)); |
+ |
+ return true; |
+} |
- if (!success) { |
+void AlarmsClearFunction::Callback(const std::string& name, bool success) { |
+ if (!success) |
error_ = ErrorUtils::FormatErrorMessage(kAlarmNotFound, name); |
- return false; |
- } |
- return true; |
+ SendResponse(success); |
} |
bool AlarmsClearAllFunction::RunImpl() { |
- AlarmManager::Get(profile())->RemoveAllAlarms(extension_id()); |
+ AlarmManager::Get(profile())->RemoveAllAlarms(extension_id(), base::Bind( |
+ &AlarmsClearAllFunction::Callback, this)); |
return true; |
} |
+void AlarmsClearAllFunction::Callback() { |
+ SendResponse(true); |
+} |
+ |
} // namespace extensions |