| Index: base/timer/hi_res_timer_manager_unittest.cc
|
| diff --git a/base/timer/hi_res_timer_manager_unittest.cc b/base/timer/hi_res_timer_manager_unittest.cc
|
| index ce10e3786d70e295710da4cd05aaa4317e103f6a..5475a91446bdef369b8d2974cbb17b48f170499e 100644
|
| --- a/base/timer/hi_res_timer_manager_unittest.cc
|
| +++ b/base/timer/hi_res_timer_manager_unittest.cc
|
| @@ -14,25 +14,22 @@
|
| namespace base {
|
|
|
| #if defined(OS_WIN)
|
| -// http://crbug.com/114048
|
| -TEST(HiResTimerManagerTest, DISABLED_ToggleOnOff) {
|
| - base::MessageLoop loop;
|
| +TEST(HiResTimerManagerTest, ToggleOnOff) {
|
| + // The power monitor creates Window to receive power notifications from
|
| + // Windows, which makes this test flaky if you run while the machine
|
| + // goes in or out of AC power.
|
| + base::MessageLoop loop(base::MessageLoop::TYPE_UI);
|
| scoped_ptr<base::PowerMonitorSource> power_monitor_source(
|
| new base::PowerMonitorDeviceSource());
|
| scoped_ptr<base::PowerMonitor> power_monitor(
|
| new base::PowerMonitor(power_monitor_source.Pass()));
|
| - HighResolutionTimerManager manager;
|
|
|
| - // At this point, we don't know if the high resolution timers are on or off,
|
| - // it depends on what system the tests are running on (for example, if this
|
| - // test is running on a laptop/battery, then the PowerMonitor would have
|
| - // already set the PowerState to battery power; but if we're running on a
|
| - // desktop, then the PowerState will be non-battery power). Simulate a power
|
| - // level change to get to a deterministic state.
|
| - manager.OnPowerStateChange(/* on_battery */ false);
|
| + HighResolutionTimerManager manager;
|
| + // Simulate a on-AC power event to get to a known initial state.
|
| + manager.OnPowerStateChange(false);
|
|
|
| // Loop a few times to test power toggling.
|
| - for (int loop = 2; loop >= 0; --loop) {
|
| + for (int times = 0; times != 3; ++times) {
|
| // The manager has the high resolution clock enabled now.
|
| EXPECT_TRUE(manager.hi_res_clock_available());
|
| // But the Time class has it off, because it hasn't been activated.
|
| @@ -43,12 +40,12 @@ TEST(HiResTimerManagerTest, DISABLED_ToggleOnOff) {
|
| EXPECT_TRUE(base::Time::IsHighResolutionTimerInUse());
|
|
|
| // Simulate a on-battery power event.
|
| - manager.OnPowerStateChange(/* on_battery */ true);
|
| + manager.OnPowerStateChange(true);
|
| EXPECT_FALSE(manager.hi_res_clock_available());
|
| EXPECT_FALSE(base::Time::IsHighResolutionTimerInUse());
|
|
|
| - // Simulate a off-battery power event.
|
| - manager.OnPowerStateChange(/* on_battery */ false);
|
| + // Back to on-AC power.
|
| + manager.OnPowerStateChange(false);
|
| EXPECT_TRUE(manager.hi_res_clock_available());
|
| EXPECT_TRUE(base::Time::IsHighResolutionTimerInUse());
|
|
|
|
|