| Index: media/audio/audio_output_controller_unittest.cc
|
| diff --git a/media/audio/audio_output_controller_unittest.cc b/media/audio/audio_output_controller_unittest.cc
|
| index 700ee334a5e6c221283d447b92c64d180fcc4827..49ee34268cc458d224ee1ed6ffa6b93217f84580 100644
|
| --- a/media/audio/audio_output_controller_unittest.cc
|
| +++ b/media/audio/audio_output_controller_unittest.cc
|
| @@ -11,6 +11,8 @@
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| +// TODO(vrk): These tests need to be rewritten! (crbug.com/112500)
|
| +
|
| using ::testing::_;
|
| using ::testing::AtLeast;
|
| using ::testing::DoAll;
|
| @@ -25,7 +27,6 @@ static const ChannelLayout kChannelLayout = CHANNEL_LAYOUT_STEREO;
|
| static const int kSamplesPerPacket = kSampleRate / 10;
|
| static const int kHardwareBufferSize = kSamplesPerPacket *
|
| ChannelLayoutToChannelCount(kChannelLayout) * kBitsPerSample / 8;
|
| -static const int kBufferCapacity = 3 * kHardwareBufferSize;
|
|
|
| namespace media {
|
|
|
| @@ -39,8 +40,6 @@ class MockAudioOutputControllerEventHandler
|
| MOCK_METHOD1(OnPaused, void(AudioOutputController* controller));
|
| MOCK_METHOD2(OnError, void(AudioOutputController* controller,
|
| int error_code));
|
| - MOCK_METHOD2(OnMoreData, void(AudioOutputController* controller,
|
| - AudioBuffersState buffers_state));
|
|
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(MockAudioOutputControllerEventHandler);
|
| @@ -81,114 +80,18 @@ TEST(AudioOutputControllerTest, CreateAndClose) {
|
|
|
| EXPECT_CALL(event_handler, OnCreated(NotNull()))
|
| .Times(1);
|
| - EXPECT_CALL(event_handler, OnMoreData(NotNull(), _));
|
| -
|
| - AudioParameters params(AudioParameters::AUDIO_PCM_LINEAR, kChannelLayout,
|
| - kSampleRate, kBitsPerSample, kSamplesPerPacket);
|
| - scoped_refptr<AudioOutputController> controller =
|
| - AudioOutputController::Create(audio_manager, &event_handler, params,
|
| - kBufferCapacity);
|
| - ASSERT_TRUE(controller.get());
|
| -
|
| - // Close the controller immediately.
|
| - CloseAudioController(controller);
|
| -}
|
| -
|
| -TEST(AudioOutputControllerTest, PlayAndClose) {
|
| - scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
|
| - if (!audio_manager->HasAudioOutputDevices())
|
| - return;
|
| -
|
| - MockAudioOutputControllerEventHandler event_handler;
|
| - base::WaitableEvent event(false, false);
|
| -
|
| - // If OnCreated is called then signal the event.
|
| - EXPECT_CALL(event_handler, OnCreated(NotNull()))
|
| - .WillOnce(SignalEvent(&event));
|
| -
|
| - // OnPlaying() will be called only once.
|
| - EXPECT_CALL(event_handler, OnPlaying(NotNull()))
|
| - .Times(Exactly(1));
|
| -
|
| - // If OnMoreData is called enough then signal the event.
|
| - EXPECT_CALL(event_handler, OnMoreData(NotNull(), _))
|
| - .Times(AtLeast(10))
|
| - .WillRepeatedly(SignalEvent(&event));
|
| -
|
| - AudioParameters params(AudioParameters::AUDIO_PCM_LINEAR, kChannelLayout,
|
| - kSampleRate, kBitsPerSample, kSamplesPerPacket);
|
| - scoped_refptr<AudioOutputController> controller =
|
| - AudioOutputController::Create(audio_manager, &event_handler, params,
|
| - kBufferCapacity);
|
| - ASSERT_TRUE(controller.get());
|
| -
|
| - // Wait for OnCreated() to be called.
|
| - event.Wait();
|
| -
|
| - controller->Play();
|
| -
|
| - // Wait until the date is requested at least 10 times.
|
| - for (int i = 0; i < 10; i++) {
|
| - event.Wait();
|
| - uint8 buf[1];
|
| - controller->EnqueueData(buf, 0);
|
| - }
|
| -
|
| - // Now stop the controller.
|
| - CloseAudioController(controller);
|
| -}
|
| -
|
| -TEST(AudioOutputControllerTest, PlayAndCloseLowLatency) {
|
| - scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
|
| - if (!audio_manager->HasAudioOutputDevices())
|
| - return;
|
| -
|
| - MockAudioOutputControllerEventHandler event_handler;
|
| - base::WaitableEvent event(false, false);
|
| -
|
| - // If OnCreated is called then signal the event.
|
| - EXPECT_CALL(event_handler, OnCreated(NotNull()))
|
| - .WillOnce(SignalEvent(&event));
|
| -
|
| - // OnPlaying() will be called only once.
|
| - EXPECT_CALL(event_handler, OnPlaying(NotNull()))
|
| - .Times(Exactly(1));
|
|
|
| MockAudioOutputControllerSyncReader sync_reader;
|
| - EXPECT_CALL(sync_reader, UpdatePendingBytes(_))
|
| - .Times(AtLeast(10));
|
| - EXPECT_CALL(sync_reader, DataReady())
|
| - .WillOnce(Return(false))
|
| - .WillOnce(Return(false))
|
| - .WillRepeatedly(Return(true));
|
| - EXPECT_CALL(sync_reader, Read(_, kHardwareBufferSize))
|
| - .Times(AtLeast(10))
|
| - .WillRepeatedly(DoAll(SignalEvent(&event),
|
| - Return(4)));
|
| EXPECT_CALL(sync_reader, Close());
|
|
|
| AudioParameters params(AudioParameters::AUDIO_PCM_LINEAR, kChannelLayout,
|
| kSampleRate, kBitsPerSample, kSamplesPerPacket);
|
| scoped_refptr<AudioOutputController> controller =
|
| - AudioOutputController::CreateLowLatency(audio_manager,
|
| - &event_handler,
|
| - params,
|
| - &sync_reader);
|
| + AudioOutputController::Create(
|
| + audio_manager, &event_handler, params, &sync_reader);
|
| ASSERT_TRUE(controller.get());
|
|
|
| - // Wait for OnCreated() to be called.
|
| - event.Wait();
|
| -
|
| - controller->Play();
|
| -
|
| - // Wait until the date is requested at least 10 times.
|
| - for (int i = 0; i < 10; i++) {
|
| - event.Wait();
|
| - uint8 buf[1];
|
| - controller->EnqueueData(buf, 0);
|
| - }
|
| -
|
| - // Now stop the controller.
|
| + // Close the controller immediately.
|
| CloseAudioController(controller);
|
| }
|
|
|
| @@ -203,62 +106,6 @@ TEST(AudioOutputControllerTest, PlayPauseClose) {
|
|
|
| // If OnCreated is called then signal the event.
|
| EXPECT_CALL(event_handler, OnCreated(NotNull()))
|
| - .Times(Exactly(1))
|
| - .WillOnce(InvokeWithoutArgs(&event, &base::WaitableEvent::Signal));
|
| -
|
| - // OnPlaying() will be called only once.
|
| - EXPECT_CALL(event_handler, OnPlaying(NotNull()))
|
| - .Times(Exactly(1));
|
| -
|
| - // If OnMoreData is called enough then signal the event.
|
| - EXPECT_CALL(event_handler, OnMoreData(NotNull(), _))
|
| - .Times(AtLeast(10))
|
| - .WillRepeatedly(SignalEvent(&event));
|
| -
|
| - // And then OnPaused() will be called.
|
| - EXPECT_CALL(event_handler, OnPaused(NotNull()))
|
| - .Times(Exactly(1))
|
| - .WillOnce(InvokeWithoutArgs(&pause_event, &base::WaitableEvent::Signal));
|
| -
|
| - AudioParameters params(AudioParameters::AUDIO_PCM_LINEAR, kChannelLayout,
|
| - kSampleRate, kBitsPerSample, kSamplesPerPacket);
|
| - scoped_refptr<AudioOutputController> controller =
|
| - AudioOutputController::Create(audio_manager, &event_handler, params,
|
| - kBufferCapacity);
|
| - ASSERT_TRUE(controller.get());
|
| -
|
| - // Wait for OnCreated() to be called.
|
| - event.Wait();
|
| -
|
| - controller->Play();
|
| -
|
| - // Wait until the date is requested at least 10 times.
|
| - for (int i = 0; i < 10; i++) {
|
| - event.Wait();
|
| - uint8 buf[1];
|
| - controller->EnqueueData(buf, 0);
|
| - }
|
| -
|
| - // And then wait for pause to complete.
|
| - ASSERT_FALSE(pause_event.IsSignaled());
|
| - controller->Pause();
|
| - pause_event.Wait();
|
| -
|
| - // Now stop the controller.
|
| - CloseAudioController(controller);
|
| -}
|
| -
|
| -TEST(AudioOutputControllerTest, PlayPauseCloseLowLatency) {
|
| - scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
|
| - if (!audio_manager->HasAudioOutputDevices())
|
| - return;
|
| -
|
| - MockAudioOutputControllerEventHandler event_handler;
|
| - base::WaitableEvent event(false, false);
|
| - base::WaitableEvent pause_event(false, false);
|
| -
|
| - // If OnCreated is called then signal the event.
|
| - EXPECT_CALL(event_handler, OnCreated(NotNull()))
|
| .WillOnce(InvokeWithoutArgs(&event, &base::WaitableEvent::Signal));
|
|
|
| // OnPlaying() will be called only once.
|
| @@ -277,10 +124,8 @@ TEST(AudioOutputControllerTest, PlayPauseCloseLowLatency) {
|
| AudioParameters params(AudioParameters::AUDIO_PCM_LINEAR, kChannelLayout,
|
| kSampleRate, kBitsPerSample, kSamplesPerPacket);
|
| scoped_refptr<AudioOutputController> controller =
|
| - AudioOutputController::CreateLowLatency(audio_manager,
|
| - &event_handler,
|
| - params,
|
| - &sync_reader);
|
| + AudioOutputController::Create(
|
| + audio_manager, &event_handler, params, &sync_reader);
|
| ASSERT_TRUE(controller.get());
|
|
|
| // Wait for OnCreated() to be called.
|
| @@ -295,77 +140,6 @@ TEST(AudioOutputControllerTest, PlayPauseCloseLowLatency) {
|
| CloseAudioController(controller);
|
| }
|
|
|
| -TEST(AudioOutputControllerTest, PlayPausePlay) {
|
| - scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
|
| - if (!audio_manager->HasAudioOutputDevices())
|
| - return;
|
| -
|
| - MockAudioOutputControllerEventHandler event_handler;
|
| - base::WaitableEvent event(false, false);
|
| - base::WaitableEvent pause_event(false, false);
|
| -
|
| - // If OnCreated is called then signal the event.
|
| - EXPECT_CALL(event_handler, OnCreated(NotNull()))
|
| - .Times(Exactly(1))
|
| - .WillOnce(InvokeWithoutArgs(&event, &base::WaitableEvent::Signal));
|
| -
|
| - // OnPlaying() will be called only once.
|
| - EXPECT_CALL(event_handler, OnPlaying(NotNull()))
|
| - .Times(Exactly(1))
|
| - .RetiresOnSaturation();
|
| -
|
| - // If OnMoreData() is called enough then signal the event.
|
| - EXPECT_CALL(event_handler, OnMoreData(NotNull(), _))
|
| - .Times(AtLeast(1))
|
| - .WillRepeatedly(SignalEvent(&event));
|
| -
|
| - // And then OnPaused() will be called.
|
| - EXPECT_CALL(event_handler, OnPaused(NotNull()))
|
| - .Times(Exactly(1))
|
| - .WillOnce(InvokeWithoutArgs(&pause_event, &base::WaitableEvent::Signal));
|
| -
|
| - // OnPlaying() will be called only once.
|
| - EXPECT_CALL(event_handler, OnPlaying(NotNull()))
|
| - .Times(Exactly(1))
|
| - .RetiresOnSaturation();
|
| -
|
| - AudioParameters params(AudioParameters::AUDIO_PCM_LINEAR, kChannelLayout,
|
| - kSampleRate, kBitsPerSample, kSamplesPerPacket);
|
| - scoped_refptr<AudioOutputController> controller =
|
| - AudioOutputController::Create(audio_manager, &event_handler, params,
|
| - kBufferCapacity);
|
| - ASSERT_TRUE(controller.get());
|
| -
|
| - // Wait for OnCreated() to be called.
|
| - event.Wait();
|
| -
|
| - controller->Play();
|
| -
|
| - // Wait until the date is requested at least 10 times.
|
| - for (int i = 0; i < 10; i++) {
|
| - event.Wait();
|
| - uint8 buf[1];
|
| - controller->EnqueueData(buf, 0);
|
| - }
|
| -
|
| - // And then wait for pause to complete.
|
| - ASSERT_FALSE(pause_event.IsSignaled());
|
| - controller->Pause();
|
| - pause_event.Wait();
|
| -
|
| - // Then we play again.
|
| - controller->Play();
|
| -
|
| - // Wait until the date is requested at least 10 times.
|
| - for (int i = 0; i < 10; i++) {
|
| - event.Wait();
|
| - uint8 buf[1];
|
| - controller->EnqueueData(buf, 0);
|
| - }
|
| -
|
| - // Now stop the controller.
|
| - CloseAudioController(controller);
|
| -}
|
|
|
| TEST(AudioOutputControllerTest, HardwareBufferTooLarge) {
|
| scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
|
| @@ -374,58 +148,18 @@ TEST(AudioOutputControllerTest, HardwareBufferTooLarge) {
|
|
|
| // Create an audio device with a very large hardware buffer size.
|
| MockAudioOutputControllerEventHandler event_handler;
|
| +
|
| + MockAudioOutputControllerSyncReader sync_reader;
|
| AudioParameters params(AudioParameters::AUDIO_PCM_LINEAR, kChannelLayout,
|
| kSampleRate, kBitsPerSample,
|
| kSamplesPerPacket * 1000);
|
| scoped_refptr<AudioOutputController> controller =
|
| - AudioOutputController::Create(audio_manager, &event_handler, params,
|
| - kBufferCapacity);
|
| + AudioOutputController::Create(
|
| + audio_manager, &event_handler, params, &sync_reader);
|
|
|
| // Use assert because we don't stop the device and assume we can't
|
| // create one.
|
| ASSERT_FALSE(controller);
|
| }
|
|
|
| -TEST(AudioOutputControllerTest, CloseTwice) {
|
| - scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
|
| - if (!audio_manager->HasAudioOutputDevices())
|
| - return;
|
| -
|
| - MockAudioOutputControllerEventHandler event_handler;
|
| - base::WaitableEvent event(false, false);
|
| -
|
| - // If OnCreated is called then signal the event.
|
| - EXPECT_CALL(event_handler, OnCreated(NotNull()))
|
| - .WillOnce(SignalEvent(&event));
|
| -
|
| - // One OnMoreData() is expected.
|
| - EXPECT_CALL(event_handler, OnMoreData(NotNull(), _))
|
| - .Times(AtLeast(1))
|
| - .WillRepeatedly(SignalEvent(&event));
|
| -
|
| - AudioParameters params(AudioParameters::AUDIO_PCM_LINEAR, kChannelLayout,
|
| - kSampleRate, kBitsPerSample, kSamplesPerPacket);
|
| - scoped_refptr<AudioOutputController> controller =
|
| - AudioOutputController::Create(audio_manager, &event_handler, params,
|
| - kBufferCapacity);
|
| - ASSERT_TRUE(controller.get());
|
| -
|
| - // Wait for OnCreated() to be called.
|
| - event.Wait();
|
| -
|
| - // Wait for OnMoreData() to be called.
|
| - event.Wait();
|
| -
|
| - base::WaitableEvent closed_event_1(true, false);
|
| - controller->Close(base::Bind(&base::WaitableEvent::Signal,
|
| - base::Unretained(&closed_event_1)));
|
| -
|
| - base::WaitableEvent closed_event_2(true, false);
|
| - controller->Close(base::Bind(&base::WaitableEvent::Signal,
|
| - base::Unretained(&closed_event_2)));
|
| -
|
| - closed_event_1.Wait();
|
| - closed_event_2.Wait();
|
| -}
|
| -
|
| } // namespace media
|
|
|