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 |