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

Unified Diff: remoting/protocol/content_description.cc

Issue 1277093006: Enable QUIC support in chromoting (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@quic_adapters
Patch Set: Created 5 years, 4 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
« no previous file with comments | « remoting/protocol/content_description.h ('k') | remoting/protocol/content_description_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/protocol/content_description.cc
diff --git a/remoting/protocol/content_description.cc b/remoting/protocol/content_description.cc
index a86caa5fa882d589b43eaae3db2fc0e7eb4f0bd2..ccc10b813f60505a10a2dc4dd3275ceb9e84bf2d 100644
--- a/remoting/protocol/content_description.cc
+++ b/remoting/protocol/content_description.cc
@@ -4,6 +4,7 @@
#include "remoting/protocol/content_description.h"
+#include "base/base64.h"
#include "base/logging.h"
#include "base/strings/string_number_conversions.h"
#include "remoting/base/constants.h"
@@ -32,6 +33,7 @@ const char kVideoTag[] = "video";
const char kAudioTag[] = "audio";
const char kVp9ExperimentTag[] = "vp9-experiment";
const char kDeprecatedResolutionTag[] = "initial-resolution";
+const char kQuicConfigTag[] = "quic-config";
const char kTransportAttr[] = "transport";
const char kVersionAttr[] = "version";
@@ -42,6 +44,7 @@ const char kDeprecatedHeightAttr[] = "height";
const NameMapElement<ChannelConfig::TransportType> kTransports[] = {
{ ChannelConfig::TRANSPORT_STREAM, "stream" },
{ ChannelConfig::TRANSPORT_MUX_STREAM, "mux-stream" },
+ { ChannelConfig::TRANSPORT_QUIC_STREAM, "quic-stream" },
{ ChannelConfig::TRANSPORT_DATAGRAM, "datagram" },
{ ChannelConfig::TRANSPORT_NONE, "none" },
};
@@ -116,9 +119,11 @@ bool ParseChannelConfig(const XmlElement* element, bool codec_required,
ContentDescription::ContentDescription(
scoped_ptr<CandidateSessionConfig> config,
- scoped_ptr<buzz::XmlElement> authenticator_message)
+ scoped_ptr<buzz::XmlElement> authenticator_message,
+ const std::string& quic_config_message)
: candidate_config_(config.Pass()),
- authenticator_message_(authenticator_message.Pass()) {
+ authenticator_message_(authenticator_message.Pass()),
+ quic_config_message_(quic_config_message) {
}
ContentDescription::~ContentDescription() { }
@@ -168,11 +173,20 @@ XmlElement* ContentDescription::ToXml() const {
resolution_tag->AddAttr(QName(kDefaultNs, kDeprecatedHeightAttr), "480");
root->AddElement(resolution_tag);
- if (authenticator_message_.get()) {
+ if (authenticator_message_) {
DCHECK(Authenticator::IsAuthenticatorMessage(authenticator_message_.get()));
root->AddElement(new XmlElement(*authenticator_message_));
}
+ if (!quic_config_message_.empty()) {
+ XmlElement* quic_config_tag =
+ new XmlElement(QName(kChromotingXmlNamespace, kQuicConfigTag));
+ root->AddElement(quic_config_tag);
+ std::string config_base64;
+ base::Base64Encode(quic_config_message_, &config_base64);
+ quic_config_tag->SetBodyText(config_base64);
+ }
+
if (config()->vp9_experiment_enabled()) {
root->AddElement(
new XmlElement(QName(kChromotingXmlNamespace, kVp9ExperimentTag)));
@@ -241,8 +255,19 @@ scoped_ptr<ContentDescription> ContentDescription::ParseXml(
if (child)
authenticator_message.reset(new XmlElement(*child));
- return make_scoped_ptr(
- new ContentDescription(config.Pass(), authenticator_message.Pass()));
+ std::string quic_config_message;
+ const XmlElement* quic_config_tag =
+ element->FirstNamed(QName(kChromotingXmlNamespace, kQuicConfigTag));
+ if (quic_config_tag) {
+ if (!base::Base64Decode(quic_config_tag->BodyText(),
+ &quic_config_message)) {
+ LOG(ERROR) << "Failed to parse QUIC config.";
+ return nullptr;
+ }
+ }
+
+ return make_scoped_ptr(new ContentDescription(
+ config.Pass(), authenticator_message.Pass(), quic_config_message));
}
} // namespace protocol
« no previous file with comments | « remoting/protocol/content_description.h ('k') | remoting/protocol/content_description_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698