| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 // This file tests the chrome.alarms extension API. | 5 // This file tests the chrome.alarms extension API. | 
| 6 | 6 | 
| 7 #include "base/test/simple_test_clock.h" | 7 #include "base/test/simple_test_clock.h" | 
| 8 #include "base/values.h" | 8 #include "base/values.h" | 
| 9 #include "chrome/browser/extensions/api/alarms/alarm_manager.h" | 9 #include "chrome/browser/extensions/api/alarms/alarm_manager.h" | 
| 10 #include "chrome/browser/extensions/api/alarms/alarms_api.h" | 10 #include "chrome/browser/extensions/api/alarms/alarms_api.h" | 
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 144   scoped_refptr<extensions::Extension> extension_; | 144   scoped_refptr<extensions::Extension> extension_; | 
| 145   content::WebContents* contents_; | 145   content::WebContents* contents_; | 
| 146 }; | 146 }; | 
| 147 | 147 | 
| 148 TEST_F(ExtensionAlarmsTest, Create) { | 148 TEST_F(ExtensionAlarmsTest, Create) { | 
| 149   test_clock_.SetNow(base::Time::FromDoubleT(10)); | 149   test_clock_.SetNow(base::Time::FromDoubleT(10)); | 
| 150   // Create 1 non-repeating alarm. | 150   // Create 1 non-repeating alarm. | 
| 151   CreateAlarm("[null, {\"delayInMinutes\": 0}]"); | 151   CreateAlarm("[null, {\"delayInMinutes\": 0}]"); | 
| 152 | 152 | 
| 153   const Alarm* alarm = | 153   const Alarm* alarm = | 
| 154       alarm_manager_->GetAlarm(extension_->id(), ""); | 154       alarm_manager_->GetAlarm(extension_->id(), std::string()); | 
| 155   ASSERT_TRUE(alarm); | 155   ASSERT_TRUE(alarm); | 
| 156   EXPECT_EQ("", alarm->js_alarm->name); | 156   EXPECT_EQ("", alarm->js_alarm->name); | 
| 157   EXPECT_DOUBLE_EQ(10000, alarm->js_alarm->scheduled_time); | 157   EXPECT_DOUBLE_EQ(10000, alarm->js_alarm->scheduled_time); | 
| 158   EXPECT_FALSE(alarm->js_alarm->period_in_minutes.get()); | 158   EXPECT_FALSE(alarm->js_alarm->period_in_minutes.get()); | 
| 159 | 159 | 
| 160   // Now wait for the alarm to fire. Our test delegate will quit the | 160   // Now wait for the alarm to fire. Our test delegate will quit the | 
| 161   // MessageLoop when that happens. | 161   // MessageLoop when that happens. | 
| 162   MessageLoop::current()->Run(); | 162   MessageLoop::current()->Run(); | 
| 163 | 163 | 
| 164   ASSERT_EQ(1u, alarm_delegate_->alarms_seen.size()); | 164   ASSERT_EQ(1u, alarm_delegate_->alarms_seen.size()); | 
| 165   EXPECT_EQ("", alarm_delegate_->alarms_seen[0]); | 165   EXPECT_EQ("", alarm_delegate_->alarms_seen[0]); | 
| 166 | 166 | 
| 167   // Ensure the alarm is gone. | 167   // Ensure the alarm is gone. | 
| 168   { | 168   { | 
| 169     const AlarmManager::AlarmList* alarms = | 169     const AlarmManager::AlarmList* alarms = | 
| 170         alarm_manager_->GetAllAlarms(extension_->id()); | 170         alarm_manager_->GetAllAlarms(extension_->id()); | 
| 171     ASSERT_FALSE(alarms); | 171     ASSERT_FALSE(alarms); | 
| 172   } | 172   } | 
| 173 } | 173 } | 
| 174 | 174 | 
| 175 TEST_F(ExtensionAlarmsTest, CreateRepeating) { | 175 TEST_F(ExtensionAlarmsTest, CreateRepeating) { | 
| 176   test_clock_.SetNow(base::Time::FromDoubleT(10)); | 176   test_clock_.SetNow(base::Time::FromDoubleT(10)); | 
| 177 | 177 | 
| 178   // Create 1 repeating alarm. | 178   // Create 1 repeating alarm. | 
| 179   CreateAlarm("[null, {\"periodInMinutes\": 0.001}]"); | 179   CreateAlarm("[null, {\"periodInMinutes\": 0.001}]"); | 
| 180 | 180 | 
| 181   const Alarm* alarm = | 181   const Alarm* alarm = | 
| 182       alarm_manager_->GetAlarm(extension_->id(), ""); | 182       alarm_manager_->GetAlarm(extension_->id(), std::string()); | 
| 183   ASSERT_TRUE(alarm); | 183   ASSERT_TRUE(alarm); | 
| 184   EXPECT_EQ("", alarm->js_alarm->name); | 184   EXPECT_EQ("", alarm->js_alarm->name); | 
| 185   EXPECT_DOUBLE_EQ(10060, alarm->js_alarm->scheduled_time); | 185   EXPECT_DOUBLE_EQ(10060, alarm->js_alarm->scheduled_time); | 
| 186   EXPECT_THAT(alarm->js_alarm->period_in_minutes, | 186   EXPECT_THAT(alarm->js_alarm->period_in_minutes, | 
| 187               testing::Pointee(testing::DoubleEq(0.001))); | 187               testing::Pointee(testing::DoubleEq(0.001))); | 
| 188 | 188 | 
| 189   test_clock_.Advance(base::TimeDelta::FromSeconds(1)); | 189   test_clock_.Advance(base::TimeDelta::FromSeconds(1)); | 
| 190   // Now wait for the alarm to fire. Our test delegate will quit the | 190   // Now wait for the alarm to fire. Our test delegate will quit the | 
| 191   // MessageLoop when that happens. | 191   // MessageLoop when that happens. | 
| 192   MessageLoop::current()->Run(); | 192   MessageLoop::current()->Run(); | 
| 193 | 193 | 
| 194   test_clock_.Advance(base::TimeDelta::FromSeconds(1)); | 194   test_clock_.Advance(base::TimeDelta::FromSeconds(1)); | 
| 195   // Wait again, and ensure the alarm fires again. | 195   // Wait again, and ensure the alarm fires again. | 
| 196   alarm_manager_->ScheduleNextPoll(); | 196   alarm_manager_->ScheduleNextPoll(); | 
| 197   MessageLoop::current()->Run(); | 197   MessageLoop::current()->Run(); | 
| 198 | 198 | 
| 199   ASSERT_EQ(2u, alarm_delegate_->alarms_seen.size()); | 199   ASSERT_EQ(2u, alarm_delegate_->alarms_seen.size()); | 
| 200   EXPECT_EQ("", alarm_delegate_->alarms_seen[0]); | 200   EXPECT_EQ("", alarm_delegate_->alarms_seen[0]); | 
| 201 } | 201 } | 
| 202 | 202 | 
| 203 TEST_F(ExtensionAlarmsTest, CreateAbsolute) { | 203 TEST_F(ExtensionAlarmsTest, CreateAbsolute) { | 
| 204   test_clock_.SetNow(base::Time::FromDoubleT(9.99)); | 204   test_clock_.SetNow(base::Time::FromDoubleT(9.99)); | 
| 205   CreateAlarm("[null, {\"when\": 10001}]"); | 205   CreateAlarm("[null, {\"when\": 10001}]"); | 
| 206 | 206 | 
| 207   const Alarm* alarm = | 207   const Alarm* alarm = | 
| 208       alarm_manager_->GetAlarm(extension_->id(), ""); | 208       alarm_manager_->GetAlarm(extension_->id(), std::string()); | 
| 209   ASSERT_TRUE(alarm); | 209   ASSERT_TRUE(alarm); | 
| 210   EXPECT_EQ("", alarm->js_alarm->name); | 210   EXPECT_EQ("", alarm->js_alarm->name); | 
| 211   EXPECT_DOUBLE_EQ(10001, alarm->js_alarm->scheduled_time); | 211   EXPECT_DOUBLE_EQ(10001, alarm->js_alarm->scheduled_time); | 
| 212   EXPECT_THAT(alarm->js_alarm->period_in_minutes, | 212   EXPECT_THAT(alarm->js_alarm->period_in_minutes, | 
| 213               testing::IsNull()); | 213               testing::IsNull()); | 
| 214 | 214 | 
| 215   test_clock_.SetNow(base::Time::FromDoubleT(10.1)); | 215   test_clock_.SetNow(base::Time::FromDoubleT(10.1)); | 
| 216   // Now wait for the alarm to fire. Our test delegate will quit the | 216   // Now wait for the alarm to fire. Our test delegate will quit the | 
| 217   // MessageLoop when that happens. | 217   // MessageLoop when that happens. | 
| 218   MessageLoop::current()->Run(); | 218   MessageLoop::current()->Run(); | 
| 219 | 219 | 
| 220   ASSERT_FALSE(alarm_manager_->GetAlarm(extension_->id(), "")); | 220   ASSERT_FALSE(alarm_manager_->GetAlarm(extension_->id(), std::string())); | 
| 221 | 221 | 
| 222   ASSERT_EQ(1u, alarm_delegate_->alarms_seen.size()); | 222   ASSERT_EQ(1u, alarm_delegate_->alarms_seen.size()); | 
| 223   EXPECT_EQ("", alarm_delegate_->alarms_seen[0]); | 223   EXPECT_EQ("", alarm_delegate_->alarms_seen[0]); | 
| 224 } | 224 } | 
| 225 | 225 | 
| 226 TEST_F(ExtensionAlarmsTest, CreateRepeatingWithQuickFirstCall) { | 226 TEST_F(ExtensionAlarmsTest, CreateRepeatingWithQuickFirstCall) { | 
| 227   test_clock_.SetNow(base::Time::FromDoubleT(9.99)); | 227   test_clock_.SetNow(base::Time::FromDoubleT(9.99)); | 
| 228   CreateAlarm("[null, {\"when\": 10001, \"periodInMinutes\": 0.001}]"); | 228   CreateAlarm("[null, {\"when\": 10001, \"periodInMinutes\": 0.001}]"); | 
| 229 | 229 | 
| 230   const Alarm* alarm = | 230   const Alarm* alarm = | 
| 231       alarm_manager_->GetAlarm(extension_->id(), ""); | 231       alarm_manager_->GetAlarm(extension_->id(), std::string()); | 
| 232   ASSERT_TRUE(alarm); | 232   ASSERT_TRUE(alarm); | 
| 233   EXPECT_EQ("", alarm->js_alarm->name); | 233   EXPECT_EQ("", alarm->js_alarm->name); | 
| 234   EXPECT_DOUBLE_EQ(10001, alarm->js_alarm->scheduled_time); | 234   EXPECT_DOUBLE_EQ(10001, alarm->js_alarm->scheduled_time); | 
| 235   EXPECT_THAT(alarm->js_alarm->period_in_minutes, | 235   EXPECT_THAT(alarm->js_alarm->period_in_minutes, | 
| 236               testing::Pointee(testing::DoubleEq(0.001))); | 236               testing::Pointee(testing::DoubleEq(0.001))); | 
| 237 | 237 | 
| 238   test_clock_.SetNow(base::Time::FromDoubleT(10.1)); | 238   test_clock_.SetNow(base::Time::FromDoubleT(10.1)); | 
| 239   // Now wait for the alarm to fire. Our test delegate will quit the | 239   // Now wait for the alarm to fire. Our test delegate will quit the | 
| 240   // MessageLoop when that happens. | 240   // MessageLoop when that happens. | 
| 241   MessageLoop::current()->Run(); | 241   MessageLoop::current()->Run(); | 
| 242 | 242 | 
| 243   ASSERT_TRUE(alarm_manager_->GetAlarm(extension_->id(), "")); | 243   ASSERT_TRUE(alarm_manager_->GetAlarm(extension_->id(), std::string())); | 
| 244   EXPECT_THAT(alarm_delegate_->alarms_seen, testing::ElementsAre("")); | 244   EXPECT_THAT(alarm_delegate_->alarms_seen, testing::ElementsAre("")); | 
| 245 | 245 | 
| 246   test_clock_.SetNow(base::Time::FromDoubleT(10.7)); | 246   test_clock_.SetNow(base::Time::FromDoubleT(10.7)); | 
| 247   MessageLoop::current()->Run(); | 247   MessageLoop::current()->Run(); | 
| 248 | 248 | 
| 249   ASSERT_TRUE(alarm_manager_->GetAlarm(extension_->id(), "")); | 249   ASSERT_TRUE(alarm_manager_->GetAlarm(extension_->id(), std::string())); | 
| 250   EXPECT_THAT(alarm_delegate_->alarms_seen, testing::ElementsAre("", "")); | 250   EXPECT_THAT(alarm_delegate_->alarms_seen, testing::ElementsAre("", "")); | 
| 251 } | 251 } | 
| 252 | 252 | 
| 253 TEST_F(ExtensionAlarmsTest, CreateDupe) { | 253 TEST_F(ExtensionAlarmsTest, CreateDupe) { | 
| 254   test_clock_.SetNow(base::Time::FromDoubleT(10)); | 254   test_clock_.SetNow(base::Time::FromDoubleT(10)); | 
| 255 | 255 | 
| 256   // Create 2 duplicate alarms. The first should be overridden. | 256   // Create 2 duplicate alarms. The first should be overridden. | 
| 257   CreateAlarm("[\"dup\", {\"delayInMinutes\": 1}]"); | 257   CreateAlarm("[\"dup\", {\"delayInMinutes\": 1}]"); | 
| 258   CreateAlarm("[\"dup\", {\"delayInMinutes\": 7}]"); | 258   CreateAlarm("[\"dup\", {\"delayInMinutes\": 7}]"); | 
| 259 | 259 | 
| (...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 512   EXPECT_TRUE(alarm_manager_->timer_.IsRunning()); | 512   EXPECT_TRUE(alarm_manager_->timer_.IsRunning()); | 
| 513   MessageLoop::current()->Run(); | 513   MessageLoop::current()->Run(); | 
| 514   EXPECT_FALSE(alarm_manager_->timer_.IsRunning()); | 514   EXPECT_FALSE(alarm_manager_->timer_.IsRunning()); | 
| 515   CreateAlarm("[\"bb\", {\"delayInMinutes\": 10}]"); | 515   CreateAlarm("[\"bb\", {\"delayInMinutes\": 10}]"); | 
| 516   EXPECT_TRUE(alarm_manager_->timer_.IsRunning()); | 516   EXPECT_TRUE(alarm_manager_->timer_.IsRunning()); | 
| 517   alarm_manager_->RemoveAllAlarms(extension_->id()); | 517   alarm_manager_->RemoveAllAlarms(extension_->id()); | 
| 518   EXPECT_FALSE(alarm_manager_->timer_.IsRunning()); | 518   EXPECT_FALSE(alarm_manager_->timer_.IsRunning()); | 
| 519 } | 519 } | 
| 520 | 520 | 
| 521 }  // namespace extensions | 521 }  // namespace extensions | 
| OLD | NEW | 
|---|