15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2010 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "jingle/notifier/listener/xml_element_util.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <sstream>
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string_number_conversions.h"
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "third_party/webrtc/libjingle/xmllite/qname.h"
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "third_party/webrtc/libjingle/xmllite/xmlconstants.h"
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "third_party/webrtc/libjingle/xmllite/xmlelement.h"
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "third_party/webrtc/libjingle/xmllite/xmlprinter.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace notifier {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string XmlElementToString(const buzz::XmlElement& xml_element) {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::ostringstream xml_stream;
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  buzz::XmlPrinter::PrintXml(&xml_stream, &xml_element);
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return xml_stream.str();
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)buzz::XmlElement* MakeBoolXmlElement(const char* name, bool value) {
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const buzz::QName elementQName(buzz::STR_EMPTY, name);
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const buzz::QName boolAttrQName(buzz::STR_EMPTY, "bool");
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  buzz::XmlElement* bool_xml_element =
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      new buzz::XmlElement(elementQName, true);
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool_xml_element->AddAttr(boolAttrQName, value ? "true" : "false");
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return bool_xml_element;
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)buzz::XmlElement* MakeIntXmlElement(const char* name, int value) {
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const buzz::QName elementQName(buzz::STR_EMPTY, name);
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const buzz::QName intAttrQName(buzz::STR_EMPTY, "int");
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  buzz::XmlElement* int_xml_element =
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      new buzz::XmlElement(elementQName, true);
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int_xml_element->AddAttr(intAttrQName, base::IntToString(value));
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return int_xml_element;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)buzz::XmlElement* MakeStringXmlElement(const char* name, const char* value) {
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const buzz::QName elementQName(buzz::STR_EMPTY, name);
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const buzz::QName dataAttrQName(buzz::STR_EMPTY, "data");
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  buzz::XmlElement* data_xml_element =
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      new buzz::XmlElement(elementQName, true);
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  data_xml_element->AddAttr(dataAttrQName, value);
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return data_xml_element;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace notifier
52