36bb3c35540ecd9b57eed8fdd3802e807998aa81
[platform/framework/web/crosswalk.git] / src / jingle / notifier / listener / push_notifications_send_update_task.h
1 // Copyright (c) 2011 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 //
5 // Methods for sending the update stanza to notify peers via xmpp.
6
7 #ifndef JINGLE_NOTIFIER_LISTENER_PUSH_NOTIFICATIONS_SEND_UPDATE_TASK_H_
8 #define JINGLE_NOTIFIER_LISTENER_PUSH_NOTIFICATIONS_SEND_UPDATE_TASK_H_
9
10 #include "base/basictypes.h"
11 #include "base/compiler_specific.h"
12 #include "base/gtest_prod_util.h"
13 #include "jingle/notifier/listener/notification_defines.h"
14 #include "talk/xmpp/xmpptask.h"
15
16 namespace buzz {
17 class Jid;
18 class XmlElement;
19 }  // namespace
20
21 namespace notifier {
22
23 class PushNotificationsSendUpdateTask : public buzz::XmppTask {
24  public:
25   PushNotificationsSendUpdateTask(
26       buzz::XmppTaskParentInterface* parent, const Notification& notification);
27   virtual ~PushNotificationsSendUpdateTask();
28
29   // Overridden from buzz::XmppTask.
30   virtual int ProcessStart() OVERRIDE;
31
32  private:
33   // Allocates and constructs an buzz::XmlElement containing the update stanza.
34   static buzz::XmlElement* MakeUpdateMessage(
35       const Notification& notification, const buzz::Jid& to_jid_bare);
36
37   const Notification notification_;
38
39   FRIEND_TEST_ALL_PREFIXES(PushNotificationsSendUpdateTaskTest,
40                            MakeUpdateMessage);
41
42   DISALLOW_COPY_AND_ASSIGN(PushNotificationsSendUpdateTask);
43 };
44
45 }  // namespace notifier
46
47 #endif  // JINGLE_NOTIFIER_LISTENER_PUSH_NOTIFICATIONS_SEND_UPDATE_TASK_H_