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