Chromium Code Reviews| 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..8fdc7d00b7fa1c702f25afbc7b6c5d4d77cbe9d9 100644 |
| --- a/media/audio/android/audio_android_unittest.cc |
| +++ b/media/audio/android/audio_android_unittest.cc |
| @@ -508,9 +508,13 @@ std::vector<bool> RunAudioRecordInputPathTests() { |
| class AudioAndroidInputTest : public AudioAndroidOutputTest, |
| public testing::WithParamInterface<bool> { |
| public: |
| - AudioAndroidInputTest() {} |
| + AudioAndroidInputTest() |
| + : event_(false, false), |
| + 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 +571,26 @@ class AudioAndroidInputTest : public AudioAndroidOutputTest, |
| 1.30 * expected_time_between_callbacks_ms); |
| } |
| + void CreateAndCloseAISOnAudioThread(const AudioParameters& params) { |
| + if (!audio_manager()->GetTaskRunner()->BelongsToCurrentThread()) { |
| + audio_manager()->GetTaskRunner()->PostTask( |
| + FROM_HERE, |
| + base::Bind(&AudioAndroidInputTest::CreateAndCloseAISOnAudioThread, |
| + base::Unretained(this), |
| + params)); |
| + event_.Wait(); |
| + } else { |
| + audio_input_stream_ = audio_manager()->MakeAudioInputStream( |
| + params, AudioManagerBase::kDefaultDeviceId); |
| + EXPECT_TRUE(audio_input_stream_); |
| + audio_input_stream_->Close(); |
| + event_.Signal(); |
| + } |
| + } |
| private: |
| + base::WaitableEvent event_; |
|
tommi (sloooow) - chröme
2014/01/30 15:26:04
This pattern is racy and could throw TSAN off.
Cre
henrika (OOO until Aug 14)
2014/01/30 17:20:23
Uploaded new and improved version after offline di
|
| + AudioInputStream* audio_input_stream_; |
| DISALLOW_COPY_AND_ASSIGN(AudioAndroidInputTest); |
| }; |
| @@ -619,10 +641,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(params); |
| } |
| // Ensure that a default output stream can be created and closed. |