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

Unified Diff: google_apis/gcm/engine/heartbeat_manager.cc

Issue 1758573004: [GCM] Fixing the client interval interaction with heartbeat ack (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | google_apis/gcm/engine/heartbeat_manager_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: google_apis/gcm/engine/heartbeat_manager.cc
diff --git a/google_apis/gcm/engine/heartbeat_manager.cc b/google_apis/gcm/engine/heartbeat_manager.cc
index 8ac70b841b90f5a200f28b8a82fba47f674e4674..032e58ec0e40121e89f66094de97de8d9c104a9b 100644
--- a/google_apis/gcm/engine/heartbeat_manager.cc
+++ b/google_apis/gcm/engine/heartbeat_manager.cc
@@ -4,6 +4,7 @@
#include "google_apis/gcm/engine/heartbeat_manager.h"
+#include <limits>
#include <utility>
#include "base/callback.h"
@@ -166,6 +167,7 @@ void HeartbeatManager::OnHeartbeatTriggered() {
}
void HeartbeatManager::RestartTimer() {
+ int interval_ms = std::numeric_limits<int>::max();
Nicolas Zea 2016/03/03 00:19:43 Why not initialize to heartbeat_interval_ms_?
fgorski 2016/03/03 17:10:35 Done.
if (!waiting_for_ack_) {
// Recalculate the timer interval based network type.
Nicolas Zea 2016/03/03 00:19:43 nit: based network type -> based on network type
fgorski 2016/03/03 17:10:35 Done.
// Server interval takes precedence over client interval, even if the latter
@@ -176,29 +178,30 @@ void HeartbeatManager::RestartTimer() {
} else if (HasClientHeartbeatInterval()) {
// Client interval might have been adjusted up, which should only take
// effect during a reconnection.
- if (client_interval_ms_ < heartbeat_interval_ms_ ||
+ if (client_interval_ms_ <= heartbeat_interval_ms_ ||
heartbeat_interval_ms_ == 0) {
heartbeat_interval_ms_ = client_interval_ms_;
}
} else {
heartbeat_interval_ms_ = GetDefaultHeartbeatInterval();
}
+ interval_ms = heartbeat_interval_ms_;
DVLOG(1) << "Sending next heartbeat in "
- << heartbeat_interval_ms_ << " ms.";
+ << interval_ms << " ms.";
} else {
- heartbeat_interval_ms_ = kHeartbeatAckDefaultMs;
+ // Not updating the value of heartbeat_interval_ms_ when waitign for ack.
sjoe 2016/03/02 23:46:08 waitign -> waiting
fgorski 2016/03/03 17:10:35 Done.
+ interval_ms = kHeartbeatAckDefaultMs;
DVLOG(1) << "Resetting timer for ack with "
- << heartbeat_interval_ms_ << " ms interval.";
+ << interval_ms << " ms interval.";
}
heartbeat_expected_time_ =
- base::Time::Now() +
- base::TimeDelta::FromMilliseconds(heartbeat_interval_ms_);
+ base::Time::Now() + base::TimeDelta::FromMilliseconds(interval_ms);
heartbeat_timer_->Start(FROM_HERE,
- base::TimeDelta::FromMilliseconds(
- heartbeat_interval_ms_),
- base::Bind(&HeartbeatManager::OnHeartbeatTriggered,
- weak_ptr_factory_.GetWeakPtr()));
+ base::TimeDelta::FromMilliseconds(
+ interval_ms),
+ base::Bind(&HeartbeatManager::OnHeartbeatTriggered,
+ weak_ptr_factory_.GetWeakPtr()));
#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
// Windows, Mac, Android, iOS, and Chrome OS all provide a way to be notified
« no previous file with comments | « no previous file | google_apis/gcm/engine/heartbeat_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698