Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(261)

Side by Side Diff: extensions/browser/api/alarms/alarms_api_unittest.cc

Issue 2078103002: Make AlarmManager::Alarm non copyable. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address comments Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « extensions/browser/api/alarms/alarms_api.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « extensions/browser/api/alarms/alarms_api.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698