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( |