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

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

Issue 23071003: Delta from the first fix. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/extensions/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 "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 395 matching lines...) Expand 10 before | Expand all | Expand 10 after
406 406
407 void ExtensionAlarmsTestClearGetAllAlarms1Callback( 407 void ExtensionAlarmsTestClearGetAllAlarms1Callback(
408 ExtensionAlarmsTest* test, const AlarmManager::AlarmList* alarms) { 408 ExtensionAlarmsTest* test, const AlarmManager::AlarmList* alarms) {
409 ASSERT_TRUE(alarms); 409 ASSERT_TRUE(alarms);
410 EXPECT_EQ(1u, alarms->size()); 410 EXPECT_EQ(1u, alarms->size());
411 EXPECT_THAT((*alarms)[0].js_alarm->period_in_minutes, 411 EXPECT_THAT((*alarms)[0].js_alarm->period_in_minutes,
412 testing::Pointee(0.001)); 412 testing::Pointee(0.001));
413 413
414 // Now wait for the alarms to fire, and ensure the cancelled alarms don't 414 // Now wait for the alarms to fire, and ensure the cancelled alarms don't
415 // fire. 415 // fire.
416 test->test_clock_->Advance(base::TimeDelta::FromMilliseconds(60));
416 RunScheduleNextPoll(test->alarm_manager_); 417 RunScheduleNextPoll(test->alarm_manager_);
417 base::MessageLoop::current()->Run(); 418 base::MessageLoop::current()->Run();
418 419
419 ASSERT_EQ(1u, test->alarm_delegate_->alarms_seen.size()); 420 ASSERT_EQ(1u, test->alarm_delegate_->alarms_seen.size());
420 EXPECT_EQ("", test->alarm_delegate_->alarms_seen[0]); 421 EXPECT_EQ("", test->alarm_delegate_->alarms_seen[0]);
421 422
422 // Ensure the 0.001-minute alarm is still there, since it's repeating. 423 // Ensure the 0.001-minute alarm is still there, since it's repeating.
423 test->alarm_manager_->GetAllAlarms(test->extension_->id(), base::Bind( 424 test->alarm_manager_->GetAllAlarms(test->extension_->id(), base::Bind(
424 ExtensionAlarmsTestClearGetAllAlarms2Callback)); 425 ExtensionAlarmsTestClearGetAllAlarms2Callback));
425 } 426 }
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 CreateAlarms(3); 473 CreateAlarms(3);
473 alarm_manager_->GetAllAlarms(extension_->id(), base::Bind( 474 alarm_manager_->GetAllAlarms(extension_->id(), base::Bind(
474 ExtensionAlarmsTestClearAllGetAllAlarms1Callback, this)); 475 ExtensionAlarmsTestClearAllGetAllAlarms1Callback, this));
475 } 476 }
476 477
477 class ExtensionAlarmsSchedulingTest : public ExtensionAlarmsTest { 478 class ExtensionAlarmsSchedulingTest : public ExtensionAlarmsTest {
478 void GetAlarmCallback(Alarm* alarm) { 479 void GetAlarmCallback(Alarm* alarm) {
479 CHECK(alarm); 480 CHECK(alarm);
480 const base::Time scheduled_time = 481 const base::Time scheduled_time =
481 base::Time::FromJsTime(alarm->js_alarm->scheduled_time); 482 base::Time::FromJsTime(alarm->js_alarm->scheduled_time);
482 EXPECT_EQ(scheduled_time, alarm_manager_->next_poll_time_); 483 EXPECT_EQ(scheduled_time, alarm_manager_->test_next_poll_time_);
483 } 484 }
484 485
485 static void RemoveAlarmCallback (bool success) { EXPECT_TRUE(success); } 486 static void RemoveAlarmCallback (bool success) { EXPECT_TRUE(success); }
486 static void RemoveAllAlarmsCallback () {} 487 static void RemoveAllAlarmsCallback () {}
487 public: 488 public:
488 // Get the time that the alarm named is scheduled to run. 489 // Get the time that the alarm named is scheduled to run.
489 void VerifyScheduledTime(const std::string& alarm_name) { 490 void VerifyScheduledTime(const std::string& alarm_name) {
490 alarm_manager_->GetAlarm(extension_->id(), alarm_name, base::Bind( 491 alarm_manager_->GetAlarm(extension_->id(), alarm_name, base::Bind(
491 &ExtensionAlarmsSchedulingTest::GetAlarmCallback, 492 &ExtensionAlarmsSchedulingTest::GetAlarmCallback,
492 base::Unretained(this))); 493 base::Unretained(this)));
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 } 532 }
532 { 533 {
533 test_clock_->SetNow(base::Time::FromDoubleT(3 * 60 + 1)); 534 test_clock_->SetNow(base::Time::FromDoubleT(3 * 60 + 1));
534 Alarm alarm; 535 Alarm alarm;
535 alarm.js_alarm->name = "bb"; 536 alarm.js_alarm->name = "bb";
536 alarm.js_alarm->scheduled_time = 3 * 60000; 537 alarm.js_alarm->scheduled_time = 3 * 60000;
537 alarm.js_alarm->period_in_minutes.reset(new double(3)); 538 alarm.js_alarm->period_in_minutes.reset(new double(3));
538 alarm_manager_->AddAlarmImpl(extension_->id(), alarm); 539 alarm_manager_->AddAlarmImpl(extension_->id(), alarm);
539 base::MessageLoop::current()->Run(); 540 base::MessageLoop::current()->Run();
540 EXPECT_EQ(alarm_manager_->last_poll_time_ + base::TimeDelta::FromMinutes(3), 541 EXPECT_EQ(alarm_manager_->last_poll_time_ + base::TimeDelta::FromMinutes(3),
541 alarm_manager_->next_poll_time_); 542 alarm_manager_->test_next_poll_time_);
542 RemoveAllAlarms(); 543 RemoveAllAlarms();
543 } 544 }
544 { 545 {
545 test_clock_->SetNow(base::Time::FromDoubleT(4 * 60 + 1)); 546 test_clock_->SetNow(base::Time::FromDoubleT(4 * 60 + 1));
546 CreateAlarm("[\"a\", {\"periodInMinutes\": 2}]"); 547 CreateAlarm("[\"a\", {\"periodInMinutes\": 2}]");
547 RemoveAlarm("a"); 548 RemoveAlarm("a");
548 Alarm alarm2; 549 Alarm alarm2;
549 alarm2.js_alarm->name = "bb"; 550 alarm2.js_alarm->name = "bb";
550 alarm2.js_alarm->scheduled_time = 4 * 60000; 551 alarm2.js_alarm->scheduled_time = 4 * 60000;
551 alarm2.js_alarm->period_in_minutes.reset(new double(4)); 552 alarm2.js_alarm->period_in_minutes.reset(new double(4));
552 alarm_manager_->AddAlarmImpl(extension_->id(), alarm2); 553 alarm_manager_->AddAlarmImpl(extension_->id(), alarm2);
553 Alarm alarm3; 554 Alarm alarm3;
554 alarm3.js_alarm->name = "ccc"; 555 alarm3.js_alarm->name = "ccc";
555 alarm3.js_alarm->scheduled_time = 25 * 60000; 556 alarm3.js_alarm->scheduled_time = 25 * 60000;
556 alarm3.js_alarm->period_in_minutes.reset(new double(25)); 557 alarm3.js_alarm->period_in_minutes.reset(new double(25));
557 alarm_manager_->AddAlarmImpl(extension_->id(), alarm3); 558 alarm_manager_->AddAlarmImpl(extension_->id(), alarm3);
558 base::MessageLoop::current()->Run(); 559 base::MessageLoop::current()->Run();
559 EXPECT_EQ(alarm_manager_->last_poll_time_ + base::TimeDelta::FromMinutes(4), 560 EXPECT_EQ(alarm_manager_->last_poll_time_ + base::TimeDelta::FromMinutes(4),
560 alarm_manager_->next_poll_time_); 561 alarm_manager_->test_next_poll_time_);
561 RemoveAllAlarms(); 562 RemoveAllAlarms();
562 } 563 }
563 } 564 }
564 565
565 TEST_F(ExtensionAlarmsSchedulingTest, ReleasedExtensionPollsInfrequently) { 566 TEST_F(ExtensionAlarmsSchedulingTest, ReleasedExtensionPollsInfrequently) {
566 extension_ = utils::CreateEmptyExtensionWithLocation( 567 extension_ = utils::CreateEmptyExtensionWithLocation(
567 extensions::Manifest::INTERNAL); 568 extensions::Manifest::INTERNAL);
568 test_clock_->SetNow(base::Time::FromJsTime(300000)); 569 test_clock_->SetNow(base::Time::FromJsTime(300000));
569 CreateAlarm("[\"a\", {\"when\": 300010}]"); 570 CreateAlarm("[\"a\", {\"when\": 300010}]");
570 CreateAlarm("[\"b\", {\"when\": 340000}]"); 571 CreateAlarm("[\"b\", {\"when\": 340000}]");
571 572
572 // On startup (when there's no "last poll"), we let alarms fire as 573 // On startup (when there's no "last poll"), we let alarms fire as
573 // soon as they're scheduled. 574 // soon as they're scheduled.
574 EXPECT_DOUBLE_EQ(300010, alarm_manager_->next_poll_time_.ToJsTime()); 575 EXPECT_DOUBLE_EQ(300010, alarm_manager_->test_next_poll_time_.ToJsTime());
575 576
576 alarm_manager_->last_poll_time_ = base::Time::FromJsTime(290000); 577 alarm_manager_->last_poll_time_ = base::Time::FromJsTime(290000);
577 // In released extensions, we set the granularity to at least 5 578 // In released extensions, we set the granularity to at least 5
578 // minutes, which makes AddAlarm schedule the next poll after the 579 // minutes, which makes AddAlarm schedule the next poll after the
579 // extension requested. 580 // extension requested.
580 alarm_manager_->ScheduleNextPoll(); 581 alarm_manager_->ScheduleNextPoll();
581 EXPECT_DOUBLE_EQ((alarm_manager_->last_poll_time_ + 582 EXPECT_DOUBLE_EQ((alarm_manager_->last_poll_time_ +
582 base::TimeDelta::FromMinutes(1)).ToJsTime(), 583 base::TimeDelta::FromMinutes(1)).ToJsTime(),
583 alarm_manager_->next_poll_time_.ToJsTime()); 584 alarm_manager_->test_next_poll_time_.ToJsTime());
584 } 585 }
585 586
586 TEST_F(ExtensionAlarmsSchedulingTest, TimerRunning) { 587 TEST_F(ExtensionAlarmsSchedulingTest, TimerRunning) {
587 EXPECT_FALSE(alarm_manager_->timer_.IsRunning()); 588 EXPECT_FALSE(alarm_manager_->timer_.IsRunning());
588 CreateAlarm("[\"a\", {\"delayInMinutes\": 0.001}]"); 589 CreateAlarm("[\"a\", {\"delayInMinutes\": 0.001}]");
589 EXPECT_TRUE(alarm_manager_->timer_.IsRunning()); 590 EXPECT_TRUE(alarm_manager_->timer_.IsRunning());
591 test_clock_->Advance(base::TimeDelta::FromMilliseconds(60));
590 base::MessageLoop::current()->Run(); 592 base::MessageLoop::current()->Run();
591 EXPECT_FALSE(alarm_manager_->timer_.IsRunning()); 593 EXPECT_FALSE(alarm_manager_->timer_.IsRunning());
592 CreateAlarm("[\"bb\", {\"delayInMinutes\": 10}]"); 594 CreateAlarm("[\"bb\", {\"delayInMinutes\": 10}]");
593 EXPECT_TRUE(alarm_manager_->timer_.IsRunning()); 595 EXPECT_TRUE(alarm_manager_->timer_.IsRunning());
594 RemoveAllAlarms(); 596 RemoveAllAlarms();
595 EXPECT_FALSE(alarm_manager_->timer_.IsRunning()); 597 EXPECT_FALSE(alarm_manager_->timer_.IsRunning());
596 } 598 }
597 599
598 } // namespace extensions 600 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/alarms/alarms_api.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698