fcm_sync_network_channel.cc 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // Copyright 2018 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "components/invalidation/impl/fcm_sync_network_channel.h"
  5. #include "base/logging.h"
  6. #include "base/observer_list.h"
  7. namespace invalidation {
  8. FCMSyncNetworkChannel::FCMSyncNetworkChannel() : received_messages_count_(0) {}
  9. FCMSyncNetworkChannel::~FCMSyncNetworkChannel() = default;
  10. void FCMSyncNetworkChannel::SetMessageReceiver(
  11. MessageCallback incoming_receiver) {
  12. incoming_receiver_ = std::move(incoming_receiver);
  13. }
  14. void FCMSyncNetworkChannel::SetTokenReceiver(TokenCallback token_receiver) {
  15. token_receiver_ = token_receiver;
  16. if (!token_.empty())
  17. token_receiver_.Run(token_);
  18. }
  19. void FCMSyncNetworkChannel::AddObserver(Observer* observer) {
  20. observers_.AddObserver(observer);
  21. }
  22. void FCMSyncNetworkChannel::RemoveObserver(Observer* observer) {
  23. observers_.RemoveObserver(observer);
  24. }
  25. void FCMSyncNetworkChannel::NotifyChannelStateChange(FcmChannelState state) {
  26. for (auto& observer : observers_)
  27. observer.OnFCMChannelStateChanged(state);
  28. }
  29. bool FCMSyncNetworkChannel::DeliverIncomingMessage(
  30. const std::string& payload,
  31. const std::string& private_topic,
  32. const std::string& public_topic,
  33. int64_t version) {
  34. if (!incoming_receiver_) {
  35. DLOG(ERROR) << "No receiver for incoming notification";
  36. return false;
  37. }
  38. received_messages_count_++;
  39. incoming_receiver_.Run(payload, private_topic, public_topic, version);
  40. return true;
  41. }
  42. bool FCMSyncNetworkChannel::DeliverToken(const std::string& token) {
  43. token_ = token;
  44. if (!token_receiver_) {
  45. DLOG(ERROR) << "No receiver for token";
  46. return false;
  47. }
  48. token_receiver_.Run(token_);
  49. return true;
  50. }
  51. } // namespace invalidation