| 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/mock_time_provider.h" | 7 #include "base/test/mock_time_provider.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 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 50 | 50 |
| 51 TestExtensionSystem* system = static_cast<TestExtensionSystem*>( | 51 TestExtensionSystem* system = static_cast<TestExtensionSystem*>( |
| 52 ExtensionSystem::Get(browser()->profile())); | 52 ExtensionSystem::Get(browser()->profile())); |
| 53 system->CreateAlarmManager(&base::MockTimeProvider::StaticNow); | 53 system->CreateAlarmManager(&base::MockTimeProvider::StaticNow); |
| 54 alarm_manager_ = system->alarm_manager(); | 54 alarm_manager_ = system->alarm_manager(); |
| 55 | 55 |
| 56 alarm_delegate_ = new AlarmDelegate(); | 56 alarm_delegate_ = new AlarmDelegate(); |
| 57 alarm_manager_->set_delegate(alarm_delegate_); | 57 alarm_manager_->set_delegate(alarm_delegate_); |
| 58 | 58 |
| 59 extension_ = utils::CreateEmptyExtensionWithLocation( | 59 extension_ = utils::CreateEmptyExtensionWithLocation( |
| 60 extensions::Extension::LOAD); | 60 extensions::Manifest::LOAD); |
| 61 | 61 |
| 62 // Make sure there's a RenderViewHost for alarms to warn into. | 62 // Make sure there's a RenderViewHost for alarms to warn into. |
| 63 AddTab(browser(), extension_->GetBackgroundURL()); | 63 AddTab(browser(), extension_->GetBackgroundURL()); |
| 64 contents_ = chrome::GetActiveWebContents(browser()); | 64 contents_ = chrome::GetActiveWebContents(browser()); |
| 65 | 65 |
| 66 current_time_ = base::Time::FromDoubleT(10); | 66 current_time_ = base::Time::FromDoubleT(10); |
| 67 ON_CALL(mock_time_, Now()) | 67 ON_CALL(mock_time_, Now()) |
| 68 .WillByDefault(testing::ReturnPointee(¤t_time_)); | 68 .WillByDefault(testing::ReturnPointee(¤t_time_)); |
| 69 } | 69 } |
| 70 | 70 |
| (...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 483 alarm_manager_->AddAlarmImpl(extension_->id(), alarm3); | 483 alarm_manager_->AddAlarmImpl(extension_->id(), alarm3); |
| 484 MessageLoop::current()->Run(); | 484 MessageLoop::current()->Run(); |
| 485 EXPECT_EQ(alarm_manager_->last_poll_time_ + base::TimeDelta::FromMinutes(4), | 485 EXPECT_EQ(alarm_manager_->last_poll_time_ + base::TimeDelta::FromMinutes(4), |
| 486 alarm_manager_->next_poll_time_); | 486 alarm_manager_->next_poll_time_); |
| 487 alarm_manager_->RemoveAllAlarms(extension_->id()); | 487 alarm_manager_->RemoveAllAlarms(extension_->id()); |
| 488 } | 488 } |
| 489 } | 489 } |
| 490 | 490 |
| 491 TEST_F(ExtensionAlarmsSchedulingTest, ReleasedExtensionPollsInfrequently) { | 491 TEST_F(ExtensionAlarmsSchedulingTest, ReleasedExtensionPollsInfrequently) { |
| 492 extension_ = utils::CreateEmptyExtensionWithLocation( | 492 extension_ = utils::CreateEmptyExtensionWithLocation( |
| 493 extensions::Extension::INTERNAL); | 493 extensions::Manifest::INTERNAL); |
| 494 current_time_ = base::Time::FromJsTime(300000); | 494 current_time_ = base::Time::FromJsTime(300000); |
| 495 CreateAlarm("[\"a\", {\"when\": 300010}]"); | 495 CreateAlarm("[\"a\", {\"when\": 300010}]"); |
| 496 CreateAlarm("[\"b\", {\"when\": 340000}]"); | 496 CreateAlarm("[\"b\", {\"when\": 340000}]"); |
| 497 | 497 |
| 498 // On startup (when there's no "last poll"), we let alarms fire as | 498 // On startup (when there's no "last poll"), we let alarms fire as |
| 499 // soon as they're scheduled. | 499 // soon as they're scheduled. |
| 500 EXPECT_DOUBLE_EQ(300010, alarm_manager_->next_poll_time_.ToJsTime()); | 500 EXPECT_DOUBLE_EQ(300010, alarm_manager_->next_poll_time_.ToJsTime()); |
| 501 | 501 |
| 502 alarm_manager_->last_poll_time_ = base::Time::FromJsTime(290000); | 502 alarm_manager_->last_poll_time_ = base::Time::FromJsTime(290000); |
| 503 // In released extensions, we set the granularity to at least 5 | 503 // In released extensions, we set the granularity to at least 5 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 515 EXPECT_TRUE(alarm_manager_->timer_.IsRunning()); | 515 EXPECT_TRUE(alarm_manager_->timer_.IsRunning()); |
| 516 MessageLoop::current()->Run(); | 516 MessageLoop::current()->Run(); |
| 517 EXPECT_FALSE(alarm_manager_->timer_.IsRunning()); | 517 EXPECT_FALSE(alarm_manager_->timer_.IsRunning()); |
| 518 CreateAlarm("[\"bb\", {\"delayInMinutes\": 10}]"); | 518 CreateAlarm("[\"bb\", {\"delayInMinutes\": 10}]"); |
| 519 EXPECT_TRUE(alarm_manager_->timer_.IsRunning()); | 519 EXPECT_TRUE(alarm_manager_->timer_.IsRunning()); |
| 520 alarm_manager_->RemoveAllAlarms(extension_->id()); | 520 alarm_manager_->RemoveAllAlarms(extension_->id()); |
| 521 EXPECT_FALSE(alarm_manager_->timer_.IsRunning()); | 521 EXPECT_FALSE(alarm_manager_->timer_.IsRunning()); |
| 522 } | 522 } |
| 523 | 523 |
| 524 } // namespace extensions | 524 } // namespace extensions |
| OLD | NEW |