Index: google_apis/gcm/engine/heartbeat_manager_unittest.cc |
diff --git a/google_apis/gcm/engine/heartbeat_manager_unittest.cc b/google_apis/gcm/engine/heartbeat_manager_unittest.cc |
index e09707b2a21e9ffcc655257959622cebf4595b19..9e8bc6db2ad518f32f5a21371797f89cd58de7b7 100644 |
--- a/google_apis/gcm/engine/heartbeat_manager_unittest.cc |
+++ b/google_apis/gcm/engine/heartbeat_manager_unittest.cc |
@@ -6,6 +6,7 @@ |
#include "base/bind.h" |
#include "base/bind_helpers.h" |
+#include "base/memory/scoped_ptr.h" |
#include "base/message_loop/message_loop.h" |
#include "base/time/time.h" |
#include "base/timer/timer.h" |
@@ -24,10 +25,7 @@ mcs_proto::HeartbeatConfig BuildHeartbeatConfig(int interval_ms) { |
class TestHeartbeatManager : public HeartbeatManager { |
public: |
- TestHeartbeatManager() |
- : HeartbeatManager(make_scoped_ptr( |
- new base::Timer(true, /* retain user task */ |
- false /* non repeating */))) {} |
+ TestHeartbeatManager() {} |
virtual ~TestHeartbeatManager() {} |
// Bypass the heartbeat timer, and send the heartbeat now. |
@@ -175,6 +173,26 @@ TEST_F(HeartbeatManagerTest, StartThenUpdateInterval) { |
EXPECT_NE(heartbeat, manager()->GetNextHeartbeatTime()); |
} |
+// Updating the timer used for heartbeats before starting should not start the |
+// timer. |
+TEST_F(HeartbeatManagerTest, UpdateTimerBeforeStart) { |
+ manager()->UpdateHeartbeatTimer( |
+ make_scoped_ptr(new base::Timer(true, false))); |
+ EXPECT_TRUE(manager()->GetNextHeartbeatTime().is_null()); |
+} |
+ |
+// Updating the timer used for heartbeats after starting should restart the |
+// timer but not increase the heartbeat time by more than a millisecond. |
+TEST_F(HeartbeatManagerTest, UpdateTimerAfterStart) { |
+ StartManager(); |
+ base::TimeTicks heartbeat = manager()->GetNextHeartbeatTime(); |
+ |
+ manager()->UpdateHeartbeatTimer( |
+ make_scoped_ptr(new base::Timer(true, false))); |
+ EXPECT_LT(manager()->GetNextHeartbeatTime() - heartbeat, |
+ base::TimeDelta::FromMilliseconds(1)); |
+} |
+ |
// Stopping the manager should reset the heartbeat timer. |
TEST_F(HeartbeatManagerTest, Stop) { |
StartManager(); |