Index: media/audio/android/audio_android_unittest.cc |
diff --git a/media/audio/android/audio_android_unittest.cc b/media/audio/android/audio_android_unittest.cc |
index 688a940bfbc11d0dc13390ac0bde8ec295f688d3..6c688366ad5ff82470c151ea3365fe165204b699 100644 |
--- a/media/audio/android/audio_android_unittest.cc |
+++ b/media/audio/android/audio_android_unittest.cc |
@@ -508,9 +508,11 @@ std::vector<bool> RunAudioRecordInputPathTests() { |
class AudioAndroidInputTest : public AudioAndroidOutputTest, |
public testing::WithParamInterface<bool> { |
public: |
- AudioAndroidInputTest() {} |
+ AudioAndroidInputTest() : audio_input_stream_(NULL) {} |
protected: |
+ AudioInputStream* audio_input_stream() { return audio_input_stream_; } |
+ |
AudioParameters GetInputStreamParameters() { |
AudioParameters input_params = audio_manager()->GetInputStreamParameters( |
AudioManagerBase::kDefaultDeviceId); |
@@ -567,8 +569,66 @@ class AudioAndroidInputTest : public AudioAndroidOutputTest, |
1.30 * expected_time_between_callbacks_ms); |
} |
+ // Calls CreateAndClose() on the audio thread. |
+ void CreateAndCloseAISOnAudioThread() { |
+ AudioParameters params = GetInputStreamParameters(); |
+ RunOnAudioThread( |
+ base::Bind(&AudioAndroidInputTest::CreateAndClose, |
+ base::Unretained(this), |
+ params)); |
+ } |
+ |
+ // Calls OpenAndClose() on the audio thread. |
+ void OpenAndCloseAISOnAudioThread() { |
+ AudioParameters params = GetInputStreamParameters(); |
+ RunOnAudioThread( |
+ base::Bind(&AudioAndroidInputTest::OpenAndClose, |
+ base::Unretained(this), |
+ params)); |
+ } |
+ |
+ void MakeInputStream(const AudioParameters& params) { |
+ audio_input_stream_ = audio_manager()->MakeAudioInputStream( |
+ params, AudioManagerBase::kDefaultDeviceId); |
+ EXPECT_TRUE(audio_input_stream_); |
+ } |
+ |
+ void CreateAndClose(const AudioParameters& params) { |
+ MakeInputStream(params); |
+ EXPECT_TRUE(audio_input_stream_->Open()); |
tommi (sloooow) - chröme
2014/01/30 17:34:19
I think this line should be in OpenAndClose and no
henrika (OOO until Aug 14)
2014/01/31 08:06:01
Ooops ;-) Thanks.
|
+ audio_input_stream_->Close(); |
+ } |
+ |
+ void OpenAndClose(const AudioParameters& params) { |
+ MakeInputStream(params); |
+ audio_input_stream_->Close(); |
+ } |
+ |
+ // Synchronously runs the provided callback/closure on the audio thread. |
+ void RunOnAudioThread(const base::Closure& closure) { |
+ if (!audio_manager()->GetTaskRunner()->BelongsToCurrentThread()) { |
+ base::WaitableEvent event(false, false); |
+ audio_manager()->GetTaskRunner()->PostTask( |
+ FROM_HERE, |
+ base::Bind(&AudioAndroidInputTest::RunOnAudioThreadImpl, |
+ base::Unretained(this), |
+ closure, |
+ &event)); |
+ event.Wait(); |
+ } else { |
+ closure.Run(); |
+ } |
+ } |
+ |
+ void RunOnAudioThreadImpl(const base::Closure& closure, |
+ base::WaitableEvent* event) { |
+ DCHECK(audio_manager()->GetTaskRunner()->BelongsToCurrentThread()); |
+ closure.Run(); |
+ event->Signal(); |
+ } |
private: |
+ AudioInputStream* audio_input_stream_; |
DISALLOW_COPY_AND_ASSIGN(AudioAndroidInputTest); |
}; |
@@ -618,11 +678,7 @@ TEST_F(AudioAndroidOutputTest, GetAudioOutputDeviceNames) { |
// Ensure that a default input stream can be created and closed. |
TEST_P(AudioAndroidInputTest, CreateAndCloseInputStream) { |
- AudioParameters params = GetInputStreamParameters(); |
- AudioInputStream* ais = audio_manager()->MakeAudioInputStream( |
- params, AudioManagerBase::kDefaultDeviceId); |
- EXPECT_TRUE(ais); |
- ais->Close(); |
+ CreateAndCloseAISOnAudioThread(); |
} |
// Ensure that a default output stream can be created and closed. |
@@ -639,12 +695,7 @@ TEST_F(AudioAndroidOutputTest, CreateAndCloseOutputStream) { |
// Ensure that a default input stream can be opened and closed. |
TEST_P(AudioAndroidInputTest, OpenAndCloseInputStream) { |
- AudioParameters params = GetInputStreamParameters(); |
- AudioInputStream* ais = audio_manager()->MakeAudioInputStream( |
- params, AudioManagerBase::kDefaultDeviceId); |
- EXPECT_TRUE(ais); |
- EXPECT_TRUE(ais->Open()); |
- ais->Close(); |
+ OpenAndCloseAISOnAudioThread(); |
} |
// Ensure that a default output stream can be opened and closed. |