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 |