Replace uses of WebRtcOfferOptions by RtcOfferOptionsPlatform

The public API is not needed any more now that the WebRTC/Peerconnection
implementation resides solely in Blink.
Hence, this CL uses RtcOfferOptionsPlatform directly.

BUG=787254, 919392
R=guidou@chromium.org, haraken@chromium.org

Change-Id: Ic1d6c34e6d85523cdcd473f74c894e8043924fa4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1884931
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Guido Urdaneta <guidou@chromium.org>
Cr-Commit-Position: refs/heads/master@{#712103}
diff --git a/third_party/blink/public/BUILD.gn b/third_party/blink/public/BUILD.gn
index 3ec01cf..fc6b41e 100644
--- a/third_party/blink/public/BUILD.gn
+++ b/third_party/blink/public/BUILD.gn
@@ -288,7 +288,6 @@
     "platform/web_rtc_dtmf_sender_handler_client.h",
     "platform/web_rtc_ice_candidate.h",
     "platform/web_rtc_legacy_stats.h",
-    "platform/web_rtc_offer_options.h",
     "platform/web_rtc_peer_connection_handler.h",
     "platform/web_rtc_peer_connection_handler_client.h",
     "platform/web_rtc_rtp_receiver.h",
diff --git a/third_party/blink/public/platform/web_rtc_peer_connection_handler.h b/third_party/blink/public/platform/web_rtc_peer_connection_handler.h
index 49412d5..dd74029 100644
--- a/third_party/blink/public/platform/web_rtc_peer_connection_handler.h
+++ b/third_party/blink/public/platform/web_rtc_peer_connection_handler.h
@@ -49,12 +49,12 @@
 
 namespace blink {
 
+class RTCOfferOptionsPlatform;
 class WebLocalFrame;
 class WebMediaConstraints;
 class WebMediaStream;
 class WebMediaStreamTrack;
 class WebRTCAnswerOptions;
-class WebRTCOfferOptions;
 class WebRTCRtpSender;
 class WebRTCSessionDescription;
 class WebRTCSessionDescriptionRequest;
@@ -93,7 +93,7 @@
       const WebMediaConstraints&) = 0;
   virtual WebVector<std::unique_ptr<WebRTCRtpTransceiver>> CreateOffer(
       const WebRTCSessionDescriptionRequest&,
-      const WebRTCOfferOptions&) = 0;
+      RTCOfferOptionsPlatform*) = 0;
   virtual void CreateAnswer(const WebRTCSessionDescriptionRequest&,
                             const WebMediaConstraints&) = 0;
   virtual void CreateAnswer(const WebRTCSessionDescriptionRequest&,
diff --git a/third_party/blink/renderer/modules/peerconnection/mock_web_rtc_peer_connection_handler.cc b/third_party/blink/renderer/modules/peerconnection/mock_web_rtc_peer_connection_handler.cc
index 023ed52..2ed96fd 100644
--- a/third_party/blink/renderer/modules/peerconnection/mock_web_rtc_peer_connection_handler.cc
+++ b/third_party/blink/renderer/modules/peerconnection/mock_web_rtc_peer_connection_handler.cc
@@ -257,7 +257,7 @@
 WebVector<std::unique_ptr<WebRTCRtpTransceiver>>
 MockWebRTCPeerConnectionHandler::CreateOffer(
     const WebRTCSessionDescriptionRequest&,
-    const WebRTCOfferOptions&) {
+    RTCOfferOptionsPlatform*) {
   return {};
 }
 
diff --git a/third_party/blink/renderer/modules/peerconnection/mock_web_rtc_peer_connection_handler.h b/third_party/blink/renderer/modules/peerconnection/mock_web_rtc_peer_connection_handler.h
index c7c17f9..4e55f51a 100644
--- a/third_party/blink/renderer/modules/peerconnection/mock_web_rtc_peer_connection_handler.h
+++ b/third_party/blink/renderer/modules/peerconnection/mock_web_rtc_peer_connection_handler.h
@@ -33,7 +33,7 @@
       const WebMediaConstraints&) override;
   WebVector<std::unique_ptr<WebRTCRtpTransceiver>> CreateOffer(
       const WebRTCSessionDescriptionRequest&,
-      const WebRTCOfferOptions&) override;
+      RTCOfferOptionsPlatform*) override;
   void CreateAnswer(const WebRTCSessionDescriptionRequest&,
                     const WebMediaConstraints&) override;
   void CreateAnswer(const WebRTCSessionDescriptionRequest&,
diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_tracker.cc b/third_party/blink/renderer/modules/peerconnection/peer_connection_tracker.cc
index f455d30..584bad2 100644
--- a/third_party/blink/renderer/modules/peerconnection/peer_connection_tracker.cc
+++ b/third_party/blink/renderer/modules/peerconnection/peer_connection_tracker.cc
@@ -22,12 +22,12 @@
 #include "third_party/blink/public/platform/web_media_stream_track.h"
 #include "third_party/blink/public/platform/web_rtc_answer_options.h"
 #include "third_party/blink/public/platform/web_rtc_ice_candidate.h"
-#include "third_party/blink/public/platform/web_rtc_offer_options.h"
 #include "third_party/blink/public/platform/web_rtc_peer_connection_handler_client.h"
 #include "third_party/blink/public/web/web_document.h"
 #include "third_party/blink/public/web/web_local_frame.h"
 #include "third_party/blink/public/web/web_user_media_request.h"
 #include "third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler.h"
+#include "third_party/blink/renderer/platform/peerconnection/rtc_offer_options_platform.h"
 #include "third_party/blink/renderer/platform/scheduler/public/thread.h"
 #include "third_party/blink/renderer/platform/wtf/text/string_builder.h"
 
@@ -68,19 +68,19 @@
   return String(constraints.ToString());
 }
 
-static String SerializeOfferOptions(const blink::WebRTCOfferOptions& options) {
-  if (options.IsNull())
+static String SerializeOfferOptions(blink::RTCOfferOptionsPlatform* options) {
+  if (!options)
     return "null";
 
   StringBuilder result;
   result.Append("offerToReceiveVideo: ");
-  result.AppendNumber(options.OfferToReceiveVideo());
+  result.AppendNumber(options->OfferToReceiveVideo());
   result.Append(", offerToReceiveAudio: ");
-  result.AppendNumber(options.OfferToReceiveAudio());
+  result.AppendNumber(options->OfferToReceiveAudio());
   result.Append(", voiceActivityDetection: ");
-  result.Append(SerializeBoolean(options.VoiceActivityDetection()));
+  result.Append(SerializeBoolean(options->VoiceActivityDetection()));
   result.Append(", iceRestart: ");
-  result.Append(SerializeBoolean(options.IceRestart()));
+  result.Append(SerializeBoolean(options->IceRestart()));
   return result.ToString();
 }
 
@@ -776,7 +776,7 @@
 
 void PeerConnectionTracker::TrackCreateOffer(
     RTCPeerConnectionHandler* pc_handler,
-    const blink::WebRTCOfferOptions& options) {
+    RTCOfferOptionsPlatform* options) {
   DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   int id = GetLocalIDForHandler(pc_handler);
   if (id == -1)
diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_tracker.h b/third_party/blink/renderer/modules/peerconnection/peer_connection_tracker.h
index b5c5415..98585c6 100644
--- a/third_party/blink/renderer/modules/peerconnection/peer_connection_tracker.h
+++ b/third_party/blink/renderer/modules/peerconnection/peer_connection_tracker.h
@@ -26,11 +26,11 @@
 
 namespace blink {
 class RTCPeerConnectionHandler;
+class RTCOfferOptionsPlatform;
 class WebLocalFrame;
 class WebMediaConstraints;
 class WebRTCAnswerOptions;
 class WebRTCICECandidate;
-class WebRTCOfferOptions;
 class WebUserMediaRequest;
 
 // This class collects data about each peer connection,
@@ -99,7 +99,7 @@
   // The |pc_handler| is the handler object associated with the PeerConnection,
   // the |constraints| is the media constraints used to create the offer/answer.
   virtual void TrackCreateOffer(RTCPeerConnectionHandler* pc_handler,
-                                const blink::WebRTCOfferOptions& options);
+                                RTCOfferOptionsPlatform* options);
   // TODO(hta): Get rid of the version below.
   virtual void TrackCreateOffer(RTCPeerConnectionHandler* pc_handler,
                                 const blink::WebMediaConstraints& options);
diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_tracker_test.cc b/third_party/blink/renderer/modules/peerconnection/peer_connection_tracker_test.cc
index 4712af6..2adeb27 100644
--- a/third_party/blink/renderer/modules/peerconnection/peer_connection_tracker_test.cc
+++ b/third_party/blink/renderer/modules/peerconnection/peer_connection_tracker_test.cc
@@ -10,7 +10,6 @@
 #include "third_party/blink/public/mojom/peerconnection/peer_connection_tracker.mojom-blink.h"
 #include "third_party/blink/public/platform/scheduler/test/renderer_scheduler_test_support.h"
 #include "third_party/blink/public/platform/web_media_constraints.h"
-#include "third_party/blink/public/platform/web_rtc_offer_options.h"
 #include "third_party/blink/public/platform/web_rtc_rtp_receiver.h"
 #include "third_party/blink/public/platform/web_rtc_rtp_sender.h"
 #include "third_party/blink/public/platform/web_rtc_rtp_transceiver.h"
@@ -18,6 +17,7 @@
 #include "third_party/blink/renderer/modules/peerconnection/mock_peer_connection_dependency_factory.h"
 #include "third_party/blink/renderer/modules/peerconnection/mock_web_rtc_peer_connection_handler_client.h"
 #include "third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler.h"
+#include "third_party/blink/renderer/platform/peerconnection/rtc_offer_options_platform.h"
 
 using ::testing::_;
 
@@ -167,9 +167,10 @@
 TEST_F(PeerConnectionTrackerTest, TrackCreateOffer) {
   CreateTrackerWithMocks();
   CreateAndRegisterPeerConnectionHandler();
-  // Note: blink::WebRTCOfferOptions is not mockable. So we can't write tests
-  // for anything but a null options parameter.
-  blink::WebRTCOfferOptions options(0, 0, false, false);
+  // Note: blink::RTCOfferOptionsPlatform is not mockable. So we can't write
+  // tests for anything but a null options parameter.
+  RTCOfferOptionsPlatform* options =
+      MakeGarbageCollected<RTCOfferOptionsPlatform>(0, 0, false, false);
   EXPECT_CALL(
       *mock_host_,
       UpdatePeerConnection(
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.cc b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.cc
index 2db4b85..948c9d6 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.cc
@@ -48,7 +48,6 @@
 #include "third_party/blink/public/platform/web_rtc_answer_options.h"
 #include "third_party/blink/public/platform/web_rtc_data_channel_init.h"
 #include "third_party/blink/public/platform/web_rtc_ice_candidate.h"
-#include "third_party/blink/public/platform/web_rtc_offer_options.h"
 #include "third_party/blink/public/platform/web_rtc_session_description.h"
 #include "third_party/blink/public/platform/web_rtc_session_description_request.h"
 #include "third_party/blink/public/platform/web_rtc_stats_request.h"
@@ -194,8 +193,9 @@
   return false;
 }
 
-WebRTCOfferOptions ConvertToWebRTCOfferOptions(const RTCOfferOptions* options) {
-  return WebRTCOfferOptions(MakeGarbageCollected<RTCOfferOptionsPlatform>(
+RTCOfferOptionsPlatform* ConvertToRTCOfferOptionsPlatform(
+    const RTCOfferOptions* options) {
+  return MakeGarbageCollected<RTCOfferOptionsPlatform>(
       options->hasOfferToReceiveVideo()
           ? std::max(options->offerToReceiveVideo(), 0)
           : -1,
@@ -204,7 +204,7 @@
           : -1,
       options->hasVoiceActivityDetection() ? options->voiceActivityDetection()
                                            : true,
-      options->hasIceRestart() ? options->iceRestart() : false));
+      options->hasIceRestart() ? options->iceRestart() : false);
 }
 
 WebRTCAnswerOptions ConvertToWebRTCAnswerOptions(
@@ -855,8 +855,8 @@
         context,
         WebFeature::kRTCPeerConnectionCreateOfferOptionsOfferToReceive);
   }
-  auto web_transceivers =
-      peer_handler_->CreateOffer(request, ConvertToWebRTCOfferOptions(options));
+  auto web_transceivers = peer_handler_->CreateOffer(
+      request, ConvertToRTCOfferOptionsPlatform(options));
   for (auto& web_transceiver : web_transceivers)
     CreateOrUpdateTransceiver(std::move(web_transceiver));
   return promise;
@@ -899,8 +899,7 @@
           context, WebFeature::kRTCPeerConnectionCreateOfferLegacyCompliant);
     }
 
-    web_transceivers =
-        peer_handler_->CreateOffer(request, WebRTCOfferOptions(offer_options));
+    web_transceivers = peer_handler_->CreateOffer(request, offer_options);
   } else {
     MediaErrorState media_error_state;
     WebMediaConstraints constraints = media_constraints_impl::Create(
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler.cc b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler.cc
index 0e96369..00e88ef 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler.cc
@@ -32,7 +32,6 @@
 #include "third_party/blink/public/platform/web_rtc_data_channel_init.h"
 #include "third_party/blink/public/platform/web_rtc_ice_candidate.h"
 #include "third_party/blink/public/platform/web_rtc_legacy_stats.h"
-#include "third_party/blink/public/platform/web_rtc_offer_options.h"
 #include "third_party/blink/public/platform/web_rtc_rtp_sender.h"
 #include "third_party/blink/public/platform/web_rtc_rtp_transceiver.h"
 #include "third_party/blink/public/platform/web_rtc_session_description.h"
@@ -49,6 +48,7 @@
 #include "third_party/blink/renderer/modules/peerconnection/webrtc_set_description_observer.h"
 #include "third_party/blink/renderer/platform/peerconnection/rtc_event_log_output_sink.h"
 #include "third_party/blink/renderer/platform/peerconnection/rtc_event_log_output_sink_proxy.h"
+#include "third_party/blink/renderer/platform/peerconnection/rtc_offer_options_platform.h"
 #include "third_party/blink/renderer/platform/wtf/text/string_builder.h"
 #include "third_party/blink/renderer/platform/wtf/thread_safe_ref_counted.h"
 #include "third_party/webrtc/api/rtc_event_log_output.h"
@@ -510,12 +510,13 @@
 }
 
 void ConvertOfferOptionsToWebrtcOfferOptions(
-    const blink::WebRTCOfferOptions& options,
+    const RTCOfferOptionsPlatform* options,
     webrtc::PeerConnectionInterface::RTCOfferAnswerOptions* output) {
-  output->offer_to_receive_audio = options.OfferToReceiveAudio();
-  output->offer_to_receive_video = options.OfferToReceiveVideo();
-  output->voice_activity_detection = options.VoiceActivityDetection();
-  output->ice_restart = options.IceRestart();
+  DCHECK(options);
+  output->offer_to_receive_audio = options->OfferToReceiveAudio();
+  output->offer_to_receive_video = options->OfferToReceiveVideo();
+  output->voice_activity_detection = options->VoiceActivityDetection();
+  output->ice_restart = options->IceRestart();
 }
 
 void ConvertAnswerOptionsToWebrtcAnswerOptions(
@@ -1150,7 +1151,7 @@
 blink::WebVector<std::unique_ptr<blink::WebRTCRtpTransceiver>>
 RTCPeerConnectionHandler::CreateOffer(
     const blink::WebRTCSessionDescriptionRequest& request,
-    const blink::WebRTCOfferOptions& options) {
+    blink::RTCOfferOptionsPlatform* options) {
   DCHECK(task_runner_->RunsTasksInCurrentSequence());
   TRACE_EVENT0("webrtc", "RTCPeerConnectionHandler::createOffer");
 
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler.h b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler.h
index 920aa903..4a3c66e 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler.h
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler.h
@@ -34,11 +34,11 @@
 namespace blink {
 class PeerConnectionDependencyFactory;
 class PeerConnectionTracker;
+class RTCOfferOptionsPlatform;
 class SetLocalDescriptionRequest;
 class WebLocalFrame;
 class WebRTCAnswerOptions;
 class WebRTCLegacyStats;
-class WebRTCOfferOptions;
 class WebRTCPeerConnectionHandlerClient;
 
 // Mockable wrapper for blink::WebRTCStatsResponse
@@ -112,7 +112,7 @@
       const blink::WebMediaConstraints& options) override;
   blink::WebVector<std::unique_ptr<blink::WebRTCRtpTransceiver>> CreateOffer(
       const blink::WebRTCSessionDescriptionRequest& request,
-      const blink::WebRTCOfferOptions& options) override;
+      blink::RTCOfferOptionsPlatform* options) override;
 
   void CreateAnswer(const blink::WebRTCSessionDescriptionRequest& request,
                     const blink::WebMediaConstraints& options) override;
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_test.cc b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_test.cc
index 04256b6..ceaedd6 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_test.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_test.cc
@@ -43,6 +43,8 @@
 
 namespace blink {
 
+class RTCOfferOptionsPlatform;
+
 static const char* kOfferSdpUnifiedPlanSingleAudioSingleVideo =
     "v=0\r\n"
     "o=- 6676943034916303038 2 IN IP4 127.0.0.1\r\n"
@@ -713,7 +715,7 @@
 
   WebVector<std::unique_ptr<WebRTCRtpTransceiver>> CreateOffer(
       const WebRTCSessionDescriptionRequest& request,
-      const WebRTCOfferOptions&) override {
+      RTCOfferOptionsPlatform*) override {
     PostToCompleteRequest<WebRTCSessionDescriptionRequest>(
         async_operation_action_, request);
     return {};
diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn
index 8fafab74..3249935c 100644
--- a/third_party/blink/renderer/platform/BUILD.gn
+++ b/third_party/blink/renderer/platform/BUILD.gn
@@ -536,7 +536,6 @@
     "exported/web_resource_timing_info.cc",
     "exported/web_rtc_answer_options.cc",
     "exported/web_rtc_ice_candidate.cc",
-    "exported/web_rtc_offer_options.cc",
     "exported/web_rtc_peer_connection_handler_client.cc",
     "exported/web_rtc_rtp_receiver.cc",
     "exported/web_rtc_rtp_sender.cc",
diff --git a/third_party/blink/renderer/platform/exported/web_rtc_offer_options.cc b/third_party/blink/renderer/platform/exported/web_rtc_offer_options.cc
deleted file mode 100644
index 366bb3d..0000000
--- a/third_party/blink/renderer/platform/exported/web_rtc_offer_options.cc
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "third_party/blink/public/platform/web_rtc_offer_options.h"
-
-#include "third_party/blink/renderer/platform/heap/heap.h"
-#include "third_party/blink/renderer/platform/peerconnection/rtc_offer_options_platform.h"
-
-namespace blink {
-
-WebRTCOfferOptions::WebRTCOfferOptions(RTCOfferOptionsPlatform* options)
-    : private_(options) {}
-
-WebRTCOfferOptions::WebRTCOfferOptions(int32_t offer_to_receive_audio,
-                                       int32_t offer_to_receive_video,
-                                       bool voice_activity_detection,
-                                       bool ice_restart)
-    : private_(MakeGarbageCollected<RTCOfferOptionsPlatform>(
-          offer_to_receive_audio,
-          offer_to_receive_video,
-          voice_activity_detection,
-          ice_restart)) {}
-
-void WebRTCOfferOptions::Assign(const WebRTCOfferOptions& other) {
-  private_ = other.private_;
-}
-
-void WebRTCOfferOptions::Reset() {
-  private_.Reset();
-}
-
-int32_t WebRTCOfferOptions::OfferToReceiveVideo() const {
-  DCHECK(!IsNull());
-  return private_->OfferToReceiveVideo();
-}
-
-int32_t WebRTCOfferOptions::OfferToReceiveAudio() const {
-  DCHECK(!IsNull());
-  return private_->OfferToReceiveAudio();
-}
-
-bool WebRTCOfferOptions::VoiceActivityDetection() const {
-  DCHECK(!IsNull());
-  return private_->VoiceActivityDetection();
-}
-
-bool WebRTCOfferOptions::IceRestart() const {
-  DCHECK(!IsNull());
-  return private_->IceRestart();
-}
-
-}  // namespace blink