Logo Search packages:      
Sourcecode: chromium-browser version File versions  Download package


// 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.
// This class handles subscribing to talk notifications.  It does the getAll iq
// stanza which establishes the endpoint and directs future notifications to be
// pushed.


#include <string>

#include "chrome/browser/sync/notification_method.h"
#include "talk/xmllite/xmlelement.h"
#include "talk/xmpp/xmpptask.h"
#include "testing/gtest/include/gtest/gtest_prod.h"

namespace browser_sync {

class SubscribeTask : public buzz::XmppTask {
  SubscribeTask(Task* parent, NotificationMethod notification_method);
  virtual ~SubscribeTask();

  // Overridden from XmppTask.
  virtual int ProcessStart();
  virtual int ProcessResponse();
  virtual bool HandleStanza(const buzz::XmlElement* stanza);

  // Signal callback upon subscription success.
  sigslot::signal1<bool> SignalStatusUpdate;

  // Assembles an Xmpp stanza which can be sent to subscribe to notifications.
  static buzz::XmlElement* MakeSubscriptionMessage(
      NotificationMethod notification_method,
      const buzz::Jid& to_jid_bare, const std::string& task_id);

  static buzz::XmlElement* MakeLegacySubscriptionMessage(
      const buzz::Jid& to_jid_bare, const std::string& task_id);

  static buzz::XmlElement* MakeNonLegacySubscriptionMessage(
      bool is_transitional,
      const buzz::Jid& to_jid_bare, const std::string& task_id);

  NotificationMethod notification_method_;

  FRIEND_TEST(SubscribeTaskTest, MakeLegacySubscriptionMessage);
  FRIEND_TEST(SubscribeTaskTest, MakeNonLegacySubscriptionMessage);
  FRIEND_TEST(SubscribeTaskTest, MakeSubscriptionMessage);


}  // namespace browser_sync


Generated by  Doxygen 1.6.0   Back to index