RtpReceiverInterface::stream_ids() added.

This is the first step to removing streams from third_party/webrtc.
RtpReceiverInterface::streams() will have to be removed separately.
See https://crbug.com/webrtc/9480 for more information.

Bug: webrtc:9480
Change-Id: I6f9e6ddcda5e2245cc601d2cc6205b7b363f73ef
Reviewed-on: https://webrtc-review.googlesource.com/86840
Reviewed-by: Seth Hampson <shampson@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23929}
diff --git a/pc/rtpreceiver.h b/pc/rtpreceiver.h
index 964a8f5..263ad94 100644
--- a/pc/rtpreceiver.h
+++ b/pc/rtpreceiver.h
@@ -59,6 +59,10 @@
   // Set the associated remote media streams for this receiver. The remote track
   // will be removed from any streams that are no longer present and added to
   // any new streams.
+  virtual void set_stream_ids(std::vector<std::string> stream_ids) = 0;
+  // TODO(https://crbug.com/webrtc/9480): Remove SetStreams() in favor of
+  // set_stream_ids() as soon as downstream projects are no longer dependent on
+  // stream objects.
   virtual void SetStreams(
       const std::vector<rtc::scoped_refptr<MediaStreamInterface>>& streams) = 0;
 
@@ -72,6 +76,10 @@
                          public AudioSourceInterface::AudioObserver,
                          public rtc::RefCountedObject<RtpReceiverInternal> {
  public:
+  AudioRtpReceiver(rtc::Thread* worker_thread,
+                   std::string receiver_id,
+                   std::vector<std::string> stream_ids);
+  // TODO(https://crbug.com/webrtc/9480): Remove this when streams() is removed.
   AudioRtpReceiver(
       rtc::Thread* worker_thread,
       const std::string& receiver_id,
@@ -92,6 +100,7 @@
   rtc::scoped_refptr<MediaStreamTrackInterface> track() const override {
     return track_.get();
   }
+  std::vector<std::string> stream_ids() const override;
   std::vector<rtc::scoped_refptr<MediaStreamInterface>> streams()
       const override {
     return streams_;
@@ -111,6 +120,7 @@
   void SetupMediaChannel(uint32_t ssrc) override;
   uint32_t ssrc() const override { return ssrc_.value_or(0); }
   void NotifyFirstPacketReceived() override;
+  void set_stream_ids(std::vector<std::string> stream_ids) override;
   void SetStreams(const std::vector<rtc::scoped_refptr<MediaStreamInterface>>&
                       streams) override;
 
@@ -151,6 +161,11 @@
  public:
   // An SSRC of 0 will create a receiver that will match the first SSRC it
   // sees.
+  VideoRtpReceiver(rtc::Thread* worker_thread,
+                   std::string receiver_id,
+                   std::vector<std::string> streams_ids);
+  // TODO(hbos): Remove this when streams() is removed.
+  // https://crbug.com/webrtc/9480
   VideoRtpReceiver(
       rtc::Thread* worker_thread,
       const std::string& receiver_id,
@@ -166,6 +181,7 @@
   rtc::scoped_refptr<MediaStreamTrackInterface> track() const override {
     return track_.get();
   }
+  std::vector<std::string> stream_ids() const override;
   std::vector<rtc::scoped_refptr<MediaStreamInterface>> streams()
       const override {
     return streams_;
@@ -185,6 +201,7 @@
   void SetupMediaChannel(uint32_t ssrc) override;
   uint32_t ssrc() const override { return ssrc_.value_or(0); }
   void NotifyFirstPacketReceived() override;
+  void set_stream_ids(std::vector<std::string> stream_ids) override;
   void SetStreams(const std::vector<rtc::scoped_refptr<MediaStreamInterface>>&
                       streams) override;