| Index: media/audio/audio_manager_unittest.cc
|
| diff --git a/media/audio/audio_manager_unittest.cc b/media/audio/audio_manager_unittest.cc
|
| index 7635e645160c283a868ffffa39d56cf9c0cae6e1..1aac7bb35bef0bcb7865f8eb09f76692454374fb 100644
|
| --- a/media/audio/audio_manager_unittest.cc
|
| +++ b/media/audio/audio_manager_unittest.cc
|
| @@ -10,6 +10,7 @@
|
| #include "base/bind.h"
|
| #include "base/environment.h"
|
| #include "base/logging.h"
|
| +#include "base/memory/ptr_util.h"
|
| #include "base/run_loop.h"
|
| #include "base/strings/string_number_conversions.h"
|
| #include "base/synchronization/waitable_event.h"
|
| @@ -22,6 +23,7 @@
|
| #include "media/audio/audio_unittest_util.h"
|
| #include "media/audio/fake_audio_log_factory.h"
|
| #include "media/audio/fake_audio_manager.h"
|
| +#include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| #if defined(USE_ALSA)
|
| @@ -48,6 +50,7 @@
|
| namespace media {
|
|
|
| namespace {
|
| +
|
| template <typename T>
|
| struct TestAudioManagerFactory {
|
| static ScopedAudioManagerPtr Create(AudioLogFactory* audio_log_factory) {
|
| @@ -163,6 +166,13 @@ const AudioNode kUSBCameraMic(true,
|
| 0);
|
| #endif // defined(USE_CRAS)
|
|
|
| +// Dummy function that should never be called.
|
| +std::unique_ptr<AudioFileWriter> CreateAudioFileWriterDummy(
|
| + const AudioParameters& params) {
|
| + NOTREACHED();
|
| + return nullptr;
|
| +}
|
| +
|
| } // namespace
|
|
|
| // Test fixture which allows us to override the default enumeration API on
|
| @@ -552,6 +562,24 @@ TEST_F(AudioManagerTest, GetAssociatedOutputDeviceID) {
|
| }
|
| #endif // defined(USE_CRAS)
|
|
|
| +// Mock class to verify enable and disable calls.
|
| +class MockAudioDebugRecordingManager : public AudioDebugRecordingManager {
|
| + public:
|
| + MockAudioDebugRecordingManager(
|
| + AudioFileWriter::CreateCallback create_audio_file_writer_callback,
|
| + scoped_refptr<base::SingleThreadTaskRunner> task_runner)
|
| + : AudioDebugRecordingManager(std::move(create_audio_file_writer_callback),
|
| + std::move(task_runner)) {}
|
| +
|
| + ~MockAudioDebugRecordingManager() override {}
|
| +
|
| + MOCK_METHOD1(EnableDebugRecording, void(const base::FilePath&));
|
| + MOCK_METHOD0(DisableDebugRecording, void());
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(MockAudioDebugRecordingManager);
|
| +};
|
| +
|
| class TestAudioManager : public FakeAudioManager {
|
| // For testing the default implementation of GetGroupId(Input|Output)
|
| // input$i is associated to output$i, if both exist.
|
| @@ -592,6 +620,13 @@ class TestAudioManager : public FakeAudioManager {
|
| device_names->emplace_back("Output 4", "output4");
|
| device_names->push_front(AudioDeviceName::CreateDefault());
|
| }
|
| +
|
| + std::unique_ptr<AudioDebugRecordingManager> CreateAudioDebugRecordingManager(
|
| + AudioFileWriter::CreateCallback create_audio_file_writer_callback,
|
| + scoped_refptr<base::SingleThreadTaskRunner> task_runner) override {
|
| + return base::MakeUnique<MockAudioDebugRecordingManager>(
|
| + std::move(create_audio_file_writer_callback), std::move(task_runner));
|
| + }
|
| };
|
|
|
| TEST_F(AudioManagerTest, GroupId) {
|
| @@ -617,4 +652,32 @@ TEST_F(AudioManagerTest, GroupId) {
|
| EXPECT_NE(inputs[1].group_id, outputs[3].group_id);
|
| }
|
|
|
| +TEST_F(AudioManagerTest, AudioDebugRecording) {
|
| + CreateAudioManagerForTesting<TestAudioManager>();
|
| +
|
| + AudioManagerBase* audio_manager_base =
|
| + static_cast<AudioManagerBase*>(audio_manager_.get());
|
| +
|
| + // Should be OK to disable without initializing.
|
| + audio_manager_->DisableOutputDebugRecording();
|
| +
|
| + audio_manager_->InitializeOutputDebugRecording(
|
| + base::BindRepeating(&CreateAudioFileWriterDummy));
|
| +
|
| + MockAudioDebugRecordingManager* mock_debug_recording_manager =
|
| + static_cast<MockAudioDebugRecordingManager*>(
|
| + audio_manager_base->debug_recording_manager_.get());
|
| + ASSERT_TRUE(mock_debug_recording_manager);
|
| +
|
| + EXPECT_CALL(*mock_debug_recording_manager, DisableDebugRecording());
|
| + audio_manager_->DisableOutputDebugRecording();
|
| +
|
| + base::FilePath file_path(FILE_PATH_LITERAL("path"));
|
| + EXPECT_CALL(*mock_debug_recording_manager, EnableDebugRecording(file_path));
|
| + audio_manager_->EnableOutputDebugRecording(file_path);
|
| +
|
| + EXPECT_CALL(*mock_debug_recording_manager, DisableDebugRecording());
|
| + audio_manager_->DisableOutputDebugRecording();
|
| +}
|
| +
|
| } // namespace media
|
|
|