Index: chrome/browser/extensions/api/alarms/alarms_api_unittest.cc |
diff --git a/chrome/browser/extensions/api/alarms/alarms_api_unittest.cc b/chrome/browser/extensions/api/alarms/alarms_api_unittest.cc |
index 1bc3b06efde9ffc876e45e0ceeb7912ae0b25554..a04dfa30380abb42ed92b7aa49389b075db7d4a4 100644 |
--- a/chrome/browser/extensions/api/alarms/alarms_api_unittest.cc |
+++ b/chrome/browser/extensions/api/alarms/alarms_api_unittest.cc |
@@ -5,6 +5,7 @@ |
// This file tests the chrome.alarms extension API. |
#include "base/values.h" |
+#include "base/test/mock_time_provider.h" |
#include "chrome/browser/browser_process_impl.h" |
#include "chrome/browser/extensions/api/alarms/alarm_manager.h" |
#include "chrome/browser/extensions/api/alarms/alarms_api.h" |
@@ -13,8 +14,11 @@ |
#include "chrome/browser/profiles/profile_manager.h" |
#include "chrome/test/base/browser_with_test_window_test.h" |
#include "chrome/test/base/testing_browser_process.h" |
+#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+typedef extensions::api::alarms::Alarm JsAlarm; |
+ |
namespace utils = extension_function_test_utils; |
namespace extensions { |
@@ -26,8 +30,8 @@ class AlarmDelegate : public AlarmManager::Delegate { |
public: |
virtual ~AlarmDelegate() {} |
virtual void OnAlarm(const std::string& extension_id, |
- const AlarmManager::Alarm& alarm) { |
- alarms_seen.push_back(alarm.name); |
+ const Alarm& alarm) { |
+ alarms_seen.push_back(alarm.js_alarm->name); |
MessageLoop::current()->Quit(); |
} |
@@ -43,7 +47,7 @@ class ExtensionAlarmsTest : public BrowserWithTestWindowTest { |
TestExtensionSystem* system = static_cast<TestExtensionSystem*>( |
ExtensionSystem::Get(browser()->profile())); |
- system->CreateAlarmManager(); |
+ system->CreateAlarmManager(&base::MockTimeProvider::StaticNow); |
alarm_manager_ = system->alarm_manager(); |
alarm_delegate_ = new AlarmDelegate(); |
@@ -51,6 +55,10 @@ class ExtensionAlarmsTest : public BrowserWithTestWindowTest { |
extension_ = utils::CreateEmptyExtensionWithLocation( |
extensions::Extension::LOAD); |
+ |
+ current_time_ = base::Time::FromDoubleT(10); |
+ ON_CALL(mock_time_, Now()) |
+ .WillByDefault(testing::ReturnPointee(¤t_time_)); |
} |
base::Value* RunFunctionWithExtension( |
@@ -82,18 +90,23 @@ class ExtensionAlarmsTest : public BrowserWithTestWindowTest { |
return utils::RunFunctionAndReturnError(function, args, browser()); |
} |
+ void CreateAlarm(const std::string& args) { |
+ RunFunction(new AlarmsCreateFunction(&base::MockTimeProvider::StaticNow), |
+ args); |
+ } |
+ |
// Takes a JSON result from a function and converts it to a vector of |
- // Alarms. |
- AlarmManager::AlarmList ToAlarmList(base::ListValue* value) { |
- AlarmManager::AlarmList list; |
+ // JsAlarms. |
+ std::vector<linked_ptr<JsAlarm> > ToAlarmList(base::ListValue* value) { |
+ std::vector<linked_ptr<JsAlarm> > list; |
for (size_t i = 0; i < value->GetSize(); ++i) { |
- linked_ptr<AlarmManager::Alarm> alarm(new AlarmManager::Alarm); |
+ linked_ptr<JsAlarm> alarm(new JsAlarm); |
base::DictionaryValue* alarm_value; |
if (!value->GetDictionary(i, &alarm_value)) { |
ADD_FAILURE() << "Expected a list of Alarm objects."; |
return list; |
} |
- EXPECT_TRUE(AlarmManager::Alarm::Populate(*alarm_value, alarm.get())); |
+ EXPECT_TRUE(JsAlarm::Populate(*alarm_value, alarm.get())); |
list.push_back(alarm); |
} |
return list; |
@@ -104,33 +117,38 @@ class ExtensionAlarmsTest : public BrowserWithTestWindowTest { |
CHECK(num_alarms <= 3); |
const char* kCreateArgs[] = { |
- "[null, {\"delayInMinutes\": 0.001, \"repeating\": true}]", |
- "[\"7\", {\"delayInMinutes\": 7, \"repeating\": true}]", |
- "[\"0\", {\"delayInMinutes\": 0}]" |
+ "[null, {\"periodInMinutes\": 0.001}]", |
+ "[\"7\", {\"periodInMinutes\": 7}]", |
+ "[\"0\", {\"delayInMinutes\": 0}]", |
}; |
for (size_t i = 0; i < num_alarms; ++i) { |
scoped_ptr<base::DictionaryValue> result(RunFunctionAndReturnDict( |
- new AlarmsCreateFunction(), kCreateArgs[i])); |
+ new AlarmsCreateFunction( |
+ &base::MockTimeProvider::StaticNow), |
Matt Perry
2012/06/12 20:54:29
nit: looks like this doesn't need to wrap?
Jeffrey Yasskin
2012/06/12 23:37:28
Oops, fixed.
|
+ kCreateArgs[i])); |
EXPECT_FALSE(result.get()); |
} |
} |
protected: |
+ base::Time current_time_; |
+ testing::NiceMock<base::MockTimeProvider> mock_time_; |
AlarmManager* alarm_manager_; |
AlarmDelegate* alarm_delegate_; |
scoped_refptr<extensions::Extension> extension_; |
}; |
TEST_F(ExtensionAlarmsTest, Create) { |
+ current_time_ = base::Time::FromDoubleT(10); |
// Create 1 non-repeating alarm. |
- RunFunction(new AlarmsCreateFunction(), "[null, {\"delayInMinutes\": 0}]"); |
+ CreateAlarm("[null, {\"delayInMinutes\": 0}]"); |
- const AlarmManager::Alarm* alarm = |
+ const Alarm* alarm = |
alarm_manager_->GetAlarm(extension_->id(), ""); |
ASSERT_TRUE(alarm); |
- EXPECT_EQ("", alarm->name); |
- EXPECT_EQ(0, alarm->delay_in_minutes); |
- EXPECT_FALSE(alarm->repeating); |
+ EXPECT_EQ("", alarm->js_alarm->name); |
+ EXPECT_DOUBLE_EQ(10000, alarm->js_alarm->scheduled_time); |
+ EXPECT_FALSE(alarm->js_alarm->period_in_minutes.get()); |
// Now wait for the alarm to fire. Our test delegate will quit the |
// MessageLoop when that happens. |
@@ -148,21 +166,25 @@ TEST_F(ExtensionAlarmsTest, Create) { |
} |
TEST_F(ExtensionAlarmsTest, CreateRepeating) { |
+ current_time_ = base::Time::FromDoubleT(10); |
+ |
// Create 1 repeating alarm. |
- RunFunction(new AlarmsCreateFunction(), |
- "[null, {\"delayInMinutes\": 0.001, \"repeating\": true}]"); |
+ CreateAlarm("[null, {\"periodInMinutes\": 0.001}]"); |
- const AlarmManager::Alarm* alarm = |
+ const Alarm* alarm = |
alarm_manager_->GetAlarm(extension_->id(), ""); |
ASSERT_TRUE(alarm); |
- EXPECT_EQ("", alarm->name); |
- EXPECT_EQ(0.001, alarm->delay_in_minutes); |
- EXPECT_TRUE(alarm->repeating); |
+ EXPECT_EQ("", alarm->js_alarm->name); |
+ EXPECT_DOUBLE_EQ(10060, alarm->js_alarm->scheduled_time); |
+ EXPECT_THAT(alarm->js_alarm->period_in_minutes, |
+ testing::Pointee(testing::DoubleEq(0.001))); |
+ current_time_ += base::TimeDelta::FromSeconds(1); |
// Now wait for the alarm to fire. Our test delegate will quit the |
// MessageLoop when that happens. |
MessageLoop::current()->Run(); |
+ current_time_ += base::TimeDelta::FromSeconds(1); |
// Wait again, and ensure the alarm fires again. |
alarm_manager_->ScheduleNextPoll(base::TimeDelta::FromSeconds(0)); |
MessageLoop::current()->Run(); |
@@ -171,53 +193,109 @@ TEST_F(ExtensionAlarmsTest, CreateRepeating) { |
EXPECT_EQ("", alarm_delegate_->alarms_seen[0]); |
} |
+TEST_F(ExtensionAlarmsTest, CreateAbsolute) { |
+ current_time_ = base::Time::FromDoubleT(9.99); |
+ CreateAlarm("[null, {\"when\": 10001}]"); |
+ |
+ const Alarm* alarm = |
+ alarm_manager_->GetAlarm(extension_->id(), ""); |
+ ASSERT_TRUE(alarm); |
+ EXPECT_EQ("", alarm->js_alarm->name); |
+ EXPECT_DOUBLE_EQ(10001, alarm->js_alarm->scheduled_time); |
+ EXPECT_THAT(alarm->js_alarm->period_in_minutes, |
+ testing::IsNull()); |
+ |
+ current_time_ = base::Time::FromDoubleT(10.1); |
+ // Now wait for the alarm to fire. Our test delegate will quit the |
+ // MessageLoop when that happens. |
+ MessageLoop::current()->Run(); |
+ |
+ ASSERT_FALSE(alarm_manager_->GetAlarm(extension_->id(), "")); |
+ |
+ ASSERT_EQ(1u, alarm_delegate_->alarms_seen.size()); |
+ EXPECT_EQ("", alarm_delegate_->alarms_seen[0]); |
+} |
+ |
+TEST_F(ExtensionAlarmsTest, CreateRepeatingWithQuickFirstCall) { |
+ current_time_ = base::Time::FromDoubleT(9.99); |
+ CreateAlarm("[null, {\"when\": 10001, \"periodInMinutes\": 0.001}]"); |
+ |
+ const Alarm* alarm = |
+ alarm_manager_->GetAlarm(extension_->id(), ""); |
+ ASSERT_TRUE(alarm); |
+ EXPECT_EQ("", alarm->js_alarm->name); |
+ EXPECT_DOUBLE_EQ(10001, alarm->js_alarm->scheduled_time); |
+ EXPECT_THAT(alarm->js_alarm->period_in_minutes, |
+ testing::Pointee(testing::DoubleEq(0.001))); |
+ |
+ current_time_ = base::Time::FromDoubleT(10.1); |
+ // Now wait for the alarm to fire. Our test delegate will quit the |
+ // MessageLoop when that happens. |
+ MessageLoop::current()->Run(); |
+ |
+ ASSERT_TRUE(alarm_manager_->GetAlarm(extension_->id(), "")); |
+ EXPECT_THAT(alarm_delegate_->alarms_seen, testing::ElementsAre("")); |
+ |
+ current_time_ = base::Time::FromDoubleT(10.7); |
+ MessageLoop::current()->Run(); |
+ |
+ ASSERT_TRUE(alarm_manager_->GetAlarm(extension_->id(), "")); |
+ EXPECT_THAT(alarm_delegate_->alarms_seen, testing::ElementsAre("", "")); |
+} |
+ |
TEST_F(ExtensionAlarmsTest, CreateDupe) { |
+ current_time_ = base::Time::FromDoubleT(10); |
+ |
// Create 2 duplicate alarms. The first should be overridden. |
- RunFunction(new AlarmsCreateFunction(), "[\"dup\", {\"delayInMinutes\": 1}]"); |
- RunFunction(new AlarmsCreateFunction(), "[\"dup\", {\"delayInMinutes\": 7}]"); |
+ CreateAlarm("[\"dup\", {\"delayInMinutes\": 1}]"); |
+ CreateAlarm("[\"dup\", {\"delayInMinutes\": 7}]"); |
{ |
const AlarmManager::AlarmList* alarms = |
alarm_manager_->GetAllAlarms(extension_->id()); |
ASSERT_TRUE(alarms); |
EXPECT_EQ(1u, alarms->size()); |
- EXPECT_EQ(7, (*alarms)[0]->delay_in_minutes); |
+ EXPECT_DOUBLE_EQ(430000, (*alarms)[0].js_alarm->scheduled_time); |
} |
} |
TEST_F(ExtensionAlarmsTest, CreateDelayBelowMinimum) { |
// Create an alarm with delay below the minimum accepted value. |
- std::string error = RunFunctionAndReturnError(new AlarmsCreateFunction(), |
+ std::string error = RunFunctionAndReturnError( |
+ new AlarmsCreateFunction(&base::MockTimeProvider::StaticNow), |
"[\"negative\", {\"delayInMinutes\": -0.2}]"); |
EXPECT_FALSE(error.empty()); |
} |
TEST_F(ExtensionAlarmsTest, Get) { |
+ current_time_ = base::Time::FromDoubleT(4); |
+ |
// Create 2 alarms, and make sure we can query them. |
CreateAlarms(2); |
// Get the default one. |
{ |
- AlarmManager::Alarm alarm; |
+ JsAlarm alarm; |
scoped_ptr<base::DictionaryValue> result(RunFunctionAndReturnDict( |
new AlarmsGetFunction(), "[null]")); |
ASSERT_TRUE(result.get()); |
- EXPECT_TRUE(AlarmManager::Alarm::Populate(*result, &alarm)); |
+ EXPECT_TRUE(JsAlarm::Populate(*result, &alarm)); |
EXPECT_EQ("", alarm.name); |
- EXPECT_EQ(0.001, alarm.delay_in_minutes); |
- EXPECT_TRUE(alarm.repeating); |
+ EXPECT_DOUBLE_EQ(4060, alarm.scheduled_time); |
+ EXPECT_THAT(alarm.period_in_minutes, |
+ testing::Pointee(testing::DoubleEq(0.001))); |
} |
// Get "7". |
{ |
- AlarmManager::Alarm alarm; |
+ JsAlarm alarm; |
scoped_ptr<base::DictionaryValue> result(RunFunctionAndReturnDict( |
new AlarmsGetFunction(), "[\"7\"]")); |
ASSERT_TRUE(result.get()); |
- EXPECT_TRUE(AlarmManager::Alarm::Populate(*result, &alarm)); |
+ EXPECT_TRUE(JsAlarm::Populate(*result, &alarm)); |
EXPECT_EQ("7", alarm.name); |
- EXPECT_EQ(7, alarm.delay_in_minutes); |
- EXPECT_TRUE(alarm.repeating); |
+ EXPECT_EQ(424000, alarm.scheduled_time); |
+ EXPECT_THAT(alarm.period_in_minutes, testing::Pointee(7)); |
} |
// Get a non-existent one. |
@@ -233,7 +311,7 @@ TEST_F(ExtensionAlarmsTest, GetAll) { |
{ |
scoped_ptr<base::ListValue> result(RunFunctionAndReturnList( |
new AlarmsGetAllFunction(), "[]")); |
- AlarmManager::AlarmList alarms = ToAlarmList(result.get()); |
+ std::vector<linked_ptr<JsAlarm> > alarms = ToAlarmList(result.get()); |
EXPECT_EQ(0u, alarms.size()); |
} |
@@ -243,16 +321,15 @@ TEST_F(ExtensionAlarmsTest, GetAll) { |
{ |
scoped_ptr<base::ListValue> result(RunFunctionAndReturnList( |
new AlarmsGetAllFunction(), "[null]")); |
- AlarmManager::AlarmList alarms = ToAlarmList(result.get()); |
+ std::vector<linked_ptr<JsAlarm> > alarms = ToAlarmList(result.get()); |
EXPECT_EQ(2u, alarms.size()); |
// Test the "7" alarm. |
- AlarmManager::Alarm* alarm = alarms[0].get(); |
+ JsAlarm* alarm = alarms[0].get(); |
if (alarm->name != "7") |
alarm = alarms[1].get(); |
EXPECT_EQ("7", alarm->name); |
- EXPECT_EQ(7, alarm->delay_in_minutes); |
- EXPECT_TRUE(alarm->repeating); |
+ EXPECT_THAT(alarm->period_in_minutes, testing::Pointee(7)); |
} |
} |
@@ -276,7 +353,8 @@ TEST_F(ExtensionAlarmsTest, Clear) { |
alarm_manager_->GetAllAlarms(extension_->id()); |
ASSERT_TRUE(alarms); |
EXPECT_EQ(1u, alarms->size()); |
- EXPECT_EQ(0.001, (*alarms)[0]->delay_in_minutes); |
+ EXPECT_THAT((*alarms)[0].js_alarm->period_in_minutes, |
+ testing::Pointee(0.001)); |
} |
// Now wait for the alarms to fire, and ensure the cancelled alarms don't |
@@ -293,7 +371,8 @@ TEST_F(ExtensionAlarmsTest, Clear) { |
alarm_manager_->GetAllAlarms(extension_->id()); |
ASSERT_TRUE(alarms); |
EXPECT_EQ(1u, alarms->size()); |
- EXPECT_EQ(0.001, (*alarms)[0]->delay_in_minutes); |
+ EXPECT_THAT((*alarms)[0].js_alarm->period_in_minutes, |
+ testing::Pointee(0.001)); |
} |
} |
@@ -327,70 +406,64 @@ class ExtensionAlarmsSchedulingTest : public ExtensionAlarmsTest { |
public: |
// Get the time that the alarm named is scheduled to run. |
base::Time GetScheduledTime(const std::string& alarm_name) { |
- const extensions::AlarmManager::Alarm* alarm = |
+ const extensions::Alarm* alarm = |
alarm_manager_->GetAlarm(extension_->id(), alarm_name); |
CHECK(alarm); |
- return alarm_manager_->scheduled_times_[alarm].time; |
+ return base::Time::FromJsTime(alarm->js_alarm->scheduled_time); |
} |
}; |
TEST_F(ExtensionAlarmsSchedulingTest, PollScheduling) { |
{ |
- RunFunction(new AlarmsCreateFunction(), |
- "[\"a\", {\"delayInMinutes\": 6, \"repeating\": true}]"); |
- RunFunction(new AlarmsCreateFunction(), |
- "[\"bb\", {\"delayInMinutes\": 8, \"repeating\": true}]"); |
+ CreateAlarm("[\"a\", {\"periodInMinutes\": 6}]"); |
+ CreateAlarm("[\"bb\", {\"periodInMinutes\": 8}]"); |
EXPECT_EQ(GetScheduledTime("a"), alarm_manager_->next_poll_time_); |
alarm_manager_->RemoveAllAlarms(extension_->id()); |
} |
{ |
- RunFunction(new AlarmsCreateFunction(), |
- "[\"a\", {\"delayInMinutes\": 10}]"); |
- RunFunction(new AlarmsCreateFunction(), |
- "[\"bb\", {\"delayInMinutes\": 21}]"); |
+ CreateAlarm("[\"a\", {\"delayInMinutes\": 10}]"); |
+ CreateAlarm("[\"bb\", {\"delayInMinutes\": 21}]"); |
EXPECT_EQ(GetScheduledTime("a"), alarm_manager_->next_poll_time_); |
alarm_manager_->RemoveAllAlarms(extension_->id()); |
} |
{ |
- RunFunction(new AlarmsCreateFunction(), |
- "[\"a\", {\"delayInMinutes\": 10, \"repeating\": true}]"); |
- linked_ptr<AlarmManager::Alarm> alarm(new AlarmManager::Alarm()); |
- alarm->name = "bb"; |
- alarm->delay_in_minutes = 30; |
- alarm->repeating = true; |
- alarm_manager_->AddAlarmImpl(extension_->id(), alarm, |
- base::TimeDelta::FromMinutes(3)); |
- EXPECT_EQ(GetScheduledTime("bb"), alarm_manager_->next_poll_time_); |
+ current_time_ = base::Time::FromDoubleT(10); |
+ CreateAlarm("[\"a\", {\"periodInMinutes\": 10}]"); |
+ Alarm alarm; |
+ alarm.js_alarm->name = "bb"; |
+ alarm.js_alarm->scheduled_time = 30 * 60000; |
+ alarm.js_alarm->period_in_minutes.reset(new double(30)); |
+ alarm_manager_->AddAlarmImpl(extension_->id(), alarm); |
+ EXPECT_DOUBLE_EQ(GetScheduledTime("a").ToDoubleT(), |
+ alarm_manager_->next_poll_time_.ToDoubleT()); |
alarm_manager_->RemoveAllAlarms(extension_->id()); |
} |
{ |
- linked_ptr<AlarmManager::Alarm> alarm(new AlarmManager::Alarm()); |
- alarm->name = "bb"; |
- alarm->delay_in_minutes = 3; |
- alarm->repeating = true; |
- alarm_manager_->AddAlarmImpl(extension_->id(), alarm, |
- base::TimeDelta::FromSeconds(0)); |
+ current_time_ = base::Time::FromDoubleT(3 * 60 + 1); |
+ Alarm alarm; |
+ alarm.js_alarm->name = "bb"; |
+ alarm.js_alarm->scheduled_time = 3 * 60000; |
+ alarm.js_alarm->period_in_minutes.reset(new double(3)); |
+ alarm_manager_->AddAlarmImpl(extension_->id(), alarm); |
MessageLoop::current()->Run(); |
EXPECT_EQ(alarm_manager_->last_poll_time_ + base::TimeDelta::FromMinutes(3), |
alarm_manager_->next_poll_time_); |
alarm_manager_->RemoveAllAlarms(extension_->id()); |
} |
{ |
- RunFunction(new AlarmsCreateFunction(), |
- "[\"a\", {\"delayInMinutes\": 2, \"repeating\": true}]"); |
+ current_time_ = base::Time::FromDoubleT(4 * 60 + 1); |
+ CreateAlarm("[\"a\", {\"periodInMinutes\": 2}]"); |
alarm_manager_->RemoveAlarm(extension_->id(), "a"); |
- linked_ptr<AlarmManager::Alarm> alarm2(new AlarmManager::Alarm()); |
- alarm2->name = "bb"; |
- alarm2->delay_in_minutes = 4; |
- alarm2->repeating = true; |
- alarm_manager_->AddAlarmImpl(extension_->id(), alarm2, |
- base::TimeDelta::FromMinutes(3)); |
- linked_ptr<AlarmManager::Alarm> alarm3(new AlarmManager::Alarm()); |
- alarm3->name = "ccc"; |
- alarm3->delay_in_minutes = 25; |
- alarm3->repeating = true; |
- alarm_manager_->AddAlarmImpl(extension_->id(), alarm3, |
- base::TimeDelta::FromSeconds(0)); |
+ Alarm alarm2; |
+ alarm2.js_alarm->name = "bb"; |
+ alarm2.js_alarm->scheduled_time = 4 * 60000; |
+ alarm2.js_alarm->period_in_minutes.reset(new double(4)); |
+ alarm_manager_->AddAlarmImpl(extension_->id(), alarm2); |
+ Alarm alarm3; |
+ alarm3.js_alarm->name = "ccc"; |
+ alarm3.js_alarm->scheduled_time = 25 * 60000; |
+ alarm3.js_alarm->period_in_minutes.reset(new double(25)); |
+ alarm_manager_->AddAlarmImpl(extension_->id(), alarm3); |
MessageLoop::current()->Run(); |
EXPECT_EQ(alarm_manager_->last_poll_time_ + base::TimeDelta::FromMinutes(4), |
alarm_manager_->next_poll_time_); |
@@ -398,15 +471,31 @@ TEST_F(ExtensionAlarmsSchedulingTest, PollScheduling) { |
} |
} |
+TEST_F(ExtensionAlarmsSchedulingTest, ReleasedExtensionPollsInfrequently) { |
+ extension_ = utils::CreateEmptyExtensionWithLocation( |
+ extensions::Extension::INTERNAL); |
+ current_time_ = base::Time::FromJsTime(300000); |
+ CreateAlarm("[\"a\", {\"when\": 300010}]"); |
+ CreateAlarm("[\"b\", {\"when\": 360000}]"); |
+ |
+ // In released extensions, we set the granularity to at least 5 |
+ // minutes, but AddAlarm schedules its next poll precisely. |
+ EXPECT_DOUBLE_EQ(300010, alarm_manager_->next_poll_time_.ToJsTime()); |
+ |
+ // Run an iteration to see the effect of the granularity. |
+ current_time_ = base::Time::FromJsTime(300020); |
+ MessageLoop::current()->Run(); |
+ EXPECT_DOUBLE_EQ(300020, alarm_manager_->last_poll_time_.ToJsTime()); |
+ EXPECT_DOUBLE_EQ(600020, alarm_manager_->next_poll_time_.ToJsTime()); |
+} |
+ |
TEST_F(ExtensionAlarmsSchedulingTest, TimerRunning) { |
EXPECT_FALSE(alarm_manager_->timer_.IsRunning()); |
- RunFunction(new AlarmsCreateFunction(), |
- "[\"a\", {\"delayInMinutes\": 0.001}]"); |
+ CreateAlarm("[\"a\", {\"delayInMinutes\": 0.001}]"); |
EXPECT_TRUE(alarm_manager_->timer_.IsRunning()); |
MessageLoop::current()->Run(); |
EXPECT_FALSE(alarm_manager_->timer_.IsRunning()); |
- RunFunction(new AlarmsCreateFunction(), |
- "[\"bb\", {\"delayInMinutes\": 10}]"); |
+ CreateAlarm("[\"bb\", {\"delayInMinutes\": 10}]"); |
EXPECT_TRUE(alarm_manager_->timer_.IsRunning()); |
alarm_manager_->RemoveAllAlarms(extension_->id()); |
EXPECT_FALSE(alarm_manager_->timer_.IsRunning()); |