| Index: content/browser/renderer_host/media/audio_output_device_enumerator_unittest.cc
|
| diff --git a/content/browser/renderer_host/media/audio_output_device_enumerator_unittest.cc b/content/browser/renderer_host/media/audio_output_device_enumerator_unittest.cc
|
| index de1aa34bc644d47b0926b3effa9c100f4339a862..ac6140cbb0153b7201cebf06f2443c5798c68a30 100644
|
| --- a/content/browser/renderer_host/media/audio_output_device_enumerator_unittest.cc
|
| +++ b/content/browser/renderer_host/media/audio_output_device_enumerator_unittest.cc
|
| @@ -11,6 +11,7 @@
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/run_loop.h"
|
| #include "base/single_thread_task_runner.h"
|
| +#include "base/strings/string_number_conversions.h"
|
| #include "base/thread_task_runner_handle.h"
|
| #include "content/browser/renderer_host/media/audio_output_device_enumerator.h"
|
| #include "content/public/test/test_browser_thread_bundle.h"
|
| @@ -25,24 +26,62 @@ using testing::_;
|
| namespace content {
|
|
|
| namespace {
|
| +
|
| class MockAudioManager : public media::FakeAudioManager {
|
| public:
|
| - MockAudioManager() : FakeAudioManager(&fake_audio_log_factory_) {}
|
| + MockAudioManager(size_t num_devices)
|
| + : FakeAudioManager(&fake_audio_log_factory_), num_devices_(num_devices) {}
|
| + MockAudioManager() : MockAudioManager(0) {}
|
| ~MockAudioManager() override {}
|
| - MOCK_METHOD1(GetAudioOutputDeviceNames, void(media::AudioDeviceNames*));
|
| +
|
| + MOCK_METHOD1(MockGetAudioOutputDeviceNames, void(media::AudioDeviceNames*));
|
| +
|
| + void GetAudioOutputDeviceNames(
|
| + media::AudioDeviceNames* device_names) override {
|
| + DCHECK(device_names->empty());
|
| + MockGetAudioOutputDeviceNames(device_names);
|
| + if (num_devices_ > 0) {
|
| + device_names->push_back(
|
| + media::AudioDeviceName(AudioManager::GetDefaultDeviceName(),
|
| + AudioManagerBase::kDefaultDeviceId));
|
| + for (size_t i = 0; i < num_devices_; i++) {
|
| + device_names->push_back(
|
| + media::AudioDeviceName("FakeDeviceName_" + base::IntToString(i),
|
| + "FakeDeviceId_" + base::IntToString(i)));
|
| + }
|
| + }
|
| + }
|
|
|
| private:
|
| media::FakeAudioLogFactory fake_audio_log_factory_;
|
| + size_t num_devices_;
|
| DISALLOW_COPY_AND_ASSIGN(MockAudioManager);
|
| };
|
| +
|
| +// Fake audio manager that exposes only the default device
|
| +class OnlyDefaultDeviceAudioManager : public MockAudioManager {
|
| + public:
|
| + OnlyDefaultDeviceAudioManager() {}
|
| + ~OnlyDefaultDeviceAudioManager() override {}
|
| + void GetAudioOutputDeviceNames(
|
| + media::AudioDeviceNames* device_names) override {
|
| + DCHECK(device_names->empty());
|
| + MockGetAudioOutputDeviceNames(device_names);
|
| + device_names->push_front(
|
| + media::AudioDeviceName(AudioManager::GetDefaultDeviceName(),
|
| + AudioManagerBase::kDefaultDeviceId));
|
| + }
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(OnlyDefaultDeviceAudioManager);
|
| +};
|
| +
|
| } // namespace
|
|
|
| class AudioOutputDeviceEnumeratorTest : public ::testing::Test {
|
| public:
|
| AudioOutputDeviceEnumeratorTest()
|
| - : thread_bundle_(), task_runner_(base::ThreadTaskRunnerHandle::Get()) {
|
| - audio_manager_.reset(new MockAudioManager());
|
| - }
|
| + : thread_bundle_(), task_runner_(base::ThreadTaskRunnerHandle::Get()) {}
|
|
|
| ~AudioOutputDeviceEnumeratorTest() override {}
|
|
|
| @@ -65,6 +104,14 @@ class AudioOutputDeviceEnumeratorTest : public ::testing::Test {
|
| }
|
| }
|
|
|
| + void EnumerateCountCallback(size_t num_entries_expected,
|
| + bool actual_devices_expected,
|
| + const AudioOutputDeviceEnumeration& result) {
|
| + EXPECT_EQ(actual_devices_expected, result.has_actual_devices);
|
| + EXPECT_EQ(num_entries_expected, result.devices.size());
|
| + task_runner_->PostTask(FROM_HERE, run_loop_.QuitClosure());
|
| + }
|
| +
|
| void QuitCallback(const AudioOutputDeviceEnumeration& result) {
|
| MockCallback(result);
|
| task_runner_->PostTask(FROM_HERE, run_loop_.QuitClosure());
|
| @@ -82,7 +129,8 @@ class AudioOutputDeviceEnumeratorTest : public ::testing::Test {
|
|
|
| TEST_F(AudioOutputDeviceEnumeratorTest, EnumerateWithCache) {
|
| const int num_calls = 10;
|
| - EXPECT_CALL(*audio_manager_, GetAudioOutputDeviceNames(_)).Times(1);
|
| + audio_manager_.reset(new MockAudioManager());
|
| + EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(1);
|
| EXPECT_CALL(*this, MockCallback(_)).Times(num_calls);
|
| AudioOutputDeviceEnumerator enumerator(
|
| audio_manager_.get(),
|
| @@ -95,7 +143,9 @@ TEST_F(AudioOutputDeviceEnumeratorTest, EnumerateWithCache) {
|
|
|
| TEST_F(AudioOutputDeviceEnumeratorTest, EnumerateWithNoCache) {
|
| const int num_calls = 10;
|
| - EXPECT_CALL(*audio_manager_, GetAudioOutputDeviceNames(_)).Times(num_calls);
|
| + audio_manager_.reset(new MockAudioManager());
|
| + EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_))
|
| + .Times(num_calls);
|
| EXPECT_CALL(*this, MockCallback(_)).Times(num_calls);
|
| AudioOutputDeviceEnumerator enumerator(
|
| audio_manager_.get(),
|
| @@ -106,4 +156,54 @@ TEST_F(AudioOutputDeviceEnumeratorTest, EnumerateWithNoCache) {
|
| run_loop_.Run();
|
| }
|
|
|
| +TEST_F(AudioOutputDeviceEnumeratorTest, EnumerateNoDevices) {
|
| + audio_manager_.reset(new MockAudioManager());
|
| + EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_));
|
| + AudioOutputDeviceEnumerator enumerator(
|
| + audio_manager_.get(),
|
| + AudioOutputDeviceEnumerator::CACHE_POLICY_NO_CACHING);
|
| + enumerator.Enumerate(
|
| + base::Bind(&AudioOutputDeviceEnumeratorTest::EnumerateCountCallback,
|
| + base::Unretained(this), 1, false));
|
| + run_loop_.Run();
|
| +}
|
| +
|
| +TEST_F(AudioOutputDeviceEnumeratorTest, EnumerateOnlyDefaultDevice) {
|
| + audio_manager_.reset(new OnlyDefaultDeviceAudioManager());
|
| + EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_));
|
| + AudioOutputDeviceEnumerator enumerator(
|
| + audio_manager_.get(),
|
| + AudioOutputDeviceEnumerator::CACHE_POLICY_NO_CACHING);
|
| + enumerator.Enumerate(
|
| + base::Bind(&AudioOutputDeviceEnumeratorTest::EnumerateCountCallback,
|
| + base::Unretained(this), 1, true));
|
| + run_loop_.Run();
|
| +}
|
| +
|
| +TEST_F(AudioOutputDeviceEnumeratorTest, EnumerateOneDevice) {
|
| + size_t num_devices = 1;
|
| + audio_manager_.reset(new MockAudioManager(num_devices));
|
| + EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_));
|
| + AudioOutputDeviceEnumerator enumerator(
|
| + audio_manager_.get(),
|
| + AudioOutputDeviceEnumerator::CACHE_POLICY_NO_CACHING);
|
| + enumerator.Enumerate(
|
| + base::Bind(&AudioOutputDeviceEnumeratorTest::EnumerateCountCallback,
|
| + base::Unretained(this), num_devices + 1, true));
|
| + run_loop_.Run();
|
| +}
|
| +
|
| +TEST_F(AudioOutputDeviceEnumeratorTest, EnumerateMultipleDevices) {
|
| + size_t num_devices = 5;
|
| + audio_manager_.reset(new MockAudioManager(num_devices));
|
| + EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_));
|
| + AudioOutputDeviceEnumerator enumerator(
|
| + audio_manager_.get(),
|
| + AudioOutputDeviceEnumerator::CACHE_POLICY_NO_CACHING);
|
| + enumerator.Enumerate(
|
| + base::Bind(&AudioOutputDeviceEnumeratorTest::EnumerateCountCallback,
|
| + base::Unretained(this), num_devices + 1, true));
|
| + run_loop_.Run();
|
| +}
|
| +
|
| } // namespace content
|
|
|