| OLD | NEW |
| 1 /* | 1 /* |
| 2 * libjingle | 2 * libjingle |
| 3 * Copyright 2012 Google Inc. | 3 * Copyright 2012 Google Inc. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are met: | 6 * modification, are permitted provided that the following conditions are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright notice, | 8 * 1. Redistributions of source code must retain the above copyright notice, |
| 9 * this list of conditions and the following disclaimer. | 9 * this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright notice, | 10 * 2. Redistributions in binary form must reproduce the above copyright notice, |
| (...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 protected: | 323 protected: |
| 324 ~WebRtcSessionCreateSDPObserverForTest() {} | 324 ~WebRtcSessionCreateSDPObserverForTest() {} |
| 325 | 325 |
| 326 private: | 326 private: |
| 327 rtc::scoped_ptr<SessionDescriptionInterface> description_; | 327 rtc::scoped_ptr<SessionDescriptionInterface> description_; |
| 328 State state_; | 328 State state_; |
| 329 }; | 329 }; |
| 330 | 330 |
| 331 class FakeAudioRenderer : public cricket::AudioRenderer { | 331 class FakeAudioRenderer : public cricket::AudioRenderer { |
| 332 public: | 332 public: |
| 333 FakeAudioRenderer() : channel_id_(-1), sink_(NULL) {} | 333 FakeAudioRenderer() : sink_(NULL) {} |
| 334 virtual ~FakeAudioRenderer() { | 334 virtual ~FakeAudioRenderer() { |
| 335 if (sink_) | 335 if (sink_) |
| 336 sink_->OnClose(); | 336 sink_->OnClose(); |
| 337 } | 337 } |
| 338 | 338 |
| 339 void AddChannel(int channel_id) override { | |
| 340 ASSERT(channel_id_ == -1); | |
| 341 channel_id_ = channel_id; | |
| 342 } | |
| 343 void RemoveChannel(int channel_id) override { | |
| 344 ASSERT(channel_id == channel_id_); | |
| 345 channel_id_ = -1; | |
| 346 } | |
| 347 void SetSink(Sink* sink) override { sink_ = sink; } | 339 void SetSink(Sink* sink) override { sink_ = sink; } |
| 348 | 340 |
| 349 int channel_id() const { return channel_id_; } | |
| 350 cricket::AudioRenderer::Sink* sink() const { return sink_; } | 341 cricket::AudioRenderer::Sink* sink() const { return sink_; } |
| 351 private: | 342 private: |
| 352 int channel_id_; | |
| 353 cricket::AudioRenderer::Sink* sink_; | 343 cricket::AudioRenderer::Sink* sink_; |
| 354 }; | 344 }; |
| 355 | 345 |
| 356 class WebRtcSessionTest | 346 class WebRtcSessionTest |
| 357 : public testing::TestWithParam<RTCCertificateGenerationMethod> { | 347 : public testing::TestWithParam<RTCCertificateGenerationMethod> { |
| 358 protected: | 348 protected: |
| 359 // TODO Investigate why ChannelManager crashes, if it's created | 349 // TODO Investigate why ChannelManager crashes, if it's created |
| 360 // after stun_server. | 350 // after stun_server. |
| 361 WebRtcSessionTest() | 351 WebRtcSessionTest() |
| 362 : media_engine_(new cricket::FakeMediaEngine()), | 352 : media_engine_(new cricket::FakeMediaEngine()), |
| (...skipping 2745 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3108 ASSERT_TRUE(channel != NULL); | 3098 ASSERT_TRUE(channel != NULL); |
| 3109 ASSERT_EQ(1u, channel->recv_streams().size()); | 3099 ASSERT_EQ(1u, channel->recv_streams().size()); |
| 3110 uint32_t receive_ssrc = channel->recv_streams()[0].first_ssrc(); | 3100 uint32_t receive_ssrc = channel->recv_streams()[0].first_ssrc(); |
| 3111 double volume; | 3101 double volume; |
| 3112 EXPECT_TRUE(channel->GetOutputVolume(receive_ssrc, &volume)); | 3102 EXPECT_TRUE(channel->GetOutputVolume(receive_ssrc, &volume)); |
| 3113 EXPECT_EQ(1, volume); | 3103 EXPECT_EQ(1, volume); |
| 3114 rtc::scoped_ptr<FakeAudioRenderer> renderer(new FakeAudioRenderer()); | 3104 rtc::scoped_ptr<FakeAudioRenderer> renderer(new FakeAudioRenderer()); |
| 3115 session_->SetAudioPlayout(receive_ssrc, false, renderer.get()); | 3105 session_->SetAudioPlayout(receive_ssrc, false, renderer.get()); |
| 3116 EXPECT_TRUE(channel->GetOutputVolume(receive_ssrc, &volume)); | 3106 EXPECT_TRUE(channel->GetOutputVolume(receive_ssrc, &volume)); |
| 3117 EXPECT_EQ(0, volume); | 3107 EXPECT_EQ(0, volume); |
| 3118 EXPECT_EQ(0, renderer->channel_id()); | |
| 3119 session_->SetAudioPlayout(receive_ssrc, true, NULL); | 3108 session_->SetAudioPlayout(receive_ssrc, true, NULL); |
| 3120 EXPECT_TRUE(channel->GetOutputVolume(receive_ssrc, &volume)); | 3109 EXPECT_TRUE(channel->GetOutputVolume(receive_ssrc, &volume)); |
| 3121 EXPECT_EQ(1, volume); | 3110 EXPECT_EQ(1, volume); |
| 3122 EXPECT_EQ(-1, renderer->channel_id()); | |
| 3123 } | 3111 } |
| 3124 | 3112 |
| 3125 TEST_F(WebRtcSessionTest, SetAudioSend) { | 3113 TEST_F(WebRtcSessionTest, SetAudioSend) { |
| 3126 Init(); | 3114 Init(); |
| 3127 mediastream_signaling_.SendAudioVideoStream1(); | 3115 mediastream_signaling_.SendAudioVideoStream1(); |
| 3128 CreateAndSetRemoteOfferAndLocalAnswer(); | 3116 CreateAndSetRemoteOfferAndLocalAnswer(); |
| 3129 cricket::FakeVoiceMediaChannel* channel = media_engine_->GetVoiceChannel(0); | 3117 cricket::FakeVoiceMediaChannel* channel = media_engine_->GetVoiceChannel(0); |
| 3130 ASSERT_TRUE(channel != NULL); | 3118 ASSERT_TRUE(channel != NULL); |
| 3131 ASSERT_EQ(1u, channel->send_streams().size()); | 3119 ASSERT_EQ(1u, channel->send_streams().size()); |
| 3132 uint32_t send_ssrc = channel->send_streams()[0].first_ssrc(); | 3120 uint32_t send_ssrc = channel->send_streams()[0].first_ssrc(); |
| 3133 EXPECT_FALSE(channel->IsStreamMuted(send_ssrc)); | 3121 EXPECT_FALSE(channel->IsStreamMuted(send_ssrc)); |
| 3134 | 3122 |
| 3135 cricket::AudioOptions options; | 3123 cricket::AudioOptions options; |
| 3136 options.echo_cancellation.Set(true); | 3124 options.echo_cancellation.Set(true); |
| 3137 | 3125 |
| 3138 rtc::scoped_ptr<FakeAudioRenderer> renderer(new FakeAudioRenderer()); | 3126 rtc::scoped_ptr<FakeAudioRenderer> renderer(new FakeAudioRenderer()); |
| 3139 session_->SetAudioSend(send_ssrc, false, options, renderer.get()); | 3127 session_->SetAudioSend(send_ssrc, false, options, renderer.get()); |
| 3140 EXPECT_TRUE(channel->IsStreamMuted(send_ssrc)); | 3128 EXPECT_TRUE(channel->IsStreamMuted(send_ssrc)); |
| 3141 EXPECT_FALSE(channel->options().echo_cancellation.IsSet()); | 3129 EXPECT_FALSE(channel->options().echo_cancellation.IsSet()); |
| 3142 EXPECT_EQ(0, renderer->channel_id()); | |
| 3143 EXPECT_TRUE(renderer->sink() != NULL); | 3130 EXPECT_TRUE(renderer->sink() != NULL); |
| 3144 | 3131 |
| 3145 // This will trigger SetSink(NULL) to the |renderer|. | 3132 // This will trigger SetSink(NULL) to the |renderer|. |
| 3146 session_->SetAudioSend(send_ssrc, true, options, NULL); | 3133 session_->SetAudioSend(send_ssrc, true, options, NULL); |
| 3147 EXPECT_FALSE(channel->IsStreamMuted(send_ssrc)); | 3134 EXPECT_FALSE(channel->IsStreamMuted(send_ssrc)); |
| 3148 bool value; | 3135 bool value; |
| 3149 EXPECT_TRUE(channel->options().echo_cancellation.Get(&value)); | 3136 EXPECT_TRUE(channel->options().echo_cancellation.Get(&value)); |
| 3150 EXPECT_TRUE(value); | 3137 EXPECT_TRUE(value); |
| 3151 EXPECT_EQ(-1, renderer->channel_id()); | |
| 3152 EXPECT_TRUE(renderer->sink() == NULL); | 3138 EXPECT_TRUE(renderer->sink() == NULL); |
| 3153 } | 3139 } |
| 3154 | 3140 |
| 3155 TEST_F(WebRtcSessionTest, AudioRendererForLocalStream) { | 3141 TEST_F(WebRtcSessionTest, AudioRendererForLocalStream) { |
| 3156 Init(); | 3142 Init(); |
| 3157 mediastream_signaling_.SendAudioVideoStream1(); | 3143 mediastream_signaling_.SendAudioVideoStream1(); |
| 3158 CreateAndSetRemoteOfferAndLocalAnswer(); | 3144 CreateAndSetRemoteOfferAndLocalAnswer(); |
| 3159 cricket::FakeVoiceMediaChannel* channel = media_engine_->GetVoiceChannel(0); | 3145 cricket::FakeVoiceMediaChannel* channel = media_engine_->GetVoiceChannel(0); |
| 3160 ASSERT_TRUE(channel != NULL); | 3146 ASSERT_TRUE(channel != NULL); |
| 3161 ASSERT_EQ(1u, channel->send_streams().size()); | 3147 ASSERT_EQ(1u, channel->send_streams().size()); |
| (...skipping 868 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4030 } | 4016 } |
| 4031 | 4017 |
| 4032 // TODO(bemasc): Add a TestIceStatesBundle with BUNDLE enabled. That test | 4018 // TODO(bemasc): Add a TestIceStatesBundle with BUNDLE enabled. That test |
| 4033 // currently fails because upon disconnection and reconnection OnIceComplete is | 4019 // currently fails because upon disconnection and reconnection OnIceComplete is |
| 4034 // called more than once without returning to IceGatheringGathering. | 4020 // called more than once without returning to IceGatheringGathering. |
| 4035 | 4021 |
| 4036 INSTANTIATE_TEST_CASE_P(WebRtcSessionTests, | 4022 INSTANTIATE_TEST_CASE_P(WebRtcSessionTests, |
| 4037 WebRtcSessionTest, | 4023 WebRtcSessionTest, |
| 4038 testing::Values(ALREADY_GENERATED, | 4024 testing::Values(ALREADY_GENERATED, |
| 4039 DTLS_IDENTITY_STORE)); | 4025 DTLS_IDENTITY_STORE)); |
| OLD | NEW |