| Index: talk/app/webrtc/rtpsenderreceiver_unittest.cc
 | 
| diff --git a/talk/app/webrtc/mediastreamhandler_unittest.cc b/talk/app/webrtc/rtpsenderreceiver_unittest.cc
 | 
| similarity index 54%
 | 
| rename from talk/app/webrtc/mediastreamhandler_unittest.cc
 | 
| rename to talk/app/webrtc/rtpsenderreceiver_unittest.cc
 | 
| index 62466437f46d392fd90c8ed0509fdddfb33ab8bc..973b8541713ee43c8b71e7abdd8ce7ef3993f573 100644
 | 
| --- a/talk/app/webrtc/mediastreamhandler_unittest.cc
 | 
| +++ b/talk/app/webrtc/rtpsenderreceiver_unittest.cc
 | 
| @@ -25,13 +25,13 @@
 | 
|   * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
|   */
 | 
|  
 | 
| -#include "talk/app/webrtc/mediastreamhandler.h"
 | 
| -
 | 
|  #include <string>
 | 
|  
 | 
|  #include "talk/app/webrtc/audiotrack.h"
 | 
|  #include "talk/app/webrtc/mediastream.h"
 | 
|  #include "talk/app/webrtc/remoteaudiosource.h"
 | 
| +#include "talk/app/webrtc/rtpreceiver.h"
 | 
| +#include "talk/app/webrtc/rtpsender.h"
 | 
|  #include "talk/app/webrtc/streamcollection.h"
 | 
|  #include "talk/app/webrtc/videosource.h"
 | 
|  #include "talk/app/webrtc/videotrack.h"
 | 
| @@ -52,29 +52,36 @@ static const uint32 kAudioSsrc = 99;
 | 
|  
 | 
|  namespace webrtc {
 | 
|  
 | 
| -// Helper class to test MediaStreamHandler.
 | 
| +// Helper class to test RtpSender/RtpReceiver.
 | 
|  class MockAudioProvider : public AudioProviderInterface {
 | 
|   public:
 | 
|    virtual ~MockAudioProvider() {}
 | 
| -  MOCK_METHOD3(SetAudioPlayout, void(uint32 ssrc, bool enable,
 | 
| -                                     cricket::AudioRenderer* renderer));
 | 
| -  MOCK_METHOD4(SetAudioSend, void(uint32 ssrc, bool enable,
 | 
| -                                  const cricket::AudioOptions& options,
 | 
| -                                  cricket::AudioRenderer* renderer));
 | 
| +  MOCK_METHOD3(SetAudioPlayout,
 | 
| +               void(uint32 ssrc,
 | 
| +                    bool enable,
 | 
| +                    cricket::AudioRenderer* renderer));
 | 
| +  MOCK_METHOD4(SetAudioSend,
 | 
| +               void(uint32 ssrc,
 | 
| +                    bool enable,
 | 
| +                    const cricket::AudioOptions& options,
 | 
| +                    cricket::AudioRenderer* renderer));
 | 
|    MOCK_METHOD2(SetAudioPlayoutVolume, void(uint32 ssrc, double volume));
 | 
|  };
 | 
|  
 | 
| -// Helper class to test MediaStreamHandler.
 | 
| +// Helper class to test RtpSender/RtpReceiver.
 | 
|  class MockVideoProvider : public VideoProviderInterface {
 | 
|   public:
 | 
|    virtual ~MockVideoProvider() {}
 | 
| -  MOCK_METHOD2(SetCaptureDevice, bool(uint32 ssrc,
 | 
| -                                      cricket::VideoCapturer* camera));
 | 
| -  MOCK_METHOD3(SetVideoPlayout, void(uint32 ssrc,
 | 
| -                                     bool enable,
 | 
| -                                     cricket::VideoRenderer* renderer));
 | 
| -  MOCK_METHOD3(SetVideoSend, void(uint32 ssrc, bool enable,
 | 
| -                                  const cricket::VideoOptions* options));
 | 
| +  MOCK_METHOD2(SetCaptureDevice,
 | 
| +               bool(uint32 ssrc, cricket::VideoCapturer* camera));
 | 
| +  MOCK_METHOD3(SetVideoPlayout,
 | 
| +               void(uint32 ssrc,
 | 
| +                    bool enable,
 | 
| +                    cricket::VideoRenderer* renderer));
 | 
| +  MOCK_METHOD3(SetVideoSend,
 | 
| +               void(uint32 ssrc,
 | 
| +                    bool enable,
 | 
| +                    const cricket::VideoOptions* options));
 | 
|  };
 | 
|  
 | 
|  class FakeVideoSource : public Notifier<VideoSourceInterface> {
 | 
| @@ -82,9 +89,7 @@ class FakeVideoSource : public Notifier<VideoSourceInterface> {
 | 
|    static rtc::scoped_refptr<FakeVideoSource> Create() {
 | 
|      return new rtc::RefCountedObject<FakeVideoSource>();
 | 
|    }
 | 
| -  virtual cricket::VideoCapturer* GetVideoCapturer() {
 | 
| -    return &fake_capturer_;
 | 
| -  }
 | 
| +  virtual cricket::VideoCapturer* GetVideoCapturer() { return &fake_capturer_; }
 | 
|    virtual void Stop() {}
 | 
|    virtual void Restart() {}
 | 
|    virtual void AddSink(cricket::VideoRenderer* output) {}
 | 
| @@ -103,154 +108,113 @@ class FakeVideoSource : public Notifier<VideoSourceInterface> {
 | 
|    cricket::VideoOptions options_;
 | 
|  };
 | 
|  
 | 
| -class MediaStreamHandlerTest : public testing::Test {
 | 
| +class RtpSenderReceiverTest : public testing::Test {
 | 
|   public:
 | 
| -  MediaStreamHandlerTest()
 | 
| -      : handlers_(&audio_provider_, &video_provider_) {
 | 
| -  }
 | 
| -
 | 
|    virtual void SetUp() {
 | 
|      stream_ = MediaStream::Create(kStreamLabel1);
 | 
| -    rtc::scoped_refptr<VideoSourceInterface> source(
 | 
| -        FakeVideoSource::Create());
 | 
| +    rtc::scoped_refptr<VideoSourceInterface> source(FakeVideoSource::Create());
 | 
|      video_track_ = VideoTrack::Create(kVideoTrackId, source);
 | 
|      EXPECT_TRUE(stream_->AddTrack(video_track_));
 | 
|    }
 | 
|  
 | 
| -  void AddLocalAudioTrack() {
 | 
| +  void CreateAudioRtpSender() {
 | 
|      audio_track_ = AudioTrack::Create(kAudioTrackId, NULL);
 | 
|      EXPECT_TRUE(stream_->AddTrack(audio_track_));
 | 
|      EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc, true, _, _));
 | 
| -    handlers_.AddLocalAudioTrack(stream_, stream_->GetAudioTracks()[0],
 | 
| -                                 kAudioSsrc);
 | 
| +    audio_rtp_sender_ = new AudioRtpSender(stream_->GetAudioTracks()[0],
 | 
| +                                           kAudioSsrc, &audio_provider_);
 | 
|    }
 | 
|  
 | 
| -  void AddLocalVideoTrack() {
 | 
| -    EXPECT_CALL(video_provider_, SetCaptureDevice(
 | 
| -        kVideoSsrc, video_track_->GetSource()->GetVideoCapturer()));
 | 
| +  void CreateVideoRtpSender() {
 | 
| +    EXPECT_CALL(video_provider_,
 | 
| +                SetCaptureDevice(
 | 
| +                    kVideoSsrc, video_track_->GetSource()->GetVideoCapturer()));
 | 
|      EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, true, _));
 | 
| -    handlers_.AddLocalVideoTrack(stream_, stream_->GetVideoTracks()[0],
 | 
| -                                 kVideoSsrc);
 | 
| +    video_rtp_sender_ = new VideoRtpSender(stream_->GetVideoTracks()[0],
 | 
| +                                           kVideoSsrc, &video_provider_);
 | 
|    }
 | 
|  
 | 
| -  void RemoveLocalAudioTrack() {
 | 
| +  void DestroyAudioRtpSender() {
 | 
|      EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc, false, _, _))
 | 
|          .Times(1);
 | 
| -    handlers_.RemoveLocalTrack(stream_, audio_track_);
 | 
| +    audio_rtp_sender_ = nullptr;
 | 
|    }
 | 
|  
 | 
| -  void RemoveLocalVideoTrack() {
 | 
| -    EXPECT_CALL(video_provider_, SetCaptureDevice(kVideoSsrc, NULL))
 | 
| -        .Times(1);
 | 
| -    EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, false, _))
 | 
| -        .Times(1);
 | 
| -    handlers_.RemoveLocalTrack(stream_, video_track_);
 | 
| +  void DestroyVideoRtpSender() {
 | 
| +    EXPECT_CALL(video_provider_, SetCaptureDevice(kVideoSsrc, NULL)).Times(1);
 | 
| +    EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, false, _)).Times(1);
 | 
| +    video_rtp_sender_ = nullptr;
 | 
|    }
 | 
|  
 | 
| -  void AddRemoteAudioTrack() {
 | 
| -    audio_track_ = AudioTrack::Create(kAudioTrackId,
 | 
| -                                      RemoteAudioSource::Create().get());
 | 
| +  void CreateAudioRtpReceiver() {
 | 
| +    audio_track_ =
 | 
| +        AudioTrack::Create(kAudioTrackId, RemoteAudioSource::Create().get());
 | 
|      EXPECT_TRUE(stream_->AddTrack(audio_track_));
 | 
|      EXPECT_CALL(audio_provider_, SetAudioPlayout(kAudioSsrc, true, _));
 | 
| -    handlers_.AddRemoteAudioTrack(stream_, stream_->GetAudioTracks()[0],
 | 
| -                                  kAudioSsrc);
 | 
| +    audio_rtp_receiver_ = new AudioRtpReceiver(stream_->GetAudioTracks()[0],
 | 
| +                                               kAudioSsrc, &audio_provider_);
 | 
|    }
 | 
|  
 | 
| -  void AddRemoteVideoTrack() {
 | 
| -    EXPECT_CALL(video_provider_, SetVideoPlayout(
 | 
| -        kVideoSsrc, true, video_track_->GetSource()->FrameInput()));
 | 
| -    handlers_.AddRemoteVideoTrack(stream_, stream_->GetVideoTracks()[0],
 | 
| -                                  kVideoSsrc);
 | 
| +  void CreateVideoRtpReceiver() {
 | 
| +    EXPECT_CALL(video_provider_,
 | 
| +                SetVideoPlayout(kVideoSsrc, true,
 | 
| +                                video_track_->GetSource()->FrameInput()));
 | 
| +    video_rtp_receiver_ = new VideoRtpReceiver(stream_->GetVideoTracks()[0],
 | 
| +                                               kVideoSsrc, &video_provider_);
 | 
|    }
 | 
|  
 | 
| -  void RemoveRemoteAudioTrack() {
 | 
| +  void DestroyAudioRtpReceiver() {
 | 
|      EXPECT_CALL(audio_provider_, SetAudioPlayout(kAudioSsrc, false, _));
 | 
| -    handlers_.RemoveRemoteTrack(stream_, stream_->GetAudioTracks()[0]);
 | 
| +    audio_rtp_receiver_ = nullptr;
 | 
|    }
 | 
|  
 | 
| -  void RemoveRemoteVideoTrack() {
 | 
| +  void DestroyVideoRtpReceiver() {
 | 
|      EXPECT_CALL(video_provider_, SetVideoPlayout(kVideoSsrc, false, NULL));
 | 
| -    handlers_.RemoveRemoteTrack(stream_, stream_->GetVideoTracks()[0]);
 | 
| +    video_rtp_receiver_ = nullptr;
 | 
|    }
 | 
|  
 | 
|   protected:
 | 
|    MockAudioProvider audio_provider_;
 | 
|    MockVideoProvider video_provider_;
 | 
| -  MediaStreamHandlerContainer handlers_;
 | 
| +  rtc::scoped_refptr<AudioRtpSender> audio_rtp_sender_;
 | 
| +  rtc::scoped_refptr<VideoRtpSender> video_rtp_sender_;
 | 
| +  rtc::scoped_refptr<AudioRtpReceiver> audio_rtp_receiver_;
 | 
| +  rtc::scoped_refptr<VideoRtpReceiver> video_rtp_receiver_;
 | 
|    rtc::scoped_refptr<MediaStreamInterface> stream_;
 | 
|    rtc::scoped_refptr<VideoTrackInterface> video_track_;
 | 
|    rtc::scoped_refptr<AudioTrackInterface> audio_track_;
 | 
|  };
 | 
|  
 | 
|  // Test that |audio_provider_| is notified when an audio track is associated
 | 
| -// and disassociated with a MediaStreamHandler.
 | 
| -TEST_F(MediaStreamHandlerTest, AddAndRemoveLocalAudioTrack) {
 | 
| -  AddLocalAudioTrack();
 | 
| -  RemoveLocalAudioTrack();
 | 
| -
 | 
| -  handlers_.RemoveLocalStream(stream_);
 | 
| +// and disassociated with an AudioRtpSender.
 | 
| +TEST_F(RtpSenderReceiverTest, AddAndDestroyAudioRtpSender) {
 | 
| +  CreateAudioRtpSender();
 | 
| +  DestroyAudioRtpSender();
 | 
|  }
 | 
|  
 | 
|  // Test that |video_provider_| is notified when a video track is associated and
 | 
| -// disassociated with a MediaStreamHandler.
 | 
| -TEST_F(MediaStreamHandlerTest, AddAndRemoveLocalVideoTrack) {
 | 
| -  AddLocalVideoTrack();
 | 
| -  RemoveLocalVideoTrack();
 | 
| -
 | 
| -  handlers_.RemoveLocalStream(stream_);
 | 
| +// disassociated with a VideoRtpSender.
 | 
| +TEST_F(RtpSenderReceiverTest, AddAndDestroyVideoRtpSender) {
 | 
| +  CreateVideoRtpSender();
 | 
| +  DestroyVideoRtpSender();
 | 
|  }
 | 
|  
 | 
| -// Test that |video_provider_| and |audio_provider_| is notified when an audio
 | 
| -// and video track is disassociated with a MediaStreamHandler by calling
 | 
| -// RemoveLocalStream.
 | 
| -TEST_F(MediaStreamHandlerTest, RemoveLocalStream) {
 | 
| -  AddLocalAudioTrack();
 | 
| -  AddLocalVideoTrack();
 | 
| -
 | 
| -  EXPECT_CALL(video_provider_, SetCaptureDevice(kVideoSsrc, NULL))
 | 
| -      .Times(1);
 | 
| -  EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, false, _))
 | 
| -      .Times(1);
 | 
| -  EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc, false, _, _))
 | 
| -      .Times(1);
 | 
| -  handlers_.RemoveLocalStream(stream_);
 | 
| -}
 | 
| -
 | 
| -
 | 
|  // Test that |audio_provider_| is notified when a remote audio and track is
 | 
| -// associated and disassociated with a MediaStreamHandler.
 | 
| -TEST_F(MediaStreamHandlerTest, AddAndRemoveRemoteAudioTrack) {
 | 
| -  AddRemoteAudioTrack();
 | 
| -  RemoveRemoteAudioTrack();
 | 
| -
 | 
| -  handlers_.RemoveRemoteStream(stream_);
 | 
| +// associated and disassociated with an AudioRtpReceiver.
 | 
| +TEST_F(RtpSenderReceiverTest, AddAndDestroyAudioRtpReceiver) {
 | 
| +  CreateAudioRtpReceiver();
 | 
| +  DestroyAudioRtpReceiver();
 | 
|  }
 | 
|  
 | 
|  // Test that |video_provider_| is notified when a remote
 | 
| -// video track is associated and disassociated with a MediaStreamHandler.
 | 
| -TEST_F(MediaStreamHandlerTest, AddAndRemoveRemoteVideoTrack) {
 | 
| -  AddRemoteVideoTrack();
 | 
| -  RemoveRemoteVideoTrack();
 | 
| -
 | 
| -  handlers_.RemoveRemoteStream(stream_);
 | 
| -}
 | 
| -
 | 
| -// Test that |audio_provider_| and |video_provider_| is notified when an audio
 | 
| -// and video track is disassociated with a MediaStreamHandler by calling
 | 
| -// RemoveRemoveStream.
 | 
| -TEST_F(MediaStreamHandlerTest, RemoveRemoteStream) {
 | 
| -  AddRemoteAudioTrack();
 | 
| -  AddRemoteVideoTrack();
 | 
| -
 | 
| -  EXPECT_CALL(video_provider_, SetVideoPlayout(kVideoSsrc, false, NULL))
 | 
| -      .Times(1);
 | 
| -  EXPECT_CALL(audio_provider_, SetAudioPlayout(kAudioSsrc, false, _))
 | 
| -      .Times(1);
 | 
| -  handlers_.RemoveRemoteStream(stream_);
 | 
| +// video track is associated and disassociated with a VideoRtpReceiver.
 | 
| +TEST_F(RtpSenderReceiverTest, AddAndDestroyVideoRtpReceiver) {
 | 
| +  CreateVideoRtpReceiver();
 | 
| +  DestroyVideoRtpReceiver();
 | 
|  }
 | 
|  
 | 
| -TEST_F(MediaStreamHandlerTest, LocalAudioTrackDisable) {
 | 
| -  AddLocalAudioTrack();
 | 
| +TEST_F(RtpSenderReceiverTest, LocalAudioTrackDisable) {
 | 
| +  CreateAudioRtpSender();
 | 
|  
 | 
|    EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc, false, _, _));
 | 
|    audio_track_->set_enabled(false);
 | 
| @@ -258,12 +222,11 @@ TEST_F(MediaStreamHandlerTest, LocalAudioTrackDisable) {
 | 
|    EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc, true, _, _));
 | 
|    audio_track_->set_enabled(true);
 | 
|  
 | 
| -  RemoveLocalAudioTrack();
 | 
| -  handlers_.TearDown();
 | 
| +  DestroyAudioRtpSender();
 | 
|  }
 | 
|  
 | 
| -TEST_F(MediaStreamHandlerTest, RemoteAudioTrackDisable) {
 | 
| -  AddRemoteAudioTrack();
 | 
| +TEST_F(RtpSenderReceiverTest, RemoteAudioTrackDisable) {
 | 
| +  CreateAudioRtpReceiver();
 | 
|  
 | 
|    EXPECT_CALL(audio_provider_, SetAudioPlayout(kAudioSsrc, false, _));
 | 
|    audio_track_->set_enabled(false);
 | 
| @@ -271,12 +234,11 @@ TEST_F(MediaStreamHandlerTest, RemoteAudioTrackDisable) {
 | 
|    EXPECT_CALL(audio_provider_, SetAudioPlayout(kAudioSsrc, true, _));
 | 
|    audio_track_->set_enabled(true);
 | 
|  
 | 
| -  RemoveRemoteAudioTrack();
 | 
| -  handlers_.TearDown();
 | 
| +  DestroyAudioRtpReceiver();
 | 
|  }
 | 
|  
 | 
| -TEST_F(MediaStreamHandlerTest, LocalVideoTrackDisable) {
 | 
| -  AddLocalVideoTrack();
 | 
| +TEST_F(RtpSenderReceiverTest, LocalVideoTrackDisable) {
 | 
| +  CreateVideoRtpSender();
 | 
|  
 | 
|    EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, false, _));
 | 
|    video_track_->set_enabled(false);
 | 
| @@ -284,23 +246,21 @@ TEST_F(MediaStreamHandlerTest, LocalVideoTrackDisable) {
 | 
|    EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, true, _));
 | 
|    video_track_->set_enabled(true);
 | 
|  
 | 
| -  RemoveLocalVideoTrack();
 | 
| -  handlers_.TearDown();
 | 
| +  DestroyVideoRtpSender();
 | 
|  }
 | 
|  
 | 
| -TEST_F(MediaStreamHandlerTest, RemoteVideoTrackDisable) {
 | 
| -  AddRemoteVideoTrack();
 | 
| +TEST_F(RtpSenderReceiverTest, RemoteVideoTrackDisable) {
 | 
| +  CreateVideoRtpReceiver();
 | 
|  
 | 
|    video_track_->set_enabled(false);
 | 
|  
 | 
|    video_track_->set_enabled(true);
 | 
|  
 | 
| -  RemoveRemoteVideoTrack();
 | 
| -  handlers_.TearDown();
 | 
| +  DestroyVideoRtpReceiver();
 | 
|  }
 | 
|  
 | 
| -TEST_F(MediaStreamHandlerTest, RemoteAudioTrackSetVolume) {
 | 
| -  AddRemoteAudioTrack();
 | 
| +TEST_F(RtpSenderReceiverTest, RemoteAudioTrackSetVolume) {
 | 
| +  CreateAudioRtpReceiver();
 | 
|  
 | 
|    double volume = 0.5;
 | 
|    EXPECT_CALL(audio_provider_, SetAudioPlayoutVolume(kAudioSsrc, volume));
 | 
| @@ -318,8 +278,7 @@ TEST_F(MediaStreamHandlerTest, RemoteAudioTrackSetVolume) {
 | 
|    EXPECT_CALL(audio_provider_, SetAudioPlayoutVolume(kAudioSsrc, new_volume));
 | 
|    audio_track_->GetSource()->SetVolume(new_volume);
 | 
|  
 | 
| -  RemoveRemoteAudioTrack();
 | 
| -  handlers_.TearDown();
 | 
| +  DestroyAudioRtpReceiver();
 | 
|  }
 | 
|  
 | 
|  }  // namespace webrtc
 | 
| 
 |