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

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

Issue 14113053: chrome: Use base::MessageLoop. (Part 3) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 7 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
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 19 matching lines...) Expand all
30 30
31 namespace { 31 namespace {
32 32
33 // Test delegate which quits the message loop when an alarm fires. 33 // Test delegate which quits the message loop when an alarm fires.
34 class AlarmDelegate : public AlarmManager::Delegate { 34 class AlarmDelegate : public AlarmManager::Delegate {
35 public: 35 public:
36 virtual ~AlarmDelegate() {} 36 virtual ~AlarmDelegate() {}
37 virtual void OnAlarm(const std::string& extension_id, 37 virtual void OnAlarm(const std::string& extension_id,
38 const Alarm& alarm) OVERRIDE { 38 const Alarm& alarm) OVERRIDE {
39 alarms_seen.push_back(alarm.js_alarm->name); 39 alarms_seen.push_back(alarm.js_alarm->name);
40 MessageLoop::current()->Quit(); 40 base::MessageLoop::current()->Quit();
41 } 41 }
42 42
43 std::vector<std::string> alarms_seen; 43 std::vector<std::string> alarms_seen;
44 }; 44 };
45 45
46 } // namespace 46 } // namespace
47 47
48 class ExtensionAlarmsTest : public BrowserWithTestWindowTest { 48 class ExtensionAlarmsTest : public BrowserWithTestWindowTest {
49 public: 49 public:
50 virtual void SetUp() { 50 virtual void SetUp() {
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 152
153 const Alarm* alarm = 153 const Alarm* alarm =
154 alarm_manager_->GetAlarm(extension_->id(), std::string()); 154 alarm_manager_->GetAlarm(extension_->id(), std::string());
155 ASSERT_TRUE(alarm); 155 ASSERT_TRUE(alarm);
156 EXPECT_EQ("", alarm->js_alarm->name); 156 EXPECT_EQ("", alarm->js_alarm->name);
157 EXPECT_DOUBLE_EQ(10000, alarm->js_alarm->scheduled_time); 157 EXPECT_DOUBLE_EQ(10000, alarm->js_alarm->scheduled_time);
158 EXPECT_FALSE(alarm->js_alarm->period_in_minutes.get()); 158 EXPECT_FALSE(alarm->js_alarm->period_in_minutes.get());
159 159
160 // Now wait for the alarm to fire. Our test delegate will quit the 160 // Now wait for the alarm to fire. Our test delegate will quit the
161 // MessageLoop when that happens. 161 // MessageLoop when that happens.
162 MessageLoop::current()->Run(); 162 base::MessageLoop::current()->Run();
163 163
164 ASSERT_EQ(1u, alarm_delegate_->alarms_seen.size()); 164 ASSERT_EQ(1u, alarm_delegate_->alarms_seen.size());
165 EXPECT_EQ("", alarm_delegate_->alarms_seen[0]); 165 EXPECT_EQ("", alarm_delegate_->alarms_seen[0]);
166 166
167 // Ensure the alarm is gone. 167 // Ensure the alarm is gone.
168 { 168 {
169 const AlarmManager::AlarmList* alarms = 169 const AlarmManager::AlarmList* alarms =
170 alarm_manager_->GetAllAlarms(extension_->id()); 170 alarm_manager_->GetAllAlarms(extension_->id());
171 ASSERT_FALSE(alarms); 171 ASSERT_FALSE(alarms);
172 } 172 }
173 } 173 }
174 174
175 TEST_F(ExtensionAlarmsTest, CreateRepeating) { 175 TEST_F(ExtensionAlarmsTest, CreateRepeating) {
176 test_clock_.SetNow(base::Time::FromDoubleT(10)); 176 test_clock_.SetNow(base::Time::FromDoubleT(10));
177 177
178 // Create 1 repeating alarm. 178 // Create 1 repeating alarm.
179 CreateAlarm("[null, {\"periodInMinutes\": 0.001}]"); 179 CreateAlarm("[null, {\"periodInMinutes\": 0.001}]");
180 180
181 const Alarm* alarm = 181 const Alarm* alarm =
182 alarm_manager_->GetAlarm(extension_->id(), std::string()); 182 alarm_manager_->GetAlarm(extension_->id(), std::string());
183 ASSERT_TRUE(alarm); 183 ASSERT_TRUE(alarm);
184 EXPECT_EQ("", alarm->js_alarm->name); 184 EXPECT_EQ("", alarm->js_alarm->name);
185 EXPECT_DOUBLE_EQ(10060, alarm->js_alarm->scheduled_time); 185 EXPECT_DOUBLE_EQ(10060, alarm->js_alarm->scheduled_time);
186 EXPECT_THAT(alarm->js_alarm->period_in_minutes, 186 EXPECT_THAT(alarm->js_alarm->period_in_minutes,
187 testing::Pointee(testing::DoubleEq(0.001))); 187 testing::Pointee(testing::DoubleEq(0.001)));
188 188
189 test_clock_.Advance(base::TimeDelta::FromSeconds(1)); 189 test_clock_.Advance(base::TimeDelta::FromSeconds(1));
190 // Now wait for the alarm to fire. Our test delegate will quit the 190 // Now wait for the alarm to fire. Our test delegate will quit the
191 // MessageLoop when that happens. 191 // MessageLoop when that happens.
192 MessageLoop::current()->Run(); 192 base::MessageLoop::current()->Run();
193 193
194 test_clock_.Advance(base::TimeDelta::FromSeconds(1)); 194 test_clock_.Advance(base::TimeDelta::FromSeconds(1));
195 // Wait again, and ensure the alarm fires again. 195 // Wait again, and ensure the alarm fires again.
196 alarm_manager_->ScheduleNextPoll(); 196 alarm_manager_->ScheduleNextPoll();
197 MessageLoop::current()->Run(); 197 base::MessageLoop::current()->Run();
198 198
199 ASSERT_EQ(2u, alarm_delegate_->alarms_seen.size()); 199 ASSERT_EQ(2u, alarm_delegate_->alarms_seen.size());
200 EXPECT_EQ("", alarm_delegate_->alarms_seen[0]); 200 EXPECT_EQ("", alarm_delegate_->alarms_seen[0]);
201 } 201 }
202 202
203 TEST_F(ExtensionAlarmsTest, CreateAbsolute) { 203 TEST_F(ExtensionAlarmsTest, CreateAbsolute) {
204 test_clock_.SetNow(base::Time::FromDoubleT(9.99)); 204 test_clock_.SetNow(base::Time::FromDoubleT(9.99));
205 CreateAlarm("[null, {\"when\": 10001}]"); 205 CreateAlarm("[null, {\"when\": 10001}]");
206 206
207 const Alarm* alarm = 207 const Alarm* alarm =
208 alarm_manager_->GetAlarm(extension_->id(), std::string()); 208 alarm_manager_->GetAlarm(extension_->id(), std::string());
209 ASSERT_TRUE(alarm); 209 ASSERT_TRUE(alarm);
210 EXPECT_EQ("", alarm->js_alarm->name); 210 EXPECT_EQ("", alarm->js_alarm->name);
211 EXPECT_DOUBLE_EQ(10001, alarm->js_alarm->scheduled_time); 211 EXPECT_DOUBLE_EQ(10001, alarm->js_alarm->scheduled_time);
212 EXPECT_THAT(alarm->js_alarm->period_in_minutes, 212 EXPECT_THAT(alarm->js_alarm->period_in_minutes,
213 testing::IsNull()); 213 testing::IsNull());
214 214
215 test_clock_.SetNow(base::Time::FromDoubleT(10.1)); 215 test_clock_.SetNow(base::Time::FromDoubleT(10.1));
216 // Now wait for the alarm to fire. Our test delegate will quit the 216 // Now wait for the alarm to fire. Our test delegate will quit the
217 // MessageLoop when that happens. 217 // MessageLoop when that happens.
218 MessageLoop::current()->Run(); 218 base::MessageLoop::current()->Run();
219 219
220 ASSERT_FALSE(alarm_manager_->GetAlarm(extension_->id(), std::string())); 220 ASSERT_FALSE(alarm_manager_->GetAlarm(extension_->id(), std::string()));
221 221
222 ASSERT_EQ(1u, alarm_delegate_->alarms_seen.size()); 222 ASSERT_EQ(1u, alarm_delegate_->alarms_seen.size());
223 EXPECT_EQ("", alarm_delegate_->alarms_seen[0]); 223 EXPECT_EQ("", alarm_delegate_->alarms_seen[0]);
224 } 224 }
225 225
226 TEST_F(ExtensionAlarmsTest, CreateRepeatingWithQuickFirstCall) { 226 TEST_F(ExtensionAlarmsTest, CreateRepeatingWithQuickFirstCall) {
227 test_clock_.SetNow(base::Time::FromDoubleT(9.99)); 227 test_clock_.SetNow(base::Time::FromDoubleT(9.99));
228 CreateAlarm("[null, {\"when\": 10001, \"periodInMinutes\": 0.001}]"); 228 CreateAlarm("[null, {\"when\": 10001, \"periodInMinutes\": 0.001}]");
229 229
230 const Alarm* alarm = 230 const Alarm* alarm =
231 alarm_manager_->GetAlarm(extension_->id(), std::string()); 231 alarm_manager_->GetAlarm(extension_->id(), std::string());
232 ASSERT_TRUE(alarm); 232 ASSERT_TRUE(alarm);
233 EXPECT_EQ("", alarm->js_alarm->name); 233 EXPECT_EQ("", alarm->js_alarm->name);
234 EXPECT_DOUBLE_EQ(10001, alarm->js_alarm->scheduled_time); 234 EXPECT_DOUBLE_EQ(10001, alarm->js_alarm->scheduled_time);
235 EXPECT_THAT(alarm->js_alarm->period_in_minutes, 235 EXPECT_THAT(alarm->js_alarm->period_in_minutes,
236 testing::Pointee(testing::DoubleEq(0.001))); 236 testing::Pointee(testing::DoubleEq(0.001)));
237 237
238 test_clock_.SetNow(base::Time::FromDoubleT(10.1)); 238 test_clock_.SetNow(base::Time::FromDoubleT(10.1));
239 // Now wait for the alarm to fire. Our test delegate will quit the 239 // Now wait for the alarm to fire. Our test delegate will quit the
240 // MessageLoop when that happens. 240 // MessageLoop when that happens.
241 MessageLoop::current()->Run(); 241 base::MessageLoop::current()->Run();
242 242
243 ASSERT_TRUE(alarm_manager_->GetAlarm(extension_->id(), std::string())); 243 ASSERT_TRUE(alarm_manager_->GetAlarm(extension_->id(), std::string()));
244 EXPECT_THAT(alarm_delegate_->alarms_seen, testing::ElementsAre("")); 244 EXPECT_THAT(alarm_delegate_->alarms_seen, testing::ElementsAre(""));
245 245
246 test_clock_.SetNow(base::Time::FromDoubleT(10.7)); 246 test_clock_.SetNow(base::Time::FromDoubleT(10.7));
247 MessageLoop::current()->Run(); 247 base::MessageLoop::current()->Run();
248 248
249 ASSERT_TRUE(alarm_manager_->GetAlarm(extension_->id(), std::string())); 249 ASSERT_TRUE(alarm_manager_->GetAlarm(extension_->id(), std::string()));
250 EXPECT_THAT(alarm_delegate_->alarms_seen, testing::ElementsAre("", "")); 250 EXPECT_THAT(alarm_delegate_->alarms_seen, testing::ElementsAre("", ""));
251 } 251 }
252 252
253 TEST_F(ExtensionAlarmsTest, CreateDupe) { 253 TEST_F(ExtensionAlarmsTest, CreateDupe) {
254 test_clock_.SetNow(base::Time::FromDoubleT(10)); 254 test_clock_.SetNow(base::Time::FromDoubleT(10));
255 255
256 // Create 2 duplicate alarms. The first should be overridden. 256 // Create 2 duplicate alarms. The first should be overridden.
257 CreateAlarm("[\"dup\", {\"delayInMinutes\": 1}]"); 257 CreateAlarm("[\"dup\", {\"delayInMinutes\": 1}]");
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 alarm_manager_->GetAllAlarms(extension_->id()); 367 alarm_manager_->GetAllAlarms(extension_->id());
368 ASSERT_TRUE(alarms); 368 ASSERT_TRUE(alarms);
369 EXPECT_EQ(1u, alarms->size()); 369 EXPECT_EQ(1u, alarms->size());
370 EXPECT_THAT((*alarms)[0].js_alarm->period_in_minutes, 370 EXPECT_THAT((*alarms)[0].js_alarm->period_in_minutes,
371 testing::Pointee(0.001)); 371 testing::Pointee(0.001));
372 } 372 }
373 373
374 // Now wait for the alarms to fire, and ensure the cancelled alarms don't 374 // Now wait for the alarms to fire, and ensure the cancelled alarms don't
375 // fire. 375 // fire.
376 alarm_manager_->ScheduleNextPoll(); 376 alarm_manager_->ScheduleNextPoll();
377 MessageLoop::current()->Run(); 377 base::MessageLoop::current()->Run();
378 378
379 ASSERT_EQ(1u, alarm_delegate_->alarms_seen.size()); 379 ASSERT_EQ(1u, alarm_delegate_->alarms_seen.size());
380 EXPECT_EQ("", alarm_delegate_->alarms_seen[0]); 380 EXPECT_EQ("", alarm_delegate_->alarms_seen[0]);
381 381
382 // Ensure the 0.001-minute alarm is still there, since it's repeating. 382 // Ensure the 0.001-minute alarm is still there, since it's repeating.
383 { 383 {
384 const AlarmManager::AlarmList* alarms = 384 const AlarmManager::AlarmList* alarms =
385 alarm_manager_->GetAllAlarms(extension_->id()); 385 alarm_manager_->GetAllAlarms(extension_->id());
386 ASSERT_TRUE(alarms); 386 ASSERT_TRUE(alarms);
387 EXPECT_EQ(1u, alarms->size()); 387 EXPECT_EQ(1u, alarms->size());
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 alarm_manager_->next_poll_time_.ToDoubleT()); 452 alarm_manager_->next_poll_time_.ToDoubleT());
453 alarm_manager_->RemoveAllAlarms(extension_->id()); 453 alarm_manager_->RemoveAllAlarms(extension_->id());
454 } 454 }
455 { 455 {
456 test_clock_.SetNow(base::Time::FromDoubleT(3 * 60 + 1)); 456 test_clock_.SetNow(base::Time::FromDoubleT(3 * 60 + 1));
457 Alarm alarm; 457 Alarm alarm;
458 alarm.js_alarm->name = "bb"; 458 alarm.js_alarm->name = "bb";
459 alarm.js_alarm->scheduled_time = 3 * 60000; 459 alarm.js_alarm->scheduled_time = 3 * 60000;
460 alarm.js_alarm->period_in_minutes.reset(new double(3)); 460 alarm.js_alarm->period_in_minutes.reset(new double(3));
461 alarm_manager_->AddAlarmImpl(extension_->id(), alarm); 461 alarm_manager_->AddAlarmImpl(extension_->id(), alarm);
462 MessageLoop::current()->Run(); 462 base::MessageLoop::current()->Run();
463 EXPECT_EQ(alarm_manager_->last_poll_time_ + base::TimeDelta::FromMinutes(3), 463 EXPECT_EQ(alarm_manager_->last_poll_time_ + base::TimeDelta::FromMinutes(3),
464 alarm_manager_->next_poll_time_); 464 alarm_manager_->next_poll_time_);
465 alarm_manager_->RemoveAllAlarms(extension_->id()); 465 alarm_manager_->RemoveAllAlarms(extension_->id());
466 } 466 }
467 { 467 {
468 test_clock_.SetNow(base::Time::FromDoubleT(4 * 60 + 1)); 468 test_clock_.SetNow(base::Time::FromDoubleT(4 * 60 + 1));
469 CreateAlarm("[\"a\", {\"periodInMinutes\": 2}]"); 469 CreateAlarm("[\"a\", {\"periodInMinutes\": 2}]");
470 alarm_manager_->RemoveAlarm(extension_->id(), "a"); 470 alarm_manager_->RemoveAlarm(extension_->id(), "a");
471 Alarm alarm2; 471 Alarm alarm2;
472 alarm2.js_alarm->name = "bb"; 472 alarm2.js_alarm->name = "bb";
473 alarm2.js_alarm->scheduled_time = 4 * 60000; 473 alarm2.js_alarm->scheduled_time = 4 * 60000;
474 alarm2.js_alarm->period_in_minutes.reset(new double(4)); 474 alarm2.js_alarm->period_in_minutes.reset(new double(4));
475 alarm_manager_->AddAlarmImpl(extension_->id(), alarm2); 475 alarm_manager_->AddAlarmImpl(extension_->id(), alarm2);
476 Alarm alarm3; 476 Alarm alarm3;
477 alarm3.js_alarm->name = "ccc"; 477 alarm3.js_alarm->name = "ccc";
478 alarm3.js_alarm->scheduled_time = 25 * 60000; 478 alarm3.js_alarm->scheduled_time = 25 * 60000;
479 alarm3.js_alarm->period_in_minutes.reset(new double(25)); 479 alarm3.js_alarm->period_in_minutes.reset(new double(25));
480 alarm_manager_->AddAlarmImpl(extension_->id(), alarm3); 480 alarm_manager_->AddAlarmImpl(extension_->id(), alarm3);
481 MessageLoop::current()->Run(); 481 base::MessageLoop::current()->Run();
482 EXPECT_EQ(alarm_manager_->last_poll_time_ + base::TimeDelta::FromMinutes(4), 482 EXPECT_EQ(alarm_manager_->last_poll_time_ + base::TimeDelta::FromMinutes(4),
483 alarm_manager_->next_poll_time_); 483 alarm_manager_->next_poll_time_);
484 alarm_manager_->RemoveAllAlarms(extension_->id()); 484 alarm_manager_->RemoveAllAlarms(extension_->id());
485 } 485 }
486 } 486 }
487 487
488 TEST_F(ExtensionAlarmsSchedulingTest, ReleasedExtensionPollsInfrequently) { 488 TEST_F(ExtensionAlarmsSchedulingTest, ReleasedExtensionPollsInfrequently) {
489 extension_ = utils::CreateEmptyExtensionWithLocation( 489 extension_ = utils::CreateEmptyExtensionWithLocation(
490 extensions::Manifest::INTERNAL); 490 extensions::Manifest::INTERNAL);
491 test_clock_.SetNow(base::Time::FromJsTime(300000)); 491 test_clock_.SetNow(base::Time::FromJsTime(300000));
(...skipping 11 matching lines...) Expand all
503 alarm_manager_->ScheduleNextPoll(); 503 alarm_manager_->ScheduleNextPoll();
504 EXPECT_DOUBLE_EQ((alarm_manager_->last_poll_time_ + 504 EXPECT_DOUBLE_EQ((alarm_manager_->last_poll_time_ +
505 base::TimeDelta::FromMinutes(1)).ToJsTime(), 505 base::TimeDelta::FromMinutes(1)).ToJsTime(),
506 alarm_manager_->next_poll_time_.ToJsTime()); 506 alarm_manager_->next_poll_time_.ToJsTime());
507 } 507 }
508 508
509 TEST_F(ExtensionAlarmsSchedulingTest, TimerRunning) { 509 TEST_F(ExtensionAlarmsSchedulingTest, TimerRunning) {
510 EXPECT_FALSE(alarm_manager_->timer_.IsRunning()); 510 EXPECT_FALSE(alarm_manager_->timer_.IsRunning());
511 CreateAlarm("[\"a\", {\"delayInMinutes\": 0.001}]"); 511 CreateAlarm("[\"a\", {\"delayInMinutes\": 0.001}]");
512 EXPECT_TRUE(alarm_manager_->timer_.IsRunning()); 512 EXPECT_TRUE(alarm_manager_->timer_.IsRunning());
513 MessageLoop::current()->Run(); 513 base::MessageLoop::current()->Run();
514 EXPECT_FALSE(alarm_manager_->timer_.IsRunning()); 514 EXPECT_FALSE(alarm_manager_->timer_.IsRunning());
515 CreateAlarm("[\"bb\", {\"delayInMinutes\": 10}]"); 515 CreateAlarm("[\"bb\", {\"delayInMinutes\": 10}]");
516 EXPECT_TRUE(alarm_manager_->timer_.IsRunning()); 516 EXPECT_TRUE(alarm_manager_->timer_.IsRunning());
517 alarm_manager_->RemoveAllAlarms(extension_->id()); 517 alarm_manager_->RemoveAllAlarms(extension_->id());
518 EXPECT_FALSE(alarm_manager_->timer_.IsRunning()); 518 EXPECT_FALSE(alarm_manager_->timer_.IsRunning());
519 } 519 }
520 520
521 } // namespace extensions 521 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698