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

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

Issue 23205008: Fix a bug where the minimum granular time for Alarms was not calculated properly. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Unit tests. Created 7 years, 4 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/alarm_manager.cc
diff --git a/chrome/browser/extensions/api/alarms/alarm_manager.cc b/chrome/browser/extensions/api/alarms/alarm_manager.cc
index aa483ee9363e160ee2011a141b2f97e8ac6f8d22..38a772405fe8800d13fdf1a7a9634aa040ed5f85 100644
--- a/chrome/browser/extensions/api/alarms/alarm_manager.cc
+++ b/chrome/browser/extensions/api/alarms/alarm_manager.cc
@@ -299,7 +299,7 @@ void AlarmManager::ReadFromStorage(const std::string& extension_id,
}
void AlarmManager::ScheduleNextPoll() {
- // 0. If there are no alarms, stop the timer.
+ // If there are no alarms, stop the timer.
if (alarms_.empty()) {
timer_.Stop();
return;
@@ -324,6 +324,11 @@ void AlarmManager::ScheduleNextPoll() {
soonest_alarm_time = cur_alarm_time;
if (l_it->granularity < min_granularity)
min_granularity = l_it->granularity;
+ base::TimeDelta cur_alarm_delta = cur_alarm_time - clock_->Now();
+ if (cur_alarm_delta < min_granularity)
+ min_granularity = cur_alarm_delta;
+ if (min_granularity < l_it->minimum_granularity)
Matt Perry 2014/01/16 22:58:34 I think these 2 ifs are reversed. The idea here is
Yoyo Zhou 2014/01/16 23:34:32 This lg to me.
iclelland 2014/01/17 14:54:32 I don't think it's reversed -- it should _increase
Matt Perry 2014/01/17 18:43:52 That's not the intended calculation. Each alarm's
+ min_granularity = l_it->minimum_granularity;
}
}
@@ -426,6 +431,7 @@ Alarm::Alarm(const std::string& name,
base::Time now)
: js_alarm(new api::alarms::Alarm()) {
js_alarm->name = name;
+ minimum_granularity = min_granularity;
if (create_info.when.get()) {
// Absolute scheduling.
« no previous file with comments | « chrome/browser/extensions/api/alarms/alarm_manager.h ('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