Delete UMA histograms relating to Plan B vs Unified Plan.

Plan B having been deleted from Chrome, there is no need to collect UMAs
relating to Plan B vs Unified Plan setups.

Bug: chromium:1357994
Change-Id: Icb5d16823ea9d849798583cd1c82683014b8a15c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/275309
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38069}
diff --git a/api/uma_metrics.h b/api/uma_metrics.h
index a975b82..c4fecf0 100644
--- a/api/uma_metrics.h
+++ b/api/uma_metrics.h
@@ -112,36 +112,6 @@
   kSdpSemanticRequestMax
 };
 
-// These values are persisted to logs. Entries should not be renumbered and
-// numeric values should never be reused.
-enum SdpSemanticNegotiated {
-  kSdpSemanticNegotiatedNone = 0,
-  kSdpSemanticNegotiatedPlanB = 1,
-  kSdpSemanticNegotiatedUnifiedPlan = 2,
-  kSdpSemanticNegotiatedMixed = 3,
-  kSdpSemanticNegotiatedMax
-};
-
-// Metric which records the format of the received SDP for tracking how much the
-// difference between Plan B and Unified Plan affect users.
-// These values are persisted to logs. Entries should not be renumbered and
-// numeric values should never be reused.
-enum SdpFormatReceived {
-  // No audio or video tracks. This is worth special casing since it seems to be
-  // the most common scenario (data-channel only).
-  kSdpFormatReceivedNoTracks = 0,
-  // No more than one audio and one video track. Should be compatible with both
-  // Plan B and Unified Plan endpoints.
-  kSdpFormatReceivedSimple = 1,
-  // More than one audio track or more than one video track in the Plan B format
-  // (e.g., one audio media section with multiple streams).
-  kSdpFormatReceivedComplexPlanB = 2,
-  // More than one audio track or more than one video track in the Unified Plan
-  // format (e.g., two audio media sections).
-  kSdpFormatReceivedComplexUnifiedPlan = 3,
-  kSdpFormatReceivedMax
-};
-
 // Metric for counting the outcome of adding an ICE candidate
 // These values are persisted to logs. Entries should not be renumbered and
 // numeric values should never be reused.
diff --git a/pc/peer_connection.cc b/pc/peer_connection.cc
index 517669d..e05a2b7 100644
--- a/pc/peer_connection.cc
+++ b/pc/peer_connection.cc
@@ -2559,50 +2559,6 @@
   return true;
 }
 
-void PeerConnection::ReportSdpFormatReceived(
-    const SessionDescriptionInterface& remote_description) {
-  int num_audio_mlines = 0;
-  int num_video_mlines = 0;
-  int num_audio_tracks = 0;
-  int num_video_tracks = 0;
-  for (const ContentInfo& content :
-       remote_description.description()->contents()) {
-    cricket::MediaType media_type = content.media_description()->type();
-    int num_tracks = std::max(
-        1, static_cast<int>(content.media_description()->streams().size()));
-    if (media_type == cricket::MEDIA_TYPE_AUDIO) {
-      num_audio_mlines += 1;
-      num_audio_tracks += num_tracks;
-    } else if (media_type == cricket::MEDIA_TYPE_VIDEO) {
-      num_video_mlines += 1;
-      num_video_tracks += num_tracks;
-    }
-  }
-  SdpFormatReceived format = kSdpFormatReceivedNoTracks;
-  if (num_audio_mlines > 1 || num_video_mlines > 1) {
-    format = kSdpFormatReceivedComplexUnifiedPlan;
-  } else if (num_audio_tracks > 1 || num_video_tracks > 1) {
-    format = kSdpFormatReceivedComplexPlanB;
-  } else if (num_audio_tracks > 0 || num_video_tracks > 0) {
-    format = kSdpFormatReceivedSimple;
-  }
-  switch (remote_description.GetType()) {
-    case SdpType::kOffer:
-      // Historically only offers were counted.
-      RTC_HISTOGRAM_ENUMERATION("WebRTC.PeerConnection.SdpFormatReceived",
-                                format, kSdpFormatReceivedMax);
-      break;
-    case SdpType::kAnswer:
-      RTC_HISTOGRAM_ENUMERATION("WebRTC.PeerConnection.SdpFormatReceivedAnswer",
-                                format, kSdpFormatReceivedMax);
-      break;
-    default:
-      RTC_LOG(LS_ERROR) << "Can not report SdpFormatReceived for "
-                        << SdpTypeToString(remote_description.GetType());
-      break;
-  }
-}
-
 void PeerConnection::ReportSdpBundleUsage(
     const SessionDescriptionInterface& remote_description) {
   RTC_DCHECK_RUN_ON(signaling_thread());
diff --git a/pc/peer_connection.h b/pc/peer_connection.h
index 4398058..36a9d2a 100644
--- a/pc/peer_connection.h
+++ b/pc/peer_connection.h
@@ -371,10 +371,6 @@
   void AddRemoteCandidate(const std::string& mid,
                           const cricket::Candidate& candidate) override;
 
-  // Report the UMA metric SdpFormatReceived for the given remote description.
-  void ReportSdpFormatReceived(
-      const SessionDescriptionInterface& remote_description) override;
-
   // Report the UMA metric BundleUsage for the given remote description.
   void ReportSdpBundleUsage(
       const SessionDescriptionInterface& remote_description) override;
diff --git a/pc/peer_connection_internal.h b/pc/peer_connection_internal.h
index 1bca156..ecf8fbf 100644
--- a/pc/peer_connection_internal.h
+++ b/pc/peer_connection_internal.h
@@ -53,10 +53,6 @@
   virtual const PeerConnectionInterface::RTCConfiguration* configuration()
       const = 0;
 
-  // Report the UMA metric SdpFormatReceived for the given remote description.
-  virtual void ReportSdpFormatReceived(
-      const SessionDescriptionInterface& remote_description) = 0;
-
   // Report the UMA metric BundleUsage for the given remote description.
   virtual void ReportSdpBundleUsage(
       const SessionDescriptionInterface& remote_description) = 0;
diff --git a/pc/peer_connection_rtp_unittest.cc b/pc/peer_connection_rtp_unittest.cc
index 268101a..e17c52b 100644
--- a/pc/peer_connection_rtp_unittest.cc
+++ b/pc/peer_connection_rtp_unittest.cc
@@ -1811,10 +1811,6 @@
   auto* answer = caller->pc()->remote_description();
   EXPECT_EQ(cricket::kMsidSignalingMediaSection,
             answer->description()->msid_signaling());
-  // Check that this is counted correctly
-  EXPECT_METRIC_THAT(
-      metrics::Samples("WebRTC.PeerConnection.SdpSemanticNegotiated"),
-      ElementsAre(Pair(kSdpSemanticNegotiatedUnifiedPlan, 2)));
 }
 
 TEST_F(PeerConnectionMsidSignalingTest, PlanBOfferToUnifiedPlanAnswer) {
@@ -1890,92 +1886,6 @@
             answer->description()->msid_signaling());
 }
 
-// Test that the correct UMA metrics are reported for simple/complex SDP.
-
-class SdpFormatReceivedTest : public PeerConnectionRtpTestUnifiedPlan {};
-
-#ifdef WEBRTC_HAVE_SCTP
-TEST_F(SdpFormatReceivedTest, DataChannelOnlyIsReportedAsNoTracks) {
-  auto caller = CreatePeerConnectionWithUnifiedPlan();
-  caller->CreateDataChannel("dc");
-  auto callee = CreatePeerConnectionWithUnifiedPlan();
-
-  ASSERT_TRUE(callee->SetRemoteDescription(caller->CreateOffer()));
-  // Note that only the callee does ReportSdpFormatReceived.
-  EXPECT_METRIC_THAT(
-      metrics::Samples("WebRTC.PeerConnection.SdpFormatReceived"),
-      ElementsAre(Pair(kSdpFormatReceivedNoTracks, 1)));
-}
-#endif  // WEBRTC_HAVE_SCTP
-
-TEST_F(SdpFormatReceivedTest, SimpleUnifiedPlanIsReportedAsSimple) {
-  auto caller = CreatePeerConnectionWithUnifiedPlan();
-  caller->AddAudioTrack("audio");
-  caller->AddVideoTrack("video");
-  auto callee = CreatePeerConnectionWithPlanB();
-
-  ASSERT_TRUE(callee->SetRemoteDescription(caller->CreateOffer()));
-  // Note that only the callee does ReportSdpFormatReceived.
-  EXPECT_METRIC_THAT(
-      metrics::Samples("WebRTC.PeerConnection.SdpFormatReceived"),
-      ElementsAre(Pair(kSdpFormatReceivedSimple, 1)));
-}
-
-TEST_F(SdpFormatReceivedTest, SimplePlanBIsReportedAsSimple) {
-  auto caller = CreatePeerConnectionWithPlanB();
-  caller->AddVideoTrack("video");  // Video only.
-  auto callee = CreatePeerConnectionWithUnifiedPlan();
-
-  ASSERT_TRUE(callee->SetRemoteDescription(caller->CreateOffer()));
-  // Note that only the callee does ReportSdpFormatReceived.
-  EXPECT_METRIC_THAT(
-      metrics::Samples("WebRTC.PeerConnection.SdpFormatReceived"),
-      ElementsAre(Pair(kSdpFormatReceivedSimple, 1)));
-}
-
-TEST_F(SdpFormatReceivedTest, ComplexUnifiedIsReportedAsComplexUnifiedPlan) {
-  auto caller = CreatePeerConnectionWithUnifiedPlan();
-  caller->AddAudioTrack("audio1");
-  caller->AddAudioTrack("audio2");
-  caller->AddVideoTrack("video");
-  auto callee = CreatePeerConnectionWithPlanB();
-
-  ASSERT_TRUE(callee->SetRemoteDescription(caller->CreateOffer()));
-  // Note that only the callee does ReportSdpFormatReceived.
-  EXPECT_METRIC_THAT(
-      metrics::Samples("WebRTC.PeerConnection.SdpFormatReceived"),
-      ElementsAre(Pair(kSdpFormatReceivedComplexUnifiedPlan, 1)));
-}
-
-TEST_F(SdpFormatReceivedTest, ComplexPlanBIsReportedAsComplexPlanB) {
-  auto caller = CreatePeerConnectionWithPlanB();
-  caller->AddVideoTrack("video1");
-  caller->AddVideoTrack("video2");
-  auto callee = CreatePeerConnectionWithUnifiedPlan();
-
-  // This fails since Unified Plan cannot set a session description with
-  // multiple "Plan B tracks" in the same media section. But we still expect the
-  // SDP Format to be recorded.
-  ASSERT_FALSE(callee->SetRemoteDescription(caller->CreateOffer()));
-  // Note that only the callee does ReportSdpFormatReceived.
-  EXPECT_METRIC_THAT(
-      metrics::Samples("WebRTC.PeerConnection.SdpFormatReceived"),
-      ElementsAre(Pair(kSdpFormatReceivedComplexPlanB, 1)));
-}
-
-TEST_F(SdpFormatReceivedTest, AnswerIsReported) {
-  auto caller = CreatePeerConnectionWithPlanB();
-  caller->AddAudioTrack("audio");
-  caller->AddVideoTrack("video");
-  auto callee = CreatePeerConnectionWithUnifiedPlan();
-
-  ASSERT_TRUE(callee->SetRemoteDescription(caller->CreateOfferAndSetAsLocal()));
-  ASSERT_TRUE(caller->SetRemoteDescription(callee->CreateAnswer()));
-  EXPECT_METRIC_THAT(
-      metrics::Samples("WebRTC.PeerConnection.SdpFormatReceivedAnswer"),
-      ElementsAre(Pair(kSdpFormatReceivedSimple, 1)));
-}
-
 // Sender setups in a call.
 
 TEST_P(PeerConnectionRtpTest, CreateTwoSendersWithSameTrack) {
diff --git a/pc/sdp_offer_answer.cc b/pc/sdp_offer_answer.cc
index 35e65e0..7b41fce 100644
--- a/pc/sdp_offer_answer.cc
+++ b/pc/sdp_offer_answer.cc
@@ -799,7 +799,6 @@
   void ReportOfferAnswerUma() {
     RTC_DCHECK(ok());
     if (type_ == SdpType::kOffer || type_ == SdpType::kAnswer) {
-      handler_->pc_->ReportSdpFormatReceived(*desc_.get());
       handler_->pc_->ReportSdpBundleUsage(*desc_.get());
     }
   }
@@ -2200,8 +2199,6 @@
     // MaybeStartGathering...
     context_->network_thread()->BlockingCall(
         [this] { port_allocator()->DiscardCandidatePool(); });
-    // Make UMA notes about what was agreed to.
-    ReportNegotiatedSdpSemantics(*local_description());
   }
 
   observer->OnSetLocalDescriptionComplete(RTCError::OK());
@@ -2404,8 +2401,6 @@
     // MaybeStartGathering...
     context_->network_thread()->BlockingCall(
         [this] { port_allocator()->DiscardCandidatePool(); });
-    // Make UMA notes about what was agreed to.
-    ReportNegotiatedSdpSemantics(*remote_description());
   }
 
   pc_->NoteUsageEvent(UsageEvent::SET_REMOTE_DESCRIPTION_SUCCEEDED);
@@ -4698,30 +4693,6 @@
   }
 }
 
-void SdpOfferAnswerHandler::ReportNegotiatedSdpSemantics(
-    const SessionDescriptionInterface& answer) {
-  SdpSemanticNegotiated semantics_negotiated;
-  switch (answer.description()->msid_signaling()) {
-    case 0:
-      semantics_negotiated = kSdpSemanticNegotiatedNone;
-      break;
-    case cricket::kMsidSignalingMediaSection:
-      semantics_negotiated = kSdpSemanticNegotiatedUnifiedPlan;
-      break;
-    case cricket::kMsidSignalingSsrcAttribute:
-      semantics_negotiated = kSdpSemanticNegotiatedPlanB;
-      break;
-    case cricket::kMsidSignalingMediaSection |
-        cricket::kMsidSignalingSsrcAttribute:
-      semantics_negotiated = kSdpSemanticNegotiatedMixed;
-      break;
-    default:
-      RTC_DCHECK_NOTREACHED();
-  }
-  RTC_HISTOGRAM_ENUMERATION("WebRTC.PeerConnection.SdpSemanticNegotiated",
-                            semantics_negotiated, kSdpSemanticNegotiatedMax);
-}
-
 void SdpOfferAnswerHandler::UpdateEndedRemoteMediaStreams() {
   RTC_DCHECK_RUN_ON(signaling_thread());
   std::vector<rtc::scoped_refptr<MediaStreamInterface>> streams_to_remove;
diff --git a/pc/sdp_offer_answer.h b/pc/sdp_offer_answer.h
index bc5087c..c493dc0 100644
--- a/pc/sdp_offer_answer.h
+++ b/pc/sdp_offer_answer.h
@@ -491,10 +491,6 @@
   // `desc` can be null. This means that all channels are deleted.
   void RemoveUnusedChannels(const cricket::SessionDescription* desc);
 
-  // Report inferred negotiated SDP semantics from a local/remote answer to the
-  // UMA observer.
-  void ReportNegotiatedSdpSemantics(const SessionDescriptionInterface& answer);
-
   // Finds remote MediaStreams without any tracks and removes them from
   // `remote_streams_` and notifies the observer that the MediaStreams no longer
   // exist.
diff --git a/pc/test/fake_peer_connection_base.h b/pc/test/fake_peer_connection_base.h
index 9ee69be..e277058 100644
--- a/pc/test/fake_peer_connection_base.h
+++ b/pc/test/fake_peer_connection_base.h
@@ -294,9 +294,6 @@
     return nullptr;
   }
 
-  void ReportSdpFormatReceived(
-      const SessionDescriptionInterface& remote_description) override {}
-
   void ReportSdpBundleUsage(
       const SessionDescriptionInterface& remote_description) override {}
 
diff --git a/pc/test/mock_peer_connection_internal.h b/pc/test/mock_peer_connection_internal.h
index 09b3d43..733ec41 100644
--- a/pc/test/mock_peer_connection_internal.h
+++ b/pc/test/mock_peer_connection_internal.h
@@ -203,10 +203,6 @@
               (),
               (const, override));
   MOCK_METHOD(void,
-              ReportSdpFormatReceived,
-              (const SessionDescriptionInterface&),
-              (override));
-  MOCK_METHOD(void,
               ReportSdpBundleUsage,
               (const SessionDescriptionInterface&),
               (override));