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