Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(232)

Unified Diff: media/audio/android/audio_android_unittest.cc

Issue 131503006: Initialization of audio manager for Android is now done on the audio thread (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: improved unit test pattern Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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.
« no previous file with comments | « content/browser/renderer_host/media/device_request_message_filter.cc ('k') | media/audio/android/audio_manager_android.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698