| Index: chrome/browser/sync/notifier/listener/subscribe_task.cc
|
| ===================================================================
|
| --- chrome/browser/sync/notifier/listener/subscribe_task.cc (revision 46353)
|
| +++ chrome/browser/sync/notifier/listener/subscribe_task.cc (working copy)
|
| @@ -1,109 +0,0 @@
|
| -// Copyright (c) 2009 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 "chrome/browser/sync/notifier/listener/subscribe_task.h"
|
| -
|
| -#include <string>
|
| -
|
| -#include "base/logging.h"
|
| -#include "chrome/browser/sync/notifier/listener/notification_constants.h"
|
| -#include "chrome/browser/sync/notifier/listener/xml_element_util.h"
|
| -#include "talk/base/task.h"
|
| -#include "talk/xmllite/qname.h"
|
| -#include "talk/xmllite/xmlelement.h"
|
| -#include "talk/xmpp/xmppclient.h"
|
| -#include "talk/xmpp/xmppconstants.h"
|
| -#include "talk/xmpp/xmppengine.h"
|
| -
|
| -namespace notifier {
|
| -
|
| -SubscribeTask::SubscribeTask(
|
| - Task* parent,
|
| - const std::vector<std::string>& subscribed_services_list)
|
| - : XmppTask(parent, buzz::XmppEngine::HL_SINGLE),
|
| - subscribed_services_list_(subscribed_services_list) {
|
| -}
|
| -
|
| -SubscribeTask::~SubscribeTask() {
|
| -}
|
| -
|
| -bool SubscribeTask::HandleStanza(const buzz::XmlElement* stanza) {
|
| - if (!MatchResponseIq(stanza, GetClient()->jid().BareJid(), task_id()))
|
| - return false;
|
| - QueueStanza(stanza);
|
| - return true;
|
| -}
|
| -
|
| -int SubscribeTask::ProcessStart() {
|
| - LOG(INFO) << "P2P: Subscription task started.";
|
| - scoped_ptr<buzz::XmlElement> iq_stanza(
|
| - MakeSubscriptionMessage(subscribed_services_list_,
|
| - GetClient()->jid().BareJid(), task_id()));
|
| - LOG(INFO) << "P2P: Subscription stanza: "
|
| - << XmlElementToString(*iq_stanza.get());
|
| -
|
| - if (SendStanza(iq_stanza.get()) != buzz::XMPP_RETURN_OK) {
|
| - SignalStatusUpdate(false);
|
| - // TODO(akalin): This should be STATE_ERROR.
|
| - return STATE_DONE;
|
| - }
|
| - return STATE_RESPONSE;
|
| -}
|
| -
|
| -int SubscribeTask::ProcessResponse() {
|
| - LOG(INFO) << "P2P: Subscription response received.";
|
| - const buzz::XmlElement* stanza = NextStanza();
|
| - if (stanza == NULL) {
|
| - return STATE_BLOCKED;
|
| - }
|
| - LOG(INFO) << "P2P: Subscription response: " << XmlElementToString(*stanza);
|
| - // We've receieved a response to our subscription request.
|
| - if (stanza->HasAttr(buzz::QN_TYPE) &&
|
| - stanza->Attr(buzz::QN_TYPE) == buzz::STR_RESULT) {
|
| - SignalStatusUpdate(true);
|
| - return STATE_DONE;
|
| - }
|
| - // An error response was received.
|
| - // TODO(brg) : Error handling.
|
| - SignalStatusUpdate(false);
|
| - // TODO(akalin): This should be STATE_ERROR.
|
| - return STATE_DONE;
|
| -}
|
| -
|
| -buzz::XmlElement* SubscribeTask::MakeSubscriptionMessage(
|
| - const std::vector<std::string>& subscribed_services_list,
|
| - const buzz::Jid& to_jid_bare, const std::string& task_id) {
|
| - DCHECK(to_jid_bare.IsBare());
|
| - static const buzz::QName kQnNotifierGetAll(
|
| - true, kNotifierNamespace, "getAll");
|
| -
|
| - // Create the subscription stanza using the notifications protocol.
|
| - // <iq type='get' from='{fullJid}' to='{bareJid}' id='{#}'>
|
| - // <gn:getAll xmlns:gn="google:notifier" xmlns="">
|
| - // <ClientActive bool="true" />
|
| - // <!-- present only if subscribed_services_list is not empty -->
|
| - // <SubscribedServiceUrl data="google:notifier">
|
| - // <SubscribedServiceUrl data="http://www.google.com/chrome/sync">
|
| - // <FilterNonSubscribed bool="true" />
|
| - // </gn:getAll>
|
| - // </iq>
|
| -
|
| - buzz::XmlElement* iq = MakeIq(buzz::STR_GET, to_jid_bare, task_id);
|
| - buzz::XmlElement* get_all = new buzz::XmlElement(kQnNotifierGetAll, true);
|
| - iq->AddElement(get_all);
|
| -
|
| - get_all->AddElement(MakeBoolXmlElement("ClientActive", true));
|
| - for (std::vector<std::string>::const_iterator iter =
|
| - subscribed_services_list.begin();
|
| - iter != subscribed_services_list.end(); ++iter) {
|
| - get_all->AddElement(
|
| - MakeStringXmlElement("SubscribedServiceUrl", iter->c_str()));
|
| - }
|
| - if (!subscribed_services_list.empty()) {
|
| - get_all->AddElement(MakeBoolXmlElement("FilterNonSubscribed", true));
|
| - }
|
| - return iq;
|
| -}
|
| -
|
| -} // namespace notifier
|
|
|