Chromium Code Reviews| 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 49c3dd6e095949787944884df427b728d7f4adcf..2864b824ecf7e998503a7f4241a2fc571d35a33f 100644 |
| --- a/chrome/browser/extensions/api/alarms/alarms_api.cc |
| +++ b/chrome/browser/extensions/api/alarms/alarms_api.cc |
| @@ -4,6 +4,7 @@ |
| #include "chrome/browser/extensions/api/alarms/alarms_api.h" |
| +#include "base/string_number_conversions.h" |
| #include "base/values.h" |
| #include "chrome/browser/extensions/api/alarms/alarm_manager.h" |
| #include "chrome/browser/extensions/extension_system.h" |
| @@ -18,17 +19,48 @@ namespace { |
| const char kDefaultAlarmName[] = ""; |
| const char kAlarmNotFound[] = "No alarm named '*' exists."; |
| +const char kDelayLessThanMinimum[] = "Delay is less than minimum of * minutes."; |
| +const char kDelayIsNonInteger[] = "Delay is not an integer value."; |
| + |
| +const int kReleaseDelayMinimum = 5; |
| +const int kDevDelayMinimum = 0; |
| + |
| +bool ValidateDelayTime(double delay_in_minutes, const Extension* extension, |
|
Matt Perry
2012/04/30 23:51:42
style: if you need to wrap, do 1 argument per line
Matt Tytel
2012/05/01 00:10:34
Done.
|
| + std::string* error) { |
| + double delay_minimum = kDevDelayMinimum; |
| + if(extension->location() != Extension::LOAD) { |
|
Matt Perry
2012/04/30 23:51:42
style: space before (
Matt Tytel
2012/05/01 00:10:34
Done.
|
| + // In release mode we check for integer delay values and a stricter delay |
| + // minimum. |
| + if (delay_in_minutes != static_cast<int>(delay_in_minutes)) { |
| + *error = kDelayIsNonInteger; |
| + return false; |
| + } |
| + delay_minimum = kReleaseDelayMinimum; |
| + } |
| + // Validate against our found delay minimum. |
| + if (delay_in_minutes < delay_minimum) { |
| + *error = ExtensionErrorUtils::FormatErrorMessage(kDelayLessThanMinimum, |
| + base::DoubleToString(delay_minimum)); |
| + return false; |
| + } |
| + return true; |
| } |
| +} // namespace |
|
Matt Perry
2012/04/30 23:51:42
style: 2 spaces before //
Matt Tytel
2012/05/01 00:10:34
Done.
|
| + |
| bool AlarmsCreateFunction::RunImpl() { |
| scoped_ptr<alarms::Create::Params> params( |
| alarms::Create::Params::Create(*args_)); |
| EXTENSION_FUNCTION_VALIDATE(params.get()); |
| + double delay_in_minutes = params->alarm_info.delay_in_minutes; |
| + if (!ValidateDelayTime(delay_in_minutes, GetExtension(), &error_)) |
| + return false; |
| + |
| linked_ptr<AlarmManager::Alarm> alarm(new AlarmManager::Alarm()); |
| alarm->name = params->name.get() ? *params->name : kDefaultAlarmName; |
| - alarm->delay_in_seconds = params->alarm_info.delay_in_seconds; |
| + alarm->delay_in_minutes = params->alarm_info.delay_in_minutes; |
| alarm->repeating = params->alarm_info.repeating.get() ? |
| *params->alarm_info.repeating : false; |
| ExtensionSystem::Get(profile())->alarm_manager()->AddAlarm( |