| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "media/audio/audio_output_controller.h" | 5 #include "media/audio/audio_output_controller.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <vector> | 10 #include <vector> |
| 11 | 11 |
| 12 #include "base/bind.h" | 12 #include "base/bind.h" |
| 13 #include "base/environment.h" | 13 #include "base/environment.h" |
| 14 #include "base/location.h" | 14 #include "base/location.h" |
| 15 #include "base/logging.h" | 15 #include "base/logging.h" |
| 16 #include "base/macros.h" | 16 #include "base/macros.h" |
| 17 #include "base/memory/ref_counted.h" | 17 #include "base/memory/ref_counted.h" |
| 18 #include "base/run_loop.h" | 18 #include "base/run_loop.h" |
| 19 #include "base/single_thread_task_runner.h" | 19 #include "base/single_thread_task_runner.h" |
| 20 #include "base/test/test_message_loop.h" | 20 #include "base/test/test_message_loop.h" |
| 21 #include "base/threading/thread_task_runner_handle.h" | 21 #include "base/threading/thread_task_runner_handle.h" |
| 22 #include "base/time/time.h" | 22 #include "base/time/time.h" |
| 23 #include "media/audio/audio_device_description.h" | 23 #include "media/audio/audio_device_description.h" |
| 24 #include "media/audio/audio_source_diverter.h" | 24 #include "media/audio/audio_source_diverter.h" |
| 25 #include "media/audio/test_audio_thread.h" |
| 25 #include "media/base/audio_bus.h" | 26 #include "media/base/audio_bus.h" |
| 26 #include "media/base/audio_parameters.h" | 27 #include "media/base/audio_parameters.h" |
| 27 #include "testing/gmock/include/gmock/gmock.h" | 28 #include "testing/gmock/include/gmock/gmock.h" |
| 28 #include "testing/gtest/include/gtest/gtest.h" | 29 #include "testing/gtest/include/gtest/gtest.h" |
| 29 | 30 |
| 30 using ::testing::_; | 31 using ::testing::_; |
| 31 using ::testing::AtLeast; | 32 using ::testing::AtLeast; |
| 32 using ::testing::DoAll; | 33 using ::testing::DoAll; |
| 33 using ::testing::Invoke; | 34 using ::testing::Invoke; |
| 34 using ::testing::NotNull; | 35 using ::testing::NotNull; |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 105 arg0->Zero(); | 106 arg0->Zero(); |
| 106 // Note: To confirm the buffer will be populated in these tests, it's | 107 // Note: To confirm the buffer will be populated in these tests, it's |
| 107 // sufficient that only the first float in channel 0 is set to the value. | 108 // sufficient that only the first float in channel 0 is set to the value. |
| 108 arg0->channel(0)[0] = kBufferNonZeroData; | 109 arg0->channel(0)[0] = kBufferNonZeroData; |
| 109 } | 110 } |
| 110 | 111 |
| 111 class AudioOutputControllerTest : public testing::Test { | 112 class AudioOutputControllerTest : public testing::Test { |
| 112 public: | 113 public: |
| 113 AudioOutputControllerTest() | 114 AudioOutputControllerTest() |
| 114 : audio_manager_(AudioManager::CreateForTesting( | 115 : audio_manager_(AudioManager::CreateForTesting( |
| 115 base::ThreadTaskRunnerHandle::Get())) { | 116 base::MakeUnique<TestAudioThread>())) { |
| 116 base::RunLoop().RunUntilIdle(); | 117 base::RunLoop().RunUntilIdle(); |
| 117 } | 118 } |
| 118 | 119 |
| 119 ~AudioOutputControllerTest() override {} | 120 ~AudioOutputControllerTest() override { audio_manager_->Shutdown(); } |
| 120 | 121 |
| 121 protected: | 122 protected: |
| 122 void Create(int samples_per_packet) { | 123 void Create(int samples_per_packet) { |
| 123 params_ = AudioParameters( | 124 params_ = AudioParameters( |
| 124 AudioParameters::AUDIO_FAKE, kChannelLayout, | 125 AudioParameters::AUDIO_FAKE, kChannelLayout, |
| 125 kSampleRate, kBitsPerSample, samples_per_packet); | 126 kSampleRate, kBitsPerSample, samples_per_packet); |
| 126 | 127 |
| 127 if (params_.IsValid()) { | 128 if (params_.IsValid()) { |
| 128 EXPECT_CALL(mock_event_handler_, OnControllerCreated()); | 129 EXPECT_CALL(mock_event_handler_, OnControllerCreated()); |
| 129 } | 130 } |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 256 | 257 |
| 257 // These help make test sequences more readable. | 258 // These help make test sequences more readable. |
| 258 void DivertNeverPlaying() { Divert(false, 0); } | 259 void DivertNeverPlaying() { Divert(false, 0); } |
| 259 void DivertWillEventuallyBeTwicePlayed() { Divert(false, 2); } | 260 void DivertWillEventuallyBeTwicePlayed() { Divert(false, 2); } |
| 260 void DivertWhilePlaying() { Divert(true, 1); } | 261 void DivertWhilePlaying() { Divert(true, 1); } |
| 261 void RevertWasNotPlaying() { Revert(false); } | 262 void RevertWasNotPlaying() { Revert(false); } |
| 262 void RevertWhilePlaying() { Revert(true); } | 263 void RevertWhilePlaying() { Revert(true); } |
| 263 | 264 |
| 264 private: | 265 private: |
| 265 base::TestMessageLoop message_loop_; | 266 base::TestMessageLoop message_loop_; |
| 266 ScopedAudioManagerPtr audio_manager_; | 267 std::unique_ptr<AudioManager> audio_manager_; |
| 267 MockAudioOutputControllerEventHandler mock_event_handler_; | 268 MockAudioOutputControllerEventHandler mock_event_handler_; |
| 268 MockAudioOutputControllerSyncReader mock_sync_reader_; | 269 MockAudioOutputControllerSyncReader mock_sync_reader_; |
| 269 MockAudioOutputStream mock_stream_; | 270 MockAudioOutputStream mock_stream_; |
| 270 AudioParameters params_; | 271 AudioParameters params_; |
| 271 scoped_refptr<AudioOutputController> controller_; | 272 scoped_refptr<AudioOutputController> controller_; |
| 272 | 273 |
| 273 DISALLOW_COPY_AND_ASSIGN(AudioOutputControllerTest); | 274 DISALLOW_COPY_AND_ASSIGN(AudioOutputControllerTest); |
| 274 }; | 275 }; |
| 275 | 276 |
| 276 TEST_F(AudioOutputControllerTest, CreateAndClose) { | 277 TEST_F(AudioOutputControllerTest, CreateAndClose) { |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 383 // When diverted stream pulls data, it would trigger a push to sink. | 384 // When diverted stream pulls data, it would trigger a push to sink. |
| 384 EXPECT_CALL(mock_sink, OnDataCheck(kBufferNonZeroData)); | 385 EXPECT_CALL(mock_sink, OnDataCheck(kBufferNonZeroData)); |
| 385 ReadDivertedAudioData(); | 386 ReadDivertedAudioData(); |
| 386 | 387 |
| 387 StopDuplicating(&mock_sink); | 388 StopDuplicating(&mock_sink); |
| 388 RevertWhilePlaying(); | 389 RevertWhilePlaying(); |
| 389 Close(); | 390 Close(); |
| 390 } | 391 } |
| 391 | 392 |
| 392 } // namespace media | 393 } // namespace media |
| OLD | NEW |