Index: content/renderer/media/webrtc_local_audio_track_unittest.cc |
diff --git a/content/renderer/media/webrtc_local_audio_track_unittest.cc b/content/renderer/media/webrtc_local_audio_track_unittest.cc |
index 4a02d35d2c1180c09ec719d2ef9b1bbff60c91e3..8c387bbe3e6c35d9d98515bf8b8b6ec8d2db6467 100644 |
--- a/content/renderer/media/webrtc_local_audio_track_unittest.cc |
+++ b/content/renderer/media/webrtc_local_audio_track_unittest.cc |
@@ -4,6 +4,7 @@ |
#include "base/synchronization/waitable_event.h" |
#include "base/test/test_timeouts.h" |
+#include "content/renderer/media/mock_media_constraint_factory.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_audio_device_impl.h" |
@@ -134,26 +135,32 @@ class MockMediaStreamAudioSink : public PeerConnectionAudioSink { |
int current_volume, |
bool need_audio_processing, |
bool key_pressed) OVERRIDE { |
+ EXPECT_EQ(params_.sample_rate(), sample_rate); |
+ EXPECT_EQ(params_.channels(), number_of_channels); |
+ EXPECT_EQ(params_.frames_per_buffer(), number_of_frames); |
CaptureData(channels.size(), |
- sample_rate, |
- number_of_channels, |
- number_of_frames, |
audio_delay_milliseconds, |
current_volume, |
need_audio_processing, |
key_pressed); |
return 0; |
} |
- MOCK_METHOD8(CaptureData, |
+ MOCK_METHOD5(CaptureData, |
void(int number_of_network_channels, |
- int sample_rate, |
- int number_of_channels, |
- int number_of_frames, |
int audio_delay_milliseconds, |
int current_volume, |
bool need_audio_processing, |
bool key_pressed)); |
- MOCK_METHOD1(OnSetFormat, void(const media::AudioParameters& params)); |
+ void OnSetFormat(const media::AudioParameters& params) { |
+ params_ = params; |
+ FormatIsSet(); |
+ } |
+ MOCK_METHOD0(FormatIsSet, void()); |
+ |
+ const media::AudioParameters& audio_params() const { return params_; } |
+ |
+ private: |
+ media::AudioParameters params_; |
}; |
} // namespace |
@@ -202,21 +209,16 @@ TEST_F(WebRtcLocalAudioTrackTest, ConnectAndDisconnectOneSink) { |
adapter.get())->GetRenderer()->AddChannel(i); |
} |
scoped_ptr<MockMediaStreamAudioSink> sink(new MockMediaStreamAudioSink()); |
- const media::AudioParameters params = capturer_->source_audio_parameters(); |
base::WaitableEvent event(false, false); |
- EXPECT_CALL(*sink, OnSetFormat(_)).WillOnce(Return()); |
+ EXPECT_CALL(*sink, FormatIsSet()); |
EXPECT_CALL(*sink, |
CaptureData(kNumberOfNetworkChannels, |
- params.sample_rate(), |
- params.channels(), |
- params.sample_rate() / 100, |
0, |
0, |
- true, |
+ _, |
false)).Times(AtLeast(1)) |
.WillRepeatedly(SignalEvent(&event)); |
track->AddSink(sink.get()); |
- |
EXPECT_TRUE(event.TimedWait(TestTimeouts::tiny_timeout())); |
track->RemoveSink(sink.get()); |
@@ -247,29 +249,17 @@ TEST_F(WebRtcLocalAudioTrackTest, DISABLED_DisableEnableAudioTrack) { |
scoped_ptr<MockMediaStreamAudioSink> sink(new MockMediaStreamAudioSink()); |
const media::AudioParameters params = capturer_->source_audio_parameters(); |
base::WaitableEvent event(false, false); |
- EXPECT_CALL(*sink, OnSetFormat(_)).Times(1); |
+ EXPECT_CALL(*sink, FormatIsSet()).Times(1); |
EXPECT_CALL(*sink, |
- CaptureData(1, |
- params.sample_rate(), |
- params.channels(), |
- params.sample_rate() / 100, |
- 0, |
- 0, |
- true, |
- false)).Times(0); |
+ CaptureData(1, 0, 0, _, false)).Times(0); |
+ EXPECT_EQ(sink->audio_params().frames_per_buffer(), |
+ params.sample_rate() / 100); |
track->AddSink(sink.get()); |
EXPECT_FALSE(event.TimedWait(TestTimeouts::tiny_timeout())); |
event.Reset(); |
EXPECT_CALL(*sink, |
- CaptureData(1, |
- params.sample_rate(), |
- params.channels(), |
- params.sample_rate() / 100, |
- 0, |
- 0, |
- true, |
- false)).Times(AtLeast(1)) |
+ CaptureData(1, 0, 0, _, false)).Times(AtLeast(1)) |
.WillRepeatedly(SignalEvent(&event)); |
EXPECT_TRUE(track->GetAudioAdapter()->set_enabled(true)); |
EXPECT_TRUE(event.TimedWait(TestTimeouts::tiny_timeout())); |
@@ -299,17 +289,12 @@ TEST_F(WebRtcLocalAudioTrackTest, DISABLED_MultipleAudioTracks) { |
scoped_ptr<MockMediaStreamAudioSink> sink_1(new MockMediaStreamAudioSink()); |
const media::AudioParameters params = capturer_->source_audio_parameters(); |
base::WaitableEvent event_1(false, false); |
- EXPECT_CALL(*sink_1, OnSetFormat(_)).WillOnce(Return()); |
+ EXPECT_CALL(*sink_1, FormatIsSet()).WillOnce(Return()); |
EXPECT_CALL(*sink_1, |
- CaptureData(1, |
- params.sample_rate(), |
- params.channels(), |
- params.sample_rate() / 100, |
- 0, |
- 0, |
- true, |
- false)).Times(AtLeast(1)) |
+ CaptureData(1, 0, 0, _, false)).Times(AtLeast(1)) |
.WillRepeatedly(SignalEvent(&event_1)); |
+ EXPECT_EQ(sink_1->audio_params().frames_per_buffer(), |
+ params.sample_rate() / 100); |
track_1->AddSink(sink_1.get()); |
EXPECT_TRUE(event_1.TimedWait(TestTimeouts::tiny_timeout())); |
@@ -329,27 +314,15 @@ TEST_F(WebRtcLocalAudioTrackTest, DISABLED_MultipleAudioTracks) { |
base::WaitableEvent event_2(false, false); |
scoped_ptr<MockMediaStreamAudioSink> sink_2(new MockMediaStreamAudioSink()); |
- EXPECT_CALL(*sink_2, OnSetFormat(_)).WillOnce(Return()); |
- EXPECT_CALL(*sink_1, |
- CaptureData(1, |
- params.sample_rate(), |
- params.channels(), |
- params.sample_rate() / 100, |
- 0, |
- 0, |
- true, |
- false)).Times(AtLeast(1)) |
+ EXPECT_CALL(*sink_2, FormatIsSet()).WillOnce(Return()); |
+ EXPECT_CALL(*sink_1, CaptureData(1, 0, 0, _, false)).Times(AtLeast(1)) |
.WillRepeatedly(SignalEvent(&event_1)); |
- EXPECT_CALL(*sink_2, |
- CaptureData(1, |
- params.sample_rate(), |
- params.channels(), |
- params.sample_rate() / 100, |
- 0, |
- 0, |
- true, |
- false)).Times(AtLeast(1)) |
+ EXPECT_EQ(sink_1->audio_params().frames_per_buffer(), |
+ params.sample_rate() / 100); |
+ EXPECT_CALL(*sink_2, CaptureData(1, 0, 0, _, false)).Times(AtLeast(1)) |
.WillRepeatedly(SignalEvent(&event_2)); |
+ EXPECT_EQ(sink_2->audio_params().frames_per_buffer(), |
+ params.sample_rate() / 100); |
track_2->AddSink(sink_2.get()); |
EXPECT_TRUE(event_1.TimedWait(TestTimeouts::tiny_timeout())); |
EXPECT_TRUE(event_2.TimedWait(TestTimeouts::tiny_timeout())); |
@@ -408,8 +381,8 @@ TEST_F(WebRtcLocalAudioTrackTest, StartAndStopAudioTracks) { |
// Verify the data flow by connecting the sink to |track_1|. |
scoped_ptr<MockMediaStreamAudioSink> sink(new MockMediaStreamAudioSink()); |
event.Reset(); |
- EXPECT_CALL(*sink, OnSetFormat(_)).WillOnce(SignalEvent(&event)); |
- EXPECT_CALL(*sink, CaptureData(_, _, _, _, 0, 0, true, false)) |
+ EXPECT_CALL(*sink, FormatIsSet()).WillOnce(SignalEvent(&event)); |
+ EXPECT_CALL(*sink, CaptureData(_, 0, 0, _, false)) |
.Times(AnyNumber()).WillRepeatedly(Return()); |
track_1->AddSink(sink.get()); |
EXPECT_TRUE(event.TimedWait(TestTimeouts::tiny_timeout())); |
@@ -433,7 +406,7 @@ TEST_F(WebRtcLocalAudioTrackTest, StartAndStopAudioTracks) { |
// Adding a new track to the capturer. |
track_2->AddSink(sink.get()); |
- EXPECT_CALL(*sink, OnSetFormat(_)).Times(0); |
+ EXPECT_CALL(*sink, FormatIsSet()).Times(0); |
// Stop the capturer again will not trigger stopping the source of the |
// capturer again.. |
@@ -463,12 +436,11 @@ TEST_F(WebRtcLocalAudioTrackTest, ConnectTracksToDifferentCapturers) { |
} |
// Verify the data flow by connecting the |sink_1| to |track_1|. |
scoped_ptr<MockMediaStreamAudioSink> sink_1(new MockMediaStreamAudioSink()); |
- EXPECT_CALL( |
- *sink_1.get(), |
- CaptureData( |
- kNumberOfNetworkChannelsForTrack1, 48000, 2, _, 0, 0, true, false)) |
+ EXPECT_CALL(*sink_1.get(), |
+ CaptureData(kNumberOfNetworkChannelsForTrack1, |
+ 0, 0, _, false)) |
.Times(AnyNumber()).WillRepeatedly(Return()); |
- EXPECT_CALL(*sink_1.get(), OnSetFormat(_)).Times(AnyNumber()); |
+ EXPECT_CALL(*sink_1.get(), FormatIsSet()).Times(AnyNumber()); |
track_1->AddSink(sink_1.get()); |
// Create a new capturer with new source with different audio format. |
@@ -505,13 +477,10 @@ TEST_F(WebRtcLocalAudioTrackTest, ConnectTracksToDifferentCapturers) { |
// Verify the data flow by connecting the |sink_2| to |track_2|. |
scoped_ptr<MockMediaStreamAudioSink> sink_2(new MockMediaStreamAudioSink()); |
base::WaitableEvent event(false, false); |
- EXPECT_CALL( |
- *sink_2, |
- CaptureData( |
- kNumberOfNetworkChannelsForTrack2, new_param.sample_rate(), |
- new_param.channels(), _, 0, 0, true, false)) |
+ EXPECT_CALL(*sink_2, |
+ CaptureData(kNumberOfNetworkChannelsForTrack2, 0, 0, _, false)) |
.Times(AnyNumber()).WillRepeatedly(Return()); |
- EXPECT_CALL(*sink_2, OnSetFormat(_)).WillOnce(SignalEvent(&event)); |
+ EXPECT_CALL(*sink_2, FormatIsSet()).WillOnce(SignalEvent(&event)); |
track_2->AddSink(sink_2.get()); |
EXPECT_TRUE(event.TimedWait(TestTimeouts::tiny_timeout())); |
@@ -536,7 +505,8 @@ TEST_F(WebRtcLocalAudioTrackTest, TrackWorkWithSmallBufferSize) { |
media::CHANNEL_LAYOUT_STEREO, 48000, 16, 128); |
// Create a capturer with new source which works with the format above. |
- blink::WebMediaConstraints constraints; |
+ MockMediaConstraintFactory factory; |
+ factory.DisableDefaultAudioConstraints(); |
scoped_refptr<WebRtcAudioCapturer> capturer( |
WebRtcAudioCapturer::CreateCapturer( |
-1, |
@@ -544,7 +514,7 @@ TEST_F(WebRtcLocalAudioTrackTest, TrackWorkWithSmallBufferSize) { |
"", "", params.sample_rate(), |
params.channel_layout(), |
params.frames_per_buffer()), |
- constraints, |
+ factory.CreateWebMediaConstraints(), |
NULL)); |
scoped_refptr<MockCapturerSource> source( |
new MockCapturerSource(capturer.get())); |
@@ -565,7 +535,7 @@ TEST_F(WebRtcLocalAudioTrackTest, TrackWorkWithSmallBufferSize) { |
// Verify the data flow by connecting the |sink| to |track|. |
scoped_ptr<MockMediaStreamAudioSink> sink(new MockMediaStreamAudioSink()); |
base::WaitableEvent event(false, false); |
- EXPECT_CALL(*sink, OnSetFormat(_)).Times(1); |
+ EXPECT_CALL(*sink, FormatIsSet()).Times(1); |
// Verify the sinks are getting the packets with an expecting buffer size. |
#if defined(OS_ANDROID) |
const int expected_buffer_size = params.sample_rate() / 100; |
@@ -573,11 +543,11 @@ TEST_F(WebRtcLocalAudioTrackTest, TrackWorkWithSmallBufferSize) { |
const int expected_buffer_size = params.frames_per_buffer(); |
#endif |
EXPECT_CALL(*sink, CaptureData( |
- 0, params.sample_rate(), params.channels(), expected_buffer_size, |
- 0, 0, true, false)) |
+ 0, 0, 0, _, false)) |
.Times(AtLeast(1)).WillRepeatedly(SignalEvent(&event)); |
track->AddSink(sink.get()); |
EXPECT_TRUE(event.TimedWait(TestTimeouts::tiny_timeout())); |
+ EXPECT_EQ(expected_buffer_size, sink->audio_params().frames_per_buffer()); |
// Stopping the new source will stop the second track. |
EXPECT_CALL(*source, OnStop()).Times(1); |