Index: content/renderer/media/webrtc_local_audio_source_provider_unittest.cc |
diff --git a/content/renderer/media/webrtc_local_audio_source_provider_unittest.cc b/content/renderer/media/webrtc_local_audio_source_provider_unittest.cc |
index 5b7e8526898f93cd6287148093c658bda7e3ec80..8b0fd6b27c157e9ce14da82c82b8d83f0135de39 100644 |
--- a/content/renderer/media/webrtc_local_audio_source_provider_unittest.cc |
+++ b/content/renderer/media/webrtc_local_audio_source_provider_unittest.cc |
@@ -3,10 +3,16 @@ |
// found in the LICENSE file. |
#include "base/logging.h" |
+#include "base/strings/utf_string_conversions.h" |
+#include "content/renderer/media/webrtc/webrtc_local_audio_track_adapter.h" |
+#include "content/renderer/media/webrtc_audio_capturer.h" |
#include "content/renderer/media/webrtc_local_audio_source_provider.h" |
+#include "content/renderer/media/webrtc_local_audio_track.h" |
#include "media/audio/audio_parameters.h" |
#include "media/base/audio_bus.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+#include "third_party/WebKit/public/platform/WebMediaConstraints.h" |
+#include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" |
namespace content { |
@@ -23,7 +29,22 @@ class WebRtcLocalAudioSourceProviderTest : public testing::Test { |
source_params_.frames_per_buffer() * source_params_.channels(); |
source_data_.reset(new int16[length]); |
sink_bus_ = media::AudioBus::Create(sink_params_); |
- source_provider_.reset(new WebRtcLocalAudioSourceProvider()); |
+ blink::WebMediaConstraints constraints; |
+ scoped_refptr<WebRtcAudioCapturer> capturer( |
+ WebRtcAudioCapturer::CreateCapturer(-1, StreamDeviceInfo(), |
+ constraints, NULL)); |
+ scoped_refptr<WebRtcLocalAudioTrackAdapter> adapter( |
+ WebRtcLocalAudioTrackAdapter::Create(std::string(), NULL)); |
+ scoped_ptr<WebRtcLocalAudioTrack> native_track( |
+ new WebRtcLocalAudioTrack(adapter, capturer, NULL)); |
+ blink::WebMediaStreamSource audio_source; |
+ audio_source.initialize(base::UTF8ToUTF16("dummy_source_id"), |
+ blink::WebMediaStreamSource::TypeAudio, |
+ base::UTF8ToUTF16("dummy_source_name")); |
+ blink_track_.initialize(blink::WebString::fromUTF8("audio_track"), |
+ audio_source); |
+ blink_track_.setExtraData(native_track.release()); |
+ source_provider_.reset(new WebRtcLocalAudioSourceProvider(blink_track_)); |
source_provider_->SetSinkParamsForTesting(sink_params_); |
source_provider_->OnSetFormat(source_params_); |
} |
@@ -32,6 +53,7 @@ class WebRtcLocalAudioSourceProviderTest : public testing::Test { |
scoped_ptr<int16[]> source_data_; |
media::AudioParameters sink_params_; |
scoped_ptr<media::AudioBus> sink_bus_; |
+ blink::WebMediaStreamTrack blink_track_; |
scoped_ptr<WebRtcLocalAudioSourceProvider> source_provider_; |
}; |
@@ -91,4 +113,25 @@ TEST_F(WebRtcLocalAudioSourceProviderTest, VerifyDataFlow) { |
} |
} |
+TEST_F(WebRtcLocalAudioSourceProviderTest, |
+ DeleteSourceProviderBeforeStoppingTrack) { |
+ source_provider_.reset(); |
+ |
+ // Stop the audio track. |
+ WebRtcLocalAudioTrack* native_track = static_cast<WebRtcLocalAudioTrack*>( |
+ MediaStreamTrack::GetTrack(blink_track_)); |
+ native_track->Stop(); |
+} |
+ |
+TEST_F(WebRtcLocalAudioSourceProviderTest, |
+ StopTrackBeforeDeletingSourceProvider) { |
+ // Stop the audio track. |
+ WebRtcLocalAudioTrack* native_track = static_cast<WebRtcLocalAudioTrack*>( |
+ MediaStreamTrack::GetTrack(blink_track_)); |
+ native_track->Stop(); |
+ |
+ // Delete the source provider. |
+ source_provider_.reset(); |
+} |
+ |
} // namespace content |