Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2251)

Unified Diff: chrome/browser/sync/notifier/listener/send_update_task.cc

Issue 1956001: Moved XMPP notifier library from chrome/browser/sync to chrome/common.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/sync/notifier/listener/send_update_task.cc
===================================================================
--- chrome/browser/sync/notifier/listener/send_update_task.cc (revision 46353)
+++ chrome/browser/sync/notifier/listener/send_update_task.cc (working copy)
@@ -1,131 +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/send_update_task.h"
-
-#include <string>
-
-#include "base/logging.h"
-#include "base/scoped_ptr.h"
-#include "chrome/browser/sync/notifier/listener/notification_constants.h"
-#include "chrome/browser/sync/notifier/listener/xml_element_util.h"
-#include "talk/xmllite/qname.h"
-#include "talk/xmpp/xmppclient.h"
-#include "talk/xmpp/xmppconstants.h"
-
-namespace notifier {
-
-SendUpdateTask::SendUpdateTask(Task* parent,
- const OutgoingNotificationData& data)
- : XmppTask(parent, buzz::XmppEngine::HL_SINGLE), // Watch for one reply.
- notification_data_(data) {
-}
-
-SendUpdateTask::~SendUpdateTask() {
-}
-
-bool SendUpdateTask::HandleStanza(const buzz::XmlElement* stanza) {
- if (!MatchResponseIq(stanza, GetClient()->jid().BareJid(), task_id()))
- return false;
- QueueStanza(stanza);
- return true;
-}
-
-int SendUpdateTask::ProcessStart() {
- LOG(INFO) << "P2P: Notification task started.";
- scoped_ptr<buzz::XmlElement> stanza(
- MakeUpdateMessage(notification_data_,
- GetClient()->jid().BareJid(), task_id()));
- LOG(INFO) << "P2P: Notification stanza: "
- << XmlElementToString(*stanza.get());
-
- if (SendStanza(stanza.get()) != buzz::XMPP_RETURN_OK) {
- // TODO(brg) : Retry on error.
- // TODO(akalin): Or maybe immediately return STATE_ERROR and let
- // retries happen a higher level. In any case, STATE_ERROR should
- // eventually be returned.
- SignalStatusUpdate(false);
- return STATE_DONE;
- }
- return STATE_RESPONSE;
-}
-
-int SendUpdateTask::ProcessResponse() {
- LOG(INFO) << "P2P: Notification response received.";
- const buzz::XmlElement* stanza = NextStanza();
- if (stanza == NULL) {
- return STATE_BLOCKED;
- }
- LOG(INFO) << "P2P: Notification response: " << XmlElementToString(*stanza);
- if (stanza->HasAttr(buzz::QN_TYPE) &&
- stanza->Attr(buzz::QN_TYPE) == buzz::STR_RESULT) {
- // Notify listeners of success.
- 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* SendUpdateTask::MakeUpdateMessage(
- const OutgoingNotificationData& notification_data,
- const buzz::Jid& to_jid_bare, const std::string& task_id) {
- DCHECK(to_jid_bare.IsBare());
- static const buzz::QName kQnNotifierSet(true, kNotifierNamespace, "set");
- static const buzz::QName kQnId(true, buzz::STR_EMPTY, "Id");
- static const buzz::QName kQnContent(true, buzz::STR_EMPTY, "Content");
-
- // Create our update stanza. The message is constructed as:
- // <iq type='get' from='{fullJid}' to='{bareJid}' id='{#}'>
- // <gn:set xmlns:gn="google:notifier" xmlns="">
- // <Id>
- // <ServiceUrl data="{Service_Url}" />
- // <ServiceId data="{Service_Id}" />
- // </Id>
- // If content needs to be sent, then the below element is added
- // <Content>
- // <Priority int="{Priority}" />
- // <RequireSubscription bool="{true/false}" />
- // <!-- If is_transitional is set, this is omitted. -->
- // <ServiceSpecificData data="{ServiceData}" />
- // <WriteToCacheOnly bool="{true/false}" />
- // </Content>
- // </set>
- // </iq>
- buzz::XmlElement* iq = MakeIq(buzz::STR_GET, to_jid_bare, task_id);
- buzz::XmlElement* set = new buzz::XmlElement(kQnNotifierSet, true);
- buzz::XmlElement* id = new buzz::XmlElement(kQnId, true);
- iq->AddElement(set);
- set->AddElement(id);
-
- id->AddElement(MakeStringXmlElement("ServiceUrl",
- notification_data.service_url.c_str()));
- id->AddElement(MakeStringXmlElement("ServiceId",
- notification_data.service_id.c_str()));
-
- if (notification_data.send_content) {
- buzz::XmlElement* content = new buzz::XmlElement(kQnContent, true);
- set->AddElement(content);
- content->AddElement(MakeIntXmlElement("Priority",
- notification_data.priority));
- content->AddElement(
- MakeBoolXmlElement("RequireSubscription",
- notification_data.require_subscription));
- if (!notification_data.service_specific_data.empty()) {
- content->AddElement(
- MakeStringXmlElement("ServiceSpecificData",
- notification_data.service_specific_data.c_str()));
- }
- content->AddElement(
- MakeBoolXmlElement("WriteToCacheOnly",
- notification_data.write_to_cache_only));
- }
- return iq;
-}
-
-} // namespace notifier

Powered by Google App Engine
This is Rietveld 408576698