Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "jingle/notifier/listener/listen_task.h" | 5 #include "jingle/notifier/listener/listen_task.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "jingle/notifier/listener/notification_constants.h" | 8 #include "jingle/notifier/listener/notification_constants.h" |
| 9 #include "jingle/notifier/listener/xml_element_util.h" | 9 #include "jingle/notifier/listener/xml_element_util.h" |
| 10 #include "talk/base/task.h" | 10 #include "talk/base/task.h" |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 58 // <Type int="#"/> | 58 // <Type int="#"/> |
| 59 // <Read bool="{true/false}"/> | 59 // <Read bool="{true/false}"/> |
| 60 // </State> | 60 // </State> |
| 61 // <ClientActive bool="{true/false}"/> | 61 // <ClientActive bool="{true/false}"/> |
| 62 // </Result> | 62 // </Result> |
| 63 // </not:getAll> | 63 // </not:getAll> |
| 64 // </iq> " | 64 // </iq> " |
| 65 // Note that there can be multiple "Result" elements, so we need to loop | 65 // Note that there can be multiple "Result" elements, so we need to loop |
| 66 // through all of them. | 66 // through all of them. |
| 67 bool update_signaled = false; | 67 bool update_signaled = false; |
| 68 const buzz::QName kQnNotifierGetAll(kNotifierNamespace, "getAll"); | |
| 68 const buzz::XmlElement* get_all_element = | 69 const buzz::XmlElement* get_all_element = |
| 69 stanza->FirstNamed(buzz::QName("google:notifier", "getAll")); | 70 stanza->FirstNamed(kQnNotifierGetAll); |
| 70 if (get_all_element) { | 71 if (get_all_element) { |
| 71 const buzz::XmlElement* result_element = | 72 const buzz::XmlElement* result_element = |
| 72 get_all_element->FirstNamed( | 73 get_all_element->FirstNamed( |
| 73 buzz::QName(buzz::STR_EMPTY, "Result")); | 74 buzz::QName(buzz::STR_EMPTY, "Result")); |
| 74 while (result_element) { | 75 while (result_element) { |
| 75 IncomingNotificationData notification_data; | 76 IncomingNotificationData notification_data; |
| 76 const buzz::XmlElement* id_element = | 77 const buzz::XmlElement* id_element = |
| 77 result_element->FirstNamed(buzz::QName(buzz::STR_EMPTY, "Id")); | 78 result_element->FirstNamed(buzz::QName(buzz::STR_EMPTY, "Id")); |
| 78 if (id_element) { | 79 if (id_element) { |
| 79 const buzz::XmlElement* service_url_element = | 80 const buzz::XmlElement* service_url_element = |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 118 // TODO(akalin): Do more verification on stanza depending on | 119 // TODO(akalin): Do more verification on stanza depending on |
| 119 // the sync notification method | 120 // the sync notification method |
| 120 if (IsValidNotification(stanza)) { | 121 if (IsValidNotification(stanza)) { |
| 121 QueueStanza(stanza); | 122 QueueStanza(stanza); |
| 122 return true; | 123 return true; |
| 123 } | 124 } |
| 124 return false; | 125 return false; |
| 125 } | 126 } |
| 126 | 127 |
| 127 bool ListenTask::IsValidNotification(const buzz::XmlElement* stanza) { | 128 bool ListenTask::IsValidNotification(const buzz::XmlElement* stanza) { |
| 128 static const buzz::QName kQnNotifierGetAll( | 129 const buzz::QName kQnNotifierGetAll(kNotifierNamespace, "getAll"); |
| 129 kNotifierNamespace, "getAll"); | 130 return MatchRequestIq(stanza, buzz::STR_SET, kQnNotifierGetAll); |
|
sanjeevr
2011/01/30 22:55:07
Nit: Leave the original comment about the format o
akalin
2011/01/31 09:54:17
Done.
| |
| 130 // An update notificaiton has the following form. | |
| 131 // <cli:iq from="{bare_jid}" to="{full_jid}" | |
| 132 // id="#" type="set" xmlns:cli="jabber:client"> | |
| 133 // <not:getAll xmlns:not="google:notifier"> | |
| 134 // <Timestamp long="#" xmlns=""/> | |
| 135 // </not:getAll> | |
| 136 // </cli:iq> | |
| 137 return | |
| 138 (MatchRequestIq(stanza, buzz::STR_SET, kQnNotifierGetAll) && | |
| 139 (stanza->Attr(buzz::QN_TO) == GetClient()->jid().Str()) && | |
| 140 (stanza->Attr(buzz::QN_FROM) == GetClient()->jid().BareJid().Str())); | |
| 141 } | 131 } |
| 142 | 132 |
| 143 } // namespace notifier | 133 } // namespace notifier |
| OLD | NEW |