Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(552)

Unified Diff: chrome/browser/extensions/api/alarms/alarms_api.cc

Issue 10217018: Alarm resolution changed to minutes and minimum delay added. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Made ValidateDelayTime global and used GetExtension instead. Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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(
« no previous file with comments | « chrome/browser/extensions/api/alarms/alarm_manager.cc ('k') | chrome/browser/extensions/api/alarms/alarms_api_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698