| // Copyright 2018 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "components/invalidation/impl/fcm_sync_network_channel.h" |
| |
| namespace syncer { |
| |
| FCMSyncNetworkChannel::FCMSyncNetworkChannel() : received_messages_count_(0) {} |
| |
| FCMSyncNetworkChannel::~FCMSyncNetworkChannel() {} |
| |
| void FCMSyncNetworkChannel::SetMessageReceiver( |
| MessageCallback incoming_receiver) { |
| incoming_receiver_ = std::move(incoming_receiver); |
| } |
| |
| void FCMSyncNetworkChannel::SetTokenReceiver(TokenCallback token_receiver) { |
| token_receiver_ = token_receiver; |
| if (!token_.empty()) |
| token_receiver_.Run(token_); |
| } |
| |
| void FCMSyncNetworkChannel::AddObserver(Observer* observer) { |
| observers_.AddObserver(observer); |
| } |
| |
| void FCMSyncNetworkChannel::RemoveObserver(Observer* observer) { |
| observers_.RemoveObserver(observer); |
| } |
| |
| void FCMSyncNetworkChannel::NotifyChannelStateChange(FcmChannelState state) { |
| for (auto& observer : observers_) |
| observer.OnFCMChannelStateChanged(state); |
| } |
| |
| bool FCMSyncNetworkChannel::DeliverIncomingMessage( |
| const std::string& payload, |
| const std::string& private_topic, |
| const std::string& public_topic, |
| const std::string& version) { |
| if (!incoming_receiver_) { |
| DLOG(ERROR) << "No receiver for incoming notification"; |
| return false; |
| } |
| received_messages_count_++; |
| incoming_receiver_.Run(payload, private_topic, public_topic, version); |
| return true; |
| } |
| |
| bool FCMSyncNetworkChannel::DeliverToken(const std::string& token) { |
| token_ = token; |
| if (!token_receiver_) { |
| DLOG(ERROR) << "No receiver for token"; |
| return false; |
| } |
| token_receiver_.Run(token_); |
| return true; |
| } |
| |
| int FCMSyncNetworkChannel::GetReceivedMessagesCount() const { |
| return received_messages_count_; |
| } |
| |
| void FCMSyncNetworkChannel::RequestDetailedStatus( |
| base::Callback<void(const base::DictionaryValue&)> callback) {} |
| |
| } // namespace syncer |