Deprecate functions returning cricket::DataContentDescription.

Due to internal code, deprecating the class itself is difficult.
It will be deleted at the same time as the functions.

Bug: webrtc:10597
Change-Id: Iac775377c459318e074818abc05f1505c9190bd3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/138823
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28083}
diff --git a/pc/media_session.h b/pc/media_session.h
index 73cedc4..8ba6293 100644
--- a/pc/media_session.h
+++ b/pc/media_session.h
@@ -363,7 +363,7 @@
 const SctpDataContentDescription* GetFirstSctpDataContentDescription(
     const SessionDescription* sdesc);
 // Returns shim. Deprecated - ask for the right protocol instead.
-const DataContentDescription* GetFirstDataContentDescription(
+RTC_DEPRECATED const DataContentDescription* GetFirstDataContentDescription(
     const SessionDescription* sdesc);
 // Non-const versions of the above functions.
 // Useful when modifying an existing description.
@@ -384,7 +384,7 @@
     SessionDescription* sdesc);
 SctpDataContentDescription* GetFirstSctpDataContentDescription(
     SessionDescription* sdesc);
-DataContentDescription* GetFirstDataContentDescription(
+RTC_DEPRECATED DataContentDescription* GetFirstDataContentDescription(
     SessionDescription* sdesc);
 
 // Helper functions to return crypto suites used for SDES.
diff --git a/pc/session_description.cc b/pc/session_description.cc
index cf3d147..df31163 100644
--- a/pc/session_description.cc
+++ b/pc/session_description.cc
@@ -190,13 +190,13 @@
   if (description->as_rtp_data()) {
     if (description->as_rtp_data() != description) {
       content->set_media_description(
-          description->as_data()->Unshim(&should_delete));
+          description->deprecated_as_data()->Unshim(&should_delete));
     }
   }
   if (description->as_sctp()) {
     if (description->as_sctp() != description) {
       content->set_media_description(
-          description->as_data()->Unshim(&should_delete));
+          description->deprecated_as_data()->Unshim(&should_delete));
     }
   }
   if (should_delete) {
@@ -292,26 +292,34 @@
 }
 
 // DataContentDescription shim creation
-DataContentDescription* RtpDataContentDescription::as_data() {
+DataContentDescription* RtpDataContentDescription::deprecated_as_data() {
   if (!shim_) {
     shim_.reset(new DataContentDescription(this));
   }
   return shim_.get();
 }
 
+DataContentDescription* RtpDataContentDescription::as_data() {
+  return deprecated_as_data();
+}
+
 const DataContentDescription* RtpDataContentDescription::as_data() const {
   return const_cast<RtpDataContentDescription*>(this)->as_data();
 }
 
-DataContentDescription* SctpDataContentDescription::as_data() {
+DataContentDescription* SctpDataContentDescription::deprecated_as_data() {
   if (!shim_) {
     shim_.reset(new DataContentDescription(this));
   }
   return shim_.get();
 }
 
+DataContentDescription* SctpDataContentDescription::as_data() {
+  return deprecated_as_data();
+}
+
 const DataContentDescription* SctpDataContentDescription::as_data() const {
-  return const_cast<SctpDataContentDescription*>(this)->as_data();
+  return const_cast<SctpDataContentDescription*>(this)->deprecated_as_data();
 }
 
 DataContentDescription::DataContentDescription() {
diff --git a/pc/session_description.h b/pc/session_description.h
index fe08e3a..eb9401f 100644
--- a/pc/session_description.h
+++ b/pc/session_description.h
@@ -79,8 +79,11 @@
   // Backwards compatible shim: Return a shim object that allows
   // callers to ignore the distinction between RtpDataContentDescription
   // and SctpDataContentDescription objects.
-  virtual DataContentDescription* as_data() { return nullptr; }
-  virtual const DataContentDescription* as_data() const { return nullptr; }
+  RTC_DEPRECATED virtual DataContentDescription* as_data() { return nullptr; }
+  RTC_DEPRECATED virtual const DataContentDescription* as_data() const {
+    return nullptr;
+  }
+  virtual DataContentDescription* deprecated_as_data() { return nullptr; }
 
   virtual RtpDataContentDescription* as_rtp_data() { return nullptr; }
   virtual const RtpDataContentDescription* as_rtp_data() const {
@@ -344,8 +347,11 @@
  public:
   DataContentDescription();
   MediaType type() const override { return MEDIA_TYPE_DATA; }
-  DataContentDescription* as_data() override { return this; }
-  const DataContentDescription* as_data() const override { return this; }
+  RTC_DEPRECATED DataContentDescription* as_data() override { return this; }
+  RTC_DEPRECATED const DataContentDescription* as_data() const override {
+    return this;
+  }
+  DataContentDescription* deprecated_as_data() override { return this; }
 
   // Override all methods defined in MediaContentDescription.
   bool has_codecs() const override;
@@ -453,8 +459,9 @@
   RtpDataContentDescription* as_rtp_data() override { return this; }
   const RtpDataContentDescription* as_rtp_data() const override { return this; }
   // Shim support
-  DataContentDescription* as_data() override;
-  const DataContentDescription* as_data() const override;
+  RTC_DEPRECATED DataContentDescription* as_data() override;
+  RTC_DEPRECATED const DataContentDescription* as_data() const override;
+  DataContentDescription* deprecated_as_data() override;
 
  private:
   std::unique_ptr<DataContentDescription> shim_;
@@ -476,8 +483,9 @@
   SctpDataContentDescription* as_sctp() override { return this; }
   const SctpDataContentDescription* as_sctp() const override { return this; }
   // Shim support
-  DataContentDescription* as_data() override;
-  const DataContentDescription* as_data() const override;
+  RTC_DEPRECATED DataContentDescription* as_data() override;
+  RTC_DEPRECATED const DataContentDescription* as_data() const override;
+  DataContentDescription* deprecated_as_data() override;
 
   bool has_codecs() const override { return false; }
   void set_protocol(const std::string& protocol) override {
diff --git a/pc/session_description_unittest.cc b/pc/session_description_unittest.cc
index 9797ed5..d9426c8 100644
--- a/pc/session_description_unittest.cc
+++ b/pc/session_description_unittest.cc
@@ -129,6 +129,9 @@
             data_desc->extmap_allow_mixed_enum());
 }
 
+// The tests for DataContentDescription will be deleted soon.
+// TODO(bugs.webrtc.org/10597): Declare this class obsolete and remove it
+
 TEST(SessionDescriptionTest, DataContentDescriptionCanAddStream) {
   auto description = absl::make_unique<DataContentDescription>();
   // Adding a stream without setting protocol first should work.
@@ -138,7 +141,7 @@
 
 TEST(SessionDescriptionTest, DataContentDescriptionCopyWorks) {
   auto description = absl::make_unique<RtpDataContentDescription>();
-  auto shim_description = description->as_data();
+  auto shim_description = description->deprecated_as_data();
   auto shim_copy = shim_description->Copy();
   delete shim_copy;
 }
@@ -151,7 +154,7 @@
 
 TEST(SessionDescriptionTest, DataContentDescriptionSctpConferenceMode) {
   auto description = absl::make_unique<SctpDataContentDescription>();
-  auto shim_description = description->as_data();
+  auto shim_description = description->deprecated_as_data();
   EXPECT_FALSE(shim_description->conference_mode());
   shim_description->set_conference_mode(true);
   EXPECT_TRUE(shim_description->conference_mode());