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 |