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 <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "base/json/json_reader.h" | 9 #include "base/json/json_reader.h" |
10 #include "base/test/simple_test_clock.h" | 10 #include "base/test/simple_test_clock.h" |
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
269 extension()->id(), std::string(), | 269 extension()->id(), std::string(), |
270 base::Bind( | 270 base::Bind( |
271 ExtensionAlarmsTestCreateRepeatingWithQuickFirstCallGetAlarm1Callback, | 271 ExtensionAlarmsTestCreateRepeatingWithQuickFirstCallGetAlarm1Callback, |
272 this)); | 272 this)); |
273 } | 273 } |
274 | 274 |
275 void ExtensionAlarmsTestCreateDupeGetAllAlarmsCallback( | 275 void ExtensionAlarmsTestCreateDupeGetAllAlarmsCallback( |
276 const AlarmManager::AlarmList* alarms) { | 276 const AlarmManager::AlarmList* alarms) { |
277 ASSERT_TRUE(alarms); | 277 ASSERT_TRUE(alarms); |
278 EXPECT_EQ(1u, alarms->size()); | 278 EXPECT_EQ(1u, alarms->size()); |
279 EXPECT_DOUBLE_EQ(430000, (*alarms)[0].js_alarm->scheduled_time); | 279 EXPECT_DOUBLE_EQ(430000, (*alarms)[0]->js_alarm->scheduled_time); |
280 } | 280 } |
281 | 281 |
282 TEST_F(ExtensionAlarmsTest, CreateDupe) { | 282 TEST_F(ExtensionAlarmsTest, CreateDupe) { |
283 test_clock_->SetNow(base::Time::FromDoubleT(10)); | 283 test_clock_->SetNow(base::Time::FromDoubleT(10)); |
284 | 284 |
285 // Create 2 duplicate alarms. The first should be overridden. | 285 // Create 2 duplicate alarms. The first should be overridden. |
286 CreateAlarm("[\"dup\", {\"delayInMinutes\": 1}]"); | 286 CreateAlarm("[\"dup\", {\"delayInMinutes\": 1}]"); |
287 CreateAlarm("[\"dup\", {\"delayInMinutes\": 7}]"); | 287 CreateAlarm("[\"dup\", {\"delayInMinutes\": 7}]"); |
288 | 288 |
289 alarm_manager_->GetAllAlarms( | 289 alarm_manager_->GetAllAlarms( |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
385 EXPECT_EQ("7", alarm->name); | 385 EXPECT_EQ("7", alarm->name); |
386 EXPECT_THAT(alarm->period_in_minutes, testing::Pointee(7)); | 386 EXPECT_THAT(alarm->period_in_minutes, testing::Pointee(7)); |
387 } | 387 } |
388 } | 388 } |
389 | 389 |
390 void ExtensionAlarmsTestClearGetAllAlarms2Callback( | 390 void ExtensionAlarmsTestClearGetAllAlarms2Callback( |
391 const AlarmManager::AlarmList* alarms) { | 391 const AlarmManager::AlarmList* alarms) { |
392 // Ensure the 0.001-minute alarm is still there, since it's repeating. | 392 // Ensure the 0.001-minute alarm is still there, since it's repeating. |
393 ASSERT_TRUE(alarms); | 393 ASSERT_TRUE(alarms); |
394 EXPECT_EQ(1u, alarms->size()); | 394 EXPECT_EQ(1u, alarms->size()); |
395 EXPECT_THAT((*alarms)[0].js_alarm->period_in_minutes, | 395 EXPECT_THAT((*alarms)[0]->js_alarm->period_in_minutes, |
396 testing::Pointee(0.001)); | 396 testing::Pointee(0.001)); |
397 } | 397 } |
398 | 398 |
399 void ExtensionAlarmsTestClearGetAllAlarms1Callback( | 399 void ExtensionAlarmsTestClearGetAllAlarms1Callback( |
400 ExtensionAlarmsTest* test, | 400 ExtensionAlarmsTest* test, |
401 const AlarmManager::AlarmList* alarms) { | 401 const AlarmManager::AlarmList* alarms) { |
402 ASSERT_TRUE(alarms); | 402 ASSERT_TRUE(alarms); |
403 EXPECT_EQ(1u, alarms->size()); | 403 EXPECT_EQ(1u, alarms->size()); |
404 EXPECT_THAT((*alarms)[0].js_alarm->period_in_minutes, | 404 EXPECT_THAT((*alarms)[0]->js_alarm->period_in_minutes, |
405 testing::Pointee(0.001)); | 405 testing::Pointee(0.001)); |
406 | 406 |
407 // Now wait for the alarms to fire, and ensure the cancelled alarms don't | 407 // Now wait for the alarms to fire, and ensure the cancelled alarms don't |
408 // fire. | 408 // fire. |
409 test->test_clock_->Advance(base::TimeDelta::FromMilliseconds(60)); | 409 test->test_clock_->Advance(base::TimeDelta::FromMilliseconds(60)); |
410 RunScheduleNextPoll(test->alarm_manager_); | 410 RunScheduleNextPoll(test->alarm_manager_); |
411 base::MessageLoop::current()->Run(); | 411 base::MessageLoop::current()->Run(); |
412 | 412 |
413 ASSERT_EQ(1u, test->alarm_delegate_->alarms_seen.size()); | 413 ASSERT_EQ(1u, test->alarm_delegate_->alarms_seen.size()); |
414 EXPECT_EQ("", test->alarm_delegate_->alarms_seen[0]); | 414 EXPECT_EQ("", test->alarm_delegate_->alarms_seen[0]); |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
530 } | 530 } |
531 { | 531 { |
532 CreateAlarm("[\"a\", {\"delayInMinutes\": 10}]"); | 532 CreateAlarm("[\"a\", {\"delayInMinutes\": 10}]"); |
533 CreateAlarm("[\"bb\", {\"delayInMinutes\": 21}]"); | 533 CreateAlarm("[\"bb\", {\"delayInMinutes\": 21}]"); |
534 VerifyScheduledTime("a"); | 534 VerifyScheduledTime("a"); |
535 RemoveAllAlarms(); | 535 RemoveAllAlarms(); |
536 } | 536 } |
537 { | 537 { |
538 test_clock_->SetNow(base::Time::FromDoubleT(10)); | 538 test_clock_->SetNow(base::Time::FromDoubleT(10)); |
539 CreateAlarm("[\"a\", {\"periodInMinutes\": 10}]"); | 539 CreateAlarm("[\"a\", {\"periodInMinutes\": 10}]"); |
540 Alarm alarm; | 540 std::unique_ptr<Alarm> alarm(new Alarm); |
541 alarm.js_alarm->name = "bb"; | 541 alarm->js_alarm->name = "bb"; |
542 alarm.js_alarm->scheduled_time = 30 * 60000; | 542 alarm->js_alarm->scheduled_time = 30 * 60000; |
543 alarm.js_alarm->period_in_minutes.reset(new double(30)); | 543 alarm->js_alarm->period_in_minutes.reset(new double(30)); |
544 alarm_manager_->AddAlarmImpl(extension()->id(), alarm); | 544 alarm_manager_->AddAlarmImpl(extension()->id(), std::move(alarm)); |
545 VerifyScheduledTime("a"); | 545 VerifyScheduledTime("a"); |
546 RemoveAllAlarms(); | 546 RemoveAllAlarms(); |
547 } | 547 } |
548 { | 548 { |
549 test_clock_->SetNow(base::Time::FromDoubleT(3 * 60 + 1)); | 549 test_clock_->SetNow(base::Time::FromDoubleT(3 * 60 + 1)); |
550 Alarm alarm; | 550 std::unique_ptr<Alarm> alarm(new Alarm); |
551 alarm.js_alarm->name = "bb"; | 551 alarm->js_alarm->name = "bb"; |
552 alarm.js_alarm->scheduled_time = 3 * 60000; | 552 alarm->js_alarm->scheduled_time = 3 * 60000; |
553 alarm.js_alarm->period_in_minutes.reset(new double(3)); | 553 alarm->js_alarm->period_in_minutes.reset(new double(3)); |
554 alarm_manager_->AddAlarmImpl(extension()->id(), alarm); | 554 alarm_manager_->AddAlarmImpl(extension()->id(), std::move(alarm)); |
555 base::MessageLoop::current()->Run(); | 555 base::MessageLoop::current()->Run(); |
556 EXPECT_EQ( | 556 EXPECT_EQ( |
557 base::Time::FromJsTime(3 * 60000) + base::TimeDelta::FromMinutes(3), | 557 base::Time::FromJsTime(3 * 60000) + base::TimeDelta::FromMinutes(3), |
558 alarm_manager_->next_poll_time_); | 558 alarm_manager_->next_poll_time_); |
559 RemoveAllAlarms(); | 559 RemoveAllAlarms(); |
560 } | 560 } |
561 { | 561 { |
562 test_clock_->SetNow(base::Time::FromDoubleT(4 * 60 + 1)); | 562 test_clock_->SetNow(base::Time::FromDoubleT(4 * 60 + 1)); |
563 CreateAlarm("[\"a\", {\"periodInMinutes\": 2}]"); | 563 CreateAlarm("[\"a\", {\"periodInMinutes\": 2}]"); |
564 RemoveAlarm("a"); | 564 RemoveAlarm("a"); |
565 Alarm alarm2; | 565 std::unique_ptr<Alarm> alarm2(new Alarm); |
566 alarm2.js_alarm->name = "bb"; | 566 alarm2->js_alarm->name = "bb"; |
567 alarm2.js_alarm->scheduled_time = 4 * 60000; | 567 alarm2->js_alarm->scheduled_time = 4 * 60000; |
568 alarm2.js_alarm->period_in_minutes.reset(new double(4)); | 568 alarm2->js_alarm->period_in_minutes.reset(new double(4)); |
569 alarm_manager_->AddAlarmImpl(extension()->id(), alarm2); | 569 alarm_manager_->AddAlarmImpl(extension()->id(), std::move(alarm2)); |
570 Alarm alarm3; | 570 std::unique_ptr<Alarm> alarm3(new Alarm); |
571 alarm3.js_alarm->name = "ccc"; | 571 alarm3->js_alarm->name = "ccc"; |
572 alarm3.js_alarm->scheduled_time = 25 * 60000; | 572 alarm3->js_alarm->scheduled_time = 25 * 60000; |
573 alarm3.js_alarm->period_in_minutes.reset(new double(25)); | 573 alarm3->js_alarm->period_in_minutes.reset(new double(25)); |
574 alarm_manager_->AddAlarmImpl(extension()->id(), alarm3); | 574 alarm_manager_->AddAlarmImpl(extension()->id(), std::move(alarm3)); |
575 base::MessageLoop::current()->Run(); | 575 base::MessageLoop::current()->Run(); |
576 EXPECT_EQ( | 576 EXPECT_EQ( |
577 base::Time::FromJsTime(4 * 60000) + base::TimeDelta::FromMinutes(4), | 577 base::Time::FromJsTime(4 * 60000) + base::TimeDelta::FromMinutes(4), |
578 alarm_manager_->next_poll_time_); | 578 alarm_manager_->next_poll_time_); |
579 RemoveAllAlarms(); | 579 RemoveAllAlarms(); |
580 } | 580 } |
581 } | 581 } |
582 | 582 |
583 TEST_F(ExtensionAlarmsSchedulingTest, ReleasedExtensionPollsInfrequently) { | 583 TEST_F(ExtensionAlarmsSchedulingTest, ReleasedExtensionPollsInfrequently) { |
584 set_extension( | 584 set_extension( |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
753 | 753 |
754 // The next poll should be the first poll that hasn't happened and is in-line | 754 // The next poll should be the first poll that hasn't happened and is in-line |
755 // with the original scheduling. | 755 // with the original scheduling. |
756 // Last poll was at 380 seconds; next poll should be at 480 seconds. | 756 // Last poll was at 380 seconds; next poll should be at 480 seconds. |
757 EXPECT_DOUBLE_EQ((alarm_manager_->last_poll_time_ + | 757 EXPECT_DOUBLE_EQ((alarm_manager_->last_poll_time_ + |
758 base::TimeDelta::FromSeconds(100)).ToJsTime(), | 758 base::TimeDelta::FromSeconds(100)).ToJsTime(), |
759 alarm_manager_->next_poll_time_.ToJsTime()); | 759 alarm_manager_->next_poll_time_.ToJsTime()); |
760 } | 760 } |
761 | 761 |
762 } // namespace extensions | 762 } // namespace extensions |
OLD | NEW |