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

Side by Side Diff: remoting/protocol/content_description.cc

Issue 1864213002: Convert //remoting to use std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Mac IWYU Created 4 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "remoting/protocol/content_description.h" 5 #include "remoting/protocol/content_description.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/memory/ptr_util.h"
11 #include "base/strings/string_number_conversions.h" 12 #include "base/strings/string_number_conversions.h"
12 #include "remoting/base/constants.h" 13 #include "remoting/base/constants.h"
13 #include "remoting/protocol/authenticator.h" 14 #include "remoting/protocol/authenticator.h"
14 #include "remoting/protocol/name_value_map.h" 15 #include "remoting/protocol/name_value_map.h"
15 #include "third_party/webrtc/libjingle/xmllite/xmlelement.h" 16 #include "third_party/webrtc/libjingle/xmllite/xmlelement.h"
16 17
17 using buzz::QName; 18 using buzz::QName;
18 using buzz::XmlElement; 19 using buzz::XmlElement;
19 20
20 namespace remoting { 21 namespace remoting {
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 config->version = 0; 109 config->version = 0;
109 config->codec = ChannelConfig::CODEC_UNDEFINED; 110 config->codec = ChannelConfig::CODEC_UNDEFINED;
110 } 111 }
111 112
112 return true; 113 return true;
113 } 114 }
114 115
115 } // namespace 116 } // namespace
116 117
117 ContentDescription::ContentDescription( 118 ContentDescription::ContentDescription(
118 scoped_ptr<CandidateSessionConfig> config, 119 std::unique_ptr<CandidateSessionConfig> config,
119 scoped_ptr<buzz::XmlElement> authenticator_message) 120 std::unique_ptr<buzz::XmlElement> authenticator_message)
120 : candidate_config_(std::move(config)), 121 : candidate_config_(std::move(config)),
121 authenticator_message_(std::move(authenticator_message)) { 122 authenticator_message_(std::move(authenticator_message)) {}
122 }
123 123
124 ContentDescription::~ContentDescription() { } 124 ContentDescription::~ContentDescription() { }
125 125
126 // ToXml() creates content description for chromoting session. The 126 // ToXml() creates content description for chromoting session. The
127 // description looks as follows: 127 // description looks as follows:
128 // <description xmlns="google:remoting"> 128 // <description xmlns="google:remoting">
129 // <standard-ice/> 129 // <standard-ice/>
130 // <control transport="stream" version="1" /> 130 // <control transport="stream" version="1" />
131 // <event transport="datagram" version="1" /> 131 // <event transport="datagram" version="1" />
132 // <video transport="stream" codec="vp8" version="1" /> 132 // <video transport="stream" codec="vp8" version="1" />
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 child = child->NextNamed(tag); 193 child = child->NextNamed(tag);
194 } 194 }
195 if (optional && configs->empty()) { 195 if (optional && configs->empty()) {
196 // If there's no mention of the tag, implicitly assume disabled channel. 196 // If there's no mention of the tag, implicitly assume disabled channel.
197 configs->push_back(ChannelConfig::None()); 197 configs->push_back(ChannelConfig::None());
198 } 198 }
199 return true; 199 return true;
200 } 200 }
201 201
202 // static 202 // static
203 scoped_ptr<ContentDescription> ContentDescription::ParseXml( 203 std::unique_ptr<ContentDescription> ContentDescription::ParseXml(
204 const XmlElement* element, 204 const XmlElement* element,
205 bool webrtc_transport) { 205 bool webrtc_transport) {
206 if (element->Name() != QName(kChromotingXmlNamespace, kDescriptionTag)) { 206 if (element->Name() != QName(kChromotingXmlNamespace, kDescriptionTag)) {
207 LOG(ERROR) << "Invalid description: " << element->Str(); 207 LOG(ERROR) << "Invalid description: " << element->Str();
208 return nullptr; 208 return nullptr;
209 } 209 }
210 scoped_ptr<CandidateSessionConfig> config( 210 std::unique_ptr<CandidateSessionConfig> config(
211 CandidateSessionConfig::CreateEmpty()); 211 CandidateSessionConfig::CreateEmpty());
212 212
213 config->set_webrtc_supported(webrtc_transport); 213 config->set_webrtc_supported(webrtc_transport);
214 214
215 if (element->FirstNamed(QName(kChromotingXmlNamespace, kStandardIceTag)) != 215 if (element->FirstNamed(QName(kChromotingXmlNamespace, kStandardIceTag)) !=
216 nullptr) { 216 nullptr) {
217 config->set_ice_supported(true); 217 config->set_ice_supported(true);
218 if (!ParseChannelConfigs(element, kControlTag, false, false, 218 if (!ParseChannelConfigs(element, kControlTag, false, false,
219 config->mutable_control_configs()) || 219 config->mutable_control_configs()) ||
220 !ParseChannelConfigs(element, kEventTag, false, false, 220 !ParseChannelConfigs(element, kEventTag, false, false,
221 config->mutable_event_configs()) || 221 config->mutable_event_configs()) ||
222 !ParseChannelConfigs(element, kVideoTag, true, false, 222 !ParseChannelConfigs(element, kVideoTag, true, false,
223 config->mutable_video_configs()) || 223 config->mutable_video_configs()) ||
224 !ParseChannelConfigs(element, kAudioTag, true, true, 224 !ParseChannelConfigs(element, kAudioTag, true, true,
225 config->mutable_audio_configs())) { 225 config->mutable_audio_configs())) {
226 return nullptr; 226 return nullptr;
227 } 227 }
228 } 228 }
229 229
230 // Check if VP9 experiment is enabled. 230 // Check if VP9 experiment is enabled.
231 if (element->FirstNamed(QName(kChromotingXmlNamespace, kVp9ExperimentTag))) { 231 if (element->FirstNamed(QName(kChromotingXmlNamespace, kVp9ExperimentTag))) {
232 config->set_vp9_experiment_enabled(true); 232 config->set_vp9_experiment_enabled(true);
233 } 233 }
234 234
235 scoped_ptr<XmlElement> authenticator_message; 235 std::unique_ptr<XmlElement> authenticator_message;
236 const XmlElement* child = Authenticator::FindAuthenticatorMessage(element); 236 const XmlElement* child = Authenticator::FindAuthenticatorMessage(element);
237 if (child) 237 if (child)
238 authenticator_message.reset(new XmlElement(*child)); 238 authenticator_message.reset(new XmlElement(*child));
239 239
240 return make_scoped_ptr(new ContentDescription( 240 return base::WrapUnique(new ContentDescription(
241 std::move(config), std::move(authenticator_message))); 241 std::move(config), std::move(authenticator_message)));
242 } 242 }
243 243
244 } // namespace protocol 244 } // namespace protocol
245 } // namespace remoting 245 } // namespace remoting
OLDNEW
« 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