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

Unified Diff: components/invalidation/gcm_invalidation_bridge.cc

Issue 334253006: Notify SyncNetworkChannel about GCM connection state (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed typo Created 6 years, 6 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
Index: components/invalidation/gcm_invalidation_bridge.cc
diff --git a/components/invalidation/gcm_invalidation_bridge.cc b/components/invalidation/gcm_invalidation_bridge.cc
index ad52c3fda7cfadd655ed587bcc61f3891097bdd0..84efa004d95742c137c9e48a29865cb539312893 100644
--- a/components/invalidation/gcm_invalidation_bridge.cc
+++ b/components/invalidation/gcm_invalidation_bridge.cc
@@ -41,7 +41,7 @@ class GCMInvalidationBridge::Core : public syncer::GCMNetworkChannelDelegate,
virtual ~Core();
// syncer::GCMNetworkChannelDelegate implementation.
- virtual void Initialize() OVERRIDE;
+ virtual void Initialize(ConnectionStateCallback callback) OVERRIDE;
virtual void RequestToken(RequestTokenCallback callback) OVERRIDE;
virtual void InvalidateToken(const std::string& token) OVERRIDE;
virtual void Register(RegisterCallback callback) OVERRIDE;
@@ -58,11 +58,14 @@ class GCMInvalidationBridge::Core : public syncer::GCMNetworkChannelDelegate,
void OnIncomingMessage(const std::string& message,
const std::string& echo_token);
+ void OnConnectionStateChanged(ConnectionState connection_state);
+
private:
base::WeakPtr<GCMInvalidationBridge> bridge_;
scoped_refptr<base::SingleThreadTaskRunner> ui_thread_task_runner_;
MessageCallback message_callback_;
+ ConnectionStateCallback connection_state_callback_;
base::WeakPtrFactory<Core> weak_factory_;
@@ -81,8 +84,9 @@ GCMInvalidationBridge::Core::Core(
GCMInvalidationBridge::Core::~Core() {}
-void GCMInvalidationBridge::Core::Initialize() {
+void GCMInvalidationBridge::Core::Initialize(ConnectionStateCallback callback) {
DCHECK(CalledOnValidThread());
+ connection_state_callback_ = callback;
// Pass core WeapPtr and TaskRunner to GCMInvalidationBridge for it to be able
// to post back.
ui_thread_task_runner_->PostTask(
@@ -145,6 +149,13 @@ void GCMInvalidationBridge::Core::OnIncomingMessage(
message_callback_.Run(message, echo_token);
}
+void GCMInvalidationBridge::Core::OnConnectionStateChanged(
+ ConnectionState connection_state) {
+ if (!connection_state_callback_.is_null()) {
+ connection_state_callback_.Run(connection_state);
+ }
+}
+
GCMInvalidationBridge::GCMInvalidationBridge(
gcm::GCMDriver* gcm_driver,
IdentityProvider* identity_provider)
@@ -317,11 +328,19 @@ void GCMInvalidationBridge::OnSendError(
}
void GCMInvalidationBridge::OnConnected(const net::IPEndPoint& ip_endpoint) {
- // TODO(pavely): update invalidator state.
+ core_thread_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&GCMInvalidationBridge::Core::OnConnectionStateChanged,
+ core_,
+ syncer::GCMNetworkChannelDelegate::CONNECTION_STATE_ONLINE));
}
void GCMInvalidationBridge::OnDisconnected() {
- // TODO(pavely): update invalidator state.
+ core_thread_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&GCMInvalidationBridge::Core::OnConnectionStateChanged,
+ core_,
+ syncer::GCMNetworkChannelDelegate::CONNECTION_STATE_OFFLINE));
}
« no previous file with comments | « chrome/browser/invalidation/gcm_invalidation_bridge_unittest.cc ('k') | components/invalidation/gcm_network_channel.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698