// Copyright (c) 2012 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 "sync/notifier/push_client_channel.h" #include "base/stl_util.h" #include "google/cacheinvalidation/client_gateway.pb.h" #include "jingle/notifier/listener/push_client.h" namespace syncer { namespace { const char kBotJid[] = "tango@bot.talk.google.com"; const char kChannelName[] = "tango_raw"; } // namespace PushClientChannel::PushClientChannel( scoped_ptr push_client) : push_client_(push_client.Pass()) { push_client_->AddObserver(this); notifier::Subscription subscription; subscription.channel = kChannelName; subscription.from = ""; notifier::SubscriptionList subscriptions; subscriptions.push_back(subscription); push_client_->UpdateSubscriptions(subscriptions); } PushClientChannel::~PushClientChannel() { push_client_->RemoveObserver(this); } void PushClientChannel::UpdateCredentials( const std::string& email, const std::string& token) { push_client_->UpdateCredentials(email, token); } void PushClientChannel::SendEncodedMessage(const std::string& encoded_message) { notifier::Recipient recipient; recipient.to = kBotJid; notifier::Notification notification; notification.channel = kChannelName; notification.recipients.push_back(recipient); notification.data = encoded_message; push_client_->SendNotification(notification); } void PushClientChannel::OnNotificationsEnabled() { NotifyStateChange(INVALIDATIONS_ENABLED); } void PushClientChannel::OnNotificationsDisabled( notifier::NotificationsDisabledReason reason) { NotifyStateChange(FromNotifierReason(reason)); } void PushClientChannel::OnIncomingNotification( const notifier::Notification& notification) { DeliverIncomingMessage(notification.data); } } // namespace syncer