Fix clang style warnings in p2p/base/{session,transport}description

Bug: webrtc:163
Change-Id: Id876608c1a20bde49f0f7d1eda1b38dcb647bf3f
Reviewed-on: https://webrtc-review.googlesource.com/17004
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20507}
diff --git a/p2p/base/sessiondescription.cc b/p2p/base/sessiondescription.cc
index 26989c0..afe9a9a 100644
--- a/p2p/base/sessiondescription.cc
+++ b/p2p/base/sessiondescription.cc
@@ -45,6 +45,15 @@
   return NULL;
 }
 
+ContentGroup::ContentGroup(const std::string& semantics)
+    : semantics_(semantics) {}
+
+ContentGroup::ContentGroup(const ContentGroup&) = default;
+ContentGroup::ContentGroup(ContentGroup&&) = default;
+ContentGroup& ContentGroup::operator=(const ContentGroup&) = default;
+ContentGroup& ContentGroup::operator=(ContentGroup&&) = default;
+ContentGroup::~ContentGroup() = default;
+
 const std::string* ContentGroup::FirstContentName() const {
   return (!content_names_.empty()) ? &(*content_names_.begin()) : NULL;
 }
@@ -70,6 +79,31 @@
   return true;
 }
 
+SessionDescription::SessionDescription() = default;
+
+SessionDescription::SessionDescription(const ContentInfos& contents)
+    : contents_(contents) {}
+
+SessionDescription::SessionDescription(const ContentInfos& contents,
+                                       const ContentGroups& groups)
+    : contents_(contents), content_groups_(groups) {}
+
+SessionDescription::SessionDescription(const ContentInfos& contents,
+                                       const TransportInfos& transports,
+                                       const ContentGroups& groups)
+    : contents_(contents),
+      transport_infos_(transports),
+      content_groups_(groups) {}
+
+SessionDescription::SessionDescription(const SessionDescription&) = default;
+
+SessionDescription::~SessionDescription() {
+  for (ContentInfos::iterator content = contents_.begin();
+       content != contents_.end(); ++content) {
+    delete content->description;
+  }
+}
+
 SessionDescription* SessionDescription::Copy() const {
   SessionDescription* copy = new SessionDescription(*this);
   // Copy all ContentDescriptions.
diff --git a/p2p/base/sessiondescription.h b/p2p/base/sessiondescription.h
index d1b11cf..565722c 100644
--- a/p2p/base/sessiondescription.h
+++ b/p2p/base/sessiondescription.h
@@ -67,8 +67,12 @@
 // MediaDescription.
 class ContentGroup {
  public:
-  explicit ContentGroup(const std::string& semantics) :
-      semantics_(semantics) {}
+  explicit ContentGroup(const std::string& semantics);
+  ContentGroup(const ContentGroup&);
+  ContentGroup(ContentGroup&&);
+  ContentGroup& operator=(const ContentGroup&);
+  ContentGroup& operator=(ContentGroup&&);
+  ~ContentGroup();
 
   const std::string& semantics() const { return semantics_; }
   const ContentNames& content_names() const { return content_names_; }
@@ -96,25 +100,13 @@
 // contents are unique be name, but doesn't enforce that.
 class SessionDescription {
  public:
-  SessionDescription() {}
-  explicit SessionDescription(const ContentInfos& contents) :
-      contents_(contents) {}
-  SessionDescription(const ContentInfos& contents,
-                     const ContentGroups& groups) :
-      contents_(contents),
-      content_groups_(groups) {}
+  SessionDescription();
+  explicit SessionDescription(const ContentInfos& contents);
+  SessionDescription(const ContentInfos& contents, const ContentGroups& groups);
   SessionDescription(const ContentInfos& contents,
                      const TransportInfos& transports,
-                     const ContentGroups& groups) :
-      contents_(contents),
-      transport_infos_(transports),
-      content_groups_(groups) {}
-  ~SessionDescription() {
-    for (ContentInfos::iterator content = contents_.begin();
-         content != contents_.end(); ++content) {
-      delete content->description;
-    }
-  }
+                     const ContentGroups& groups);
+  ~SessionDescription();
 
   SessionDescription* Copy() const;
 
@@ -181,6 +173,8 @@
   bool msid_supported() const { return msid_supported_; }
 
  private:
+  SessionDescription(const SessionDescription&);
+
   ContentInfos contents_;
   TransportInfos transport_infos_;
   ContentGroups content_groups_;
diff --git a/p2p/base/transportdescription.cc b/p2p/base/transportdescription.cc
index 7dd780c..9cbf383 100644
--- a/p2p/base/transportdescription.cc
+++ b/p2p/base/transportdescription.cc
@@ -53,4 +53,54 @@
   return true;
 }
 
+TransportDescription::TransportDescription()
+    : ice_mode(ICEMODE_FULL), connection_role(CONNECTIONROLE_NONE) {}
+
+TransportDescription::TransportDescription(
+    const std::vector<std::string>& transport_options,
+    const std::string& ice_ufrag,
+    const std::string& ice_pwd,
+    IceMode ice_mode,
+    ConnectionRole role,
+    const rtc::SSLFingerprint* identity_fingerprint)
+    : transport_options(transport_options),
+      ice_ufrag(ice_ufrag),
+      ice_pwd(ice_pwd),
+      ice_mode(ice_mode),
+      connection_role(role),
+      identity_fingerprint(CopyFingerprint(identity_fingerprint)) {}
+
+TransportDescription::TransportDescription(const std::string& ice_ufrag,
+                                           const std::string& ice_pwd)
+    : ice_ufrag(ice_ufrag),
+      ice_pwd(ice_pwd),
+      ice_mode(ICEMODE_FULL),
+      connection_role(CONNECTIONROLE_NONE) {}
+
+TransportDescription::TransportDescription(const TransportDescription& from)
+    : transport_options(from.transport_options),
+      ice_ufrag(from.ice_ufrag),
+      ice_pwd(from.ice_pwd),
+      ice_mode(from.ice_mode),
+      connection_role(from.connection_role),
+      identity_fingerprint(CopyFingerprint(from.identity_fingerprint.get())) {}
+
+TransportDescription::~TransportDescription() = default;
+
+TransportDescription& TransportDescription::operator=(
+    const TransportDescription& from) {
+  // Self-assignment
+  if (this == &from)
+    return *this;
+
+  transport_options = from.transport_options;
+  ice_ufrag = from.ice_ufrag;
+  ice_pwd = from.ice_pwd;
+  ice_mode = from.ice_mode;
+  connection_role = from.connection_role;
+
+  identity_fingerprint.reset(CopyFingerprint(from.identity_fingerprint.get()));
+  return *this;
+}
+
 }  // namespace cricket
diff --git a/p2p/base/transportdescription.h b/p2p/base/transportdescription.h
index 278c9d1..664b7d3 100644
--- a/p2p/base/transportdescription.h
+++ b/p2p/base/transportdescription.h
@@ -87,59 +87,26 @@
 extern const char CONNECTIONROLE_ACTPASS_STR[];
 extern const char CONNECTIONROLE_HOLDCONN_STR[];
 
-constexpr auto ICE_OPTION_TRICKLE = "trickle";
-constexpr auto ICE_OPTION_RENOMINATION = "renomination";
+constexpr auto* ICE_OPTION_TRICKLE = "trickle";
+constexpr auto* ICE_OPTION_RENOMINATION = "renomination";
 
 bool StringToConnectionRole(const std::string& role_str, ConnectionRole* role);
 bool ConnectionRoleToString(const ConnectionRole& role, std::string* role_str);
 
 struct TransportDescription {
-  TransportDescription()
-      : ice_mode(ICEMODE_FULL),
-        connection_role(CONNECTIONROLE_NONE) {}
-
+  TransportDescription();
   TransportDescription(const std::vector<std::string>& transport_options,
                        const std::string& ice_ufrag,
                        const std::string& ice_pwd,
                        IceMode ice_mode,
                        ConnectionRole role,
-                       const rtc::SSLFingerprint* identity_fingerprint)
-      : transport_options(transport_options),
-        ice_ufrag(ice_ufrag),
-        ice_pwd(ice_pwd),
-        ice_mode(ice_mode),
-        connection_role(role),
-        identity_fingerprint(CopyFingerprint(identity_fingerprint)) {}
+                       const rtc::SSLFingerprint* identity_fingerprint);
   TransportDescription(const std::string& ice_ufrag,
-                       const std::string& ice_pwd)
-      : ice_ufrag(ice_ufrag),
-        ice_pwd(ice_pwd),
-        ice_mode(ICEMODE_FULL),
-        connection_role(CONNECTIONROLE_NONE) {}
-  TransportDescription(const TransportDescription& from)
-      : transport_options(from.transport_options),
-        ice_ufrag(from.ice_ufrag),
-        ice_pwd(from.ice_pwd),
-        ice_mode(from.ice_mode),
-        connection_role(from.connection_role),
-        identity_fingerprint(CopyFingerprint(from.identity_fingerprint.get())) {
-  }
+                       const std::string& ice_pwd);
+  TransportDescription(const TransportDescription& from);
+  ~TransportDescription();
 
-  TransportDescription& operator=(const TransportDescription& from) {
-    // Self-assignment
-    if (this == &from)
-      return *this;
-
-    transport_options = from.transport_options;
-    ice_ufrag = from.ice_ufrag;
-    ice_pwd = from.ice_pwd;
-    ice_mode = from.ice_mode;
-    connection_role = from.connection_role;
-
-    identity_fingerprint.reset(CopyFingerprint(
-        from.identity_fingerprint.get()));
-    return *this;
-  }
+  TransportDescription& operator=(const TransportDescription& from);
 
   // TODO(deadbeef): Rename to HasIceOption, etc.
   bool HasOption(const std::string& option) const {
diff --git a/p2p/base/transportdescriptionfactory.cc b/p2p/base/transportdescriptionfactory.cc
index 69663c4..8ccb4b6 100644
--- a/p2p/base/transportdescriptionfactory.cc
+++ b/p2p/base/transportdescriptionfactory.cc
@@ -24,6 +24,8 @@
     : secure_(SEC_DISABLED) {
 }
 
+TransportDescriptionFactory::~TransportDescriptionFactory() = default;
+
 TransportDescription* TransportDescriptionFactory::CreateOffer(
     const TransportOptions& options,
     const TransportDescription* current_description) const {
diff --git a/p2p/base/transportdescriptionfactory.h b/p2p/base/transportdescriptionfactory.h
index 7f020e0..f8b031a 100644
--- a/p2p/base/transportdescriptionfactory.h
+++ b/p2p/base/transportdescriptionfactory.h
@@ -35,6 +35,8 @@
  public:
   // Default ctor; use methods below to set configuration.
   TransportDescriptionFactory();
+  ~TransportDescriptionFactory();
+
   SecurePolicy secure() const { return secure_; }
   // The certificate to use when setting up DTLS.
   const rtc::scoped_refptr<rtc::RTCCertificate>& certificate() const {