Always keep abs send time extension.

This makes the WebRTC-KeepAbsSendTimeExtension field trial
always enabled. This means that we no longer avoid sending the
abs-send-time extension if we have negotiated sending of transport
wide sequence numbers.

The field trial WebRTC-FilterAbsSendTimeExtension is introduced to allow
reverting to the previous behavior.

Bug: webrtc:10234
Change-Id: Ifd9761d84dd1fe79af840f98ad0882a2e5adf0b0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159181
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Reviewed-by: Konrad Hofbauer <hofbauer@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29999}
diff --git a/media/engine/webrtc_media_engine.cc b/media/engine/webrtc_media_engine.cc
index 4f274d4..751b729 100644
--- a/media/engine/webrtc_media_engine.cc
+++ b/media/engine/webrtc_media_engine.cc
@@ -45,13 +45,6 @@
 }
 
 namespace {
-// If this FieldTrial is enabled, we will not filter out the abs-send-time
-// header extension when the TWCC extensions were also negotiated, but keep
-// kAbsSendTimeUri also if kTransportSequenceNumberUri is present.
-bool IsKeepAbsSendTimeExtensionFieldTrialEnabled() {
-  return webrtc::field_trial::IsEnabled("WebRTC-KeepAbsSendTimeExtension");
-}
-
 // Remove mutually exclusive extensions with lower priority.
 void DiscardRedundantExtensions(
     std::vector<webrtc::RtpExtension>* extensions,
@@ -128,14 +121,14 @@
     result.erase(it, result.end());
 
     // Keep just the highest priority extension of any in the following lists.
-    if (IsKeepAbsSendTimeExtensionFieldTrialEnabled()) {
+    if (webrtc::field_trial::IsEnabled("WebRTC-FilterAbsSendTimeExtension")) {
       static const char* const kBweExtensionPriorities[] = {
+          webrtc::RtpExtension::kTransportSequenceNumberUri,
           webrtc::RtpExtension::kAbsSendTimeUri,
           webrtc::RtpExtension::kTimestampOffsetUri};
       DiscardRedundantExtensions(&result, kBweExtensionPriorities);
     } else {
       static const char* const kBweExtensionPriorities[] = {
-          webrtc::RtpExtension::kTransportSequenceNumberUri,
           webrtc::RtpExtension::kAbsSendTimeUri,
           webrtc::RtpExtension::kTimestampOffsetUri};
       DiscardRedundantExtensions(&result, kBweExtensionPriorities);
diff --git a/media/engine/webrtc_media_engine_unittest.cc b/media/engine/webrtc_media_engine_unittest.cc
index 525e0d1..461effc 100644
--- a/media/engine/webrtc_media_engine_unittest.cc
+++ b/media/engine/webrtc_media_engine_unittest.cc
@@ -182,6 +182,8 @@
 }
 
 TEST(WebRtcMediaEngineTest, FilterRtpExtensions_RemoveRedundantBwe_1) {
+  webrtc::test::ScopedFieldTrials override_field_trials_(
+      "WebRTC-FilterAbsSendTimeExtension/Enabled/");
   std::vector<RtpExtension> extensions;
   extensions.push_back(
       RtpExtension(RtpExtension::kTransportSequenceNumberUri, 3));
@@ -199,8 +201,6 @@
 TEST(WebRtcMediaEngineTest,
      FilterRtpExtensions_RemoveRedundantBwe_1_KeepAbsSendTime) {
   std::vector<RtpExtension> extensions;
-  webrtc::test::ScopedFieldTrials override_field_trials_(
-      "WebRTC-KeepAbsSendTimeExtension/Enabled/");
   extensions.push_back(
       RtpExtension(RtpExtension::kTransportSequenceNumberUri, 3));
   extensions.push_back(RtpExtension(RtpExtension::kTimestampOffsetUri, 9));
@@ -216,6 +216,8 @@
 }
 
 TEST(WebRtcMediaEngineTest, FilterRtpExtensions_RemoveRedundantBweEncrypted_1) {
+  webrtc::test::ScopedFieldTrials override_field_trials_(
+      "WebRTC-FilterAbsSendTimeExtension/Enabled/");
   std::vector<RtpExtension> extensions;
   extensions.push_back(
       RtpExtension(RtpExtension::kTransportSequenceNumberUri, 3));
@@ -239,8 +241,6 @@
 TEST(WebRtcMediaEngineTest,
      FilterRtpExtensions_RemoveRedundantBweEncrypted_1_KeepAbsSendTime) {
   std::vector<RtpExtension> extensions;
-  webrtc::test::ScopedFieldTrials override_field_trials_(
-      "WebRTC-KeepAbsSendTimeExtension/Enabled/");
   extensions.push_back(
       RtpExtension(RtpExtension::kTransportSequenceNumberUri, 3));
   extensions.push_back(
diff --git a/media/engine/webrtc_video_engine_unittest.cc b/media/engine/webrtc_video_engine_unittest.cc
index d07042c..2c6b524 100644
--- a/media/engine/webrtc_video_engine_unittest.cc
+++ b/media/engine/webrtc_video_engine_unittest.cc
@@ -2655,6 +2655,8 @@
 }
 
 TEST_F(WebRtcVideoChannelTest, FiltersExtensionsPicksTransportSeqNum) {
+  webrtc::test::ScopedFieldTrials override_field_trials_(
+      "WebRTC-FilterAbsSendTimeExtension/Enabled/");
   // Enable three redundant extensions.
   std::vector<std::string> extensions;
   extensions.push_back(RtpExtension::kAbsSendTimeUri);
diff --git a/test/peer_scenario/tests/remote_estimate_test.cc b/test/peer_scenario/tests/remote_estimate_test.cc
index 9988532..75f41b6 100644
--- a/test/peer_scenario/tests/remote_estimate_test.cc
+++ b/test/peer_scenario/tests/remote_estimate_test.cc
@@ -71,7 +71,6 @@
 }
 
 TEST(RemoteEstimateEndToEnd, AudioUsesAbsSendTimeExtension) {
-  ScopedFieldTrials trials("WebRTC-KeepAbsSendTimeExtension/Enabled/");
   // Defined before PeerScenario so it gets destructed after, to avoid use after free.
   rtc::Event received_abs_send_time;
   PeerScenario s(*test_info_);