Index: chrome/browser/extensions/api/alarms/alarms_api_unittest.cc |
diff --git a/chrome/browser/extensions/api/alarms/alarms_api_unittest.cc b/chrome/browser/extensions/api/alarms/alarms_api_unittest.cc |
index fa71090549ee88dd496c870a7d682bf722b90e78..91dc06abc65787a3028b7262e21a7ac47f587a8b 100644 |
--- a/chrome/browser/extensions/api/alarms/alarms_api_unittest.cc |
+++ b/chrome/browser/extensions/api/alarms/alarms_api_unittest.cc |
@@ -616,4 +616,29 @@ TEST_F(ExtensionAlarmsSchedulingTest, MinimumGranularity) { |
alarm_manager_->test_next_poll_time_.ToJsTime()); |
} |
+TEST_F(ExtensionAlarmsSchedulingTest, DifferentMinimumGranularities) { |
+ test_clock_->SetNow(base::Time::FromJsTime(0)); |
+ // Create an alarm to go off in 12 seconds. This uses the default, unpacked |
+ // extension - so there is no minimum granularity. |
+ CreateAlarm("[\"a\", {\"periodInMinutes\": 0.2}]"); // 12 seconds. |
+ |
+ // Create a new extension, which is packed, and has a granularity of 1 minute. |
+ // CreateAlarm() uses extension_, so keep a ref of the old one around, and |
+ // repopulate extension_. |
+ scoped_refptr<Extension> extension2(extension_); |
+ extension_ = |
+ utils::CreateEmptyExtensionWithLocation(extensions::Manifest::INTERNAL); |
+ |
+ CreateAlarm("[\"b\", {\"periodInMinutes\": 2}]"); |
+ |
+ alarm_manager_->last_poll_time_ = base::Time::FromJsTime(0); |
+ alarm_manager_->ScheduleNextPoll(); |
+ |
+ // The next poll time should be 12 seconds from now - the time at which the |
+ // first alarm should go off. |
+ EXPECT_DOUBLE_EQ((alarm_manager_->last_poll_time_ + |
+ base::TimeDelta::FromSeconds(12)).ToJsTime(), |
+ alarm_manager_->test_next_poll_time_.ToJsTime()); |
+} |
+ |
} // namespace extensions |