Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: content/browser/renderer_host/media/audio_output_device_enumerator_unittest.cc

Issue 1806313003: Pass task runners to AudioManager constructor. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address comments from patch 48 Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2015 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 "content/browser/renderer_host/media/audio_output_device_enumerator.h" 5 #include "content/browser/renderer_host/media/audio_output_device_enumerator.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <string> 8 #include <string>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/location.h" 11 #include "base/location.h"
12 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "base/memory/ref_counted.h" 13 #include "base/memory/ref_counted.h"
14 #include "base/run_loop.h" 14 #include "base/run_loop.h"
15 #include "base/single_thread_task_runner.h"
16 #include "base/strings/string_number_conversions.h" 15 #include "base/strings/string_number_conversions.h"
17 #include "base/thread_task_runner_handle.h" 16 #include "base/thread_task_runner_handle.h"
18 #include "content/public/test/test_browser_thread_bundle.h" 17 #include "content/public/test/test_browser_thread_bundle.h"
19 #include "media/audio/audio_manager_base.h" 18 #include "media/audio/audio_manager_base.h"
20 #include "media/audio/fake_audio_log_factory.h" 19 #include "media/audio/fake_audio_log_factory.h"
21 #include "media/audio/fake_audio_manager.h" 20 #include "media/audio/fake_audio_manager.h"
22 #include "testing/gmock/include/gmock/gmock.h" 21 #include "testing/gmock/include/gmock/gmock.h"
23 #include "testing/gtest/include/gtest/gtest.h" 22 #include "testing/gtest/include/gtest/gtest.h"
24 23
25 using testing::_; 24 using testing::_;
26 25
27 namespace content { 26 namespace content {
28 27
29 namespace { 28 namespace {
30 29
31 class MockAudioManager : public media::FakeAudioManager { 30 class MockAudioManager : public media::FakeAudioManager {
32 public: 31 public:
33 MockAudioManager(size_t num_devices) 32 MockAudioManager(size_t num_devices)
34 : FakeAudioManager(&fake_audio_log_factory_), num_devices_(num_devices) {} 33 : FakeAudioManager(base::ThreadTaskRunnerHandle::Get(),
34 base::ThreadTaskRunnerHandle::Get(),
35 &fake_audio_log_factory_),
36 num_devices_(num_devices) {}
35 MockAudioManager() : MockAudioManager(0) {} 37 MockAudioManager() : MockAudioManager(0) {}
36 ~MockAudioManager() override {} 38 ~MockAudioManager() override {}
37 39
38 MOCK_METHOD1(MockGetAudioOutputDeviceNames, void(media::AudioDeviceNames*)); 40 MOCK_METHOD1(MockGetAudioOutputDeviceNames, void(media::AudioDeviceNames*));
39 41
40 void GetAudioOutputDeviceNames( 42 void GetAudioOutputDeviceNames(
41 media::AudioDeviceNames* device_names) override { 43 media::AudioDeviceNames* device_names) override {
42 DCHECK(device_names->empty()); 44 DCHECK(device_names->empty());
43 MockGetAudioOutputDeviceNames(device_names); 45 MockGetAudioOutputDeviceNames(device_names);
44 if (num_devices_ > 0) { 46 if (num_devices_ > 0) {
(...skipping 29 matching lines...) Expand all
74 } 76 }
75 77
76 private: 78 private:
77 DISALLOW_COPY_AND_ASSIGN(OnlyDefaultDeviceAudioManager); 79 DISALLOW_COPY_AND_ASSIGN(OnlyDefaultDeviceAudioManager);
78 }; 80 };
79 81
80 } // namespace 82 } // namespace
81 83
82 class AudioOutputDeviceEnumeratorTest : public ::testing::Test { 84 class AudioOutputDeviceEnumeratorTest : public ::testing::Test {
83 public: 85 public:
84 AudioOutputDeviceEnumeratorTest() 86 AudioOutputDeviceEnumeratorTest() {}
85 : thread_bundle_(), task_runner_(base::ThreadTaskRunnerHandle::Get()) {}
86
87 ~AudioOutputDeviceEnumeratorTest() override {} 87 ~AudioOutputDeviceEnumeratorTest() override {}
88 88
89 MOCK_METHOD1(MockCallback, void(const AudioOutputDeviceEnumeration&)); 89 MOCK_METHOD1(MockCallback, void(const AudioOutputDeviceEnumeration&));
90 90
91 // Performs n calls to MockCallback (one by QuitCallback) 91 // Performs n calls to MockCallback (one by QuitCallback)
92 // and n-1 calls to Enumerate 92 // and n-1 calls to Enumerate
93 void EnumerateCallback(AudioOutputDeviceEnumerator* enumerator, 93 void EnumerateCallback(AudioOutputDeviceEnumerator* enumerator,
94 int n, 94 int n,
95 const AudioOutputDeviceEnumeration& result) { 95 const AudioOutputDeviceEnumeration& result) {
96 MockCallback(result); 96 MockCallback(result);
97 if (n > 1) { 97 if (n > 1) {
98 enumerator->Enumerate( 98 enumerator->Enumerate(
99 base::Bind(&AudioOutputDeviceEnumeratorTest::EnumerateCallback, 99 base::Bind(&AudioOutputDeviceEnumeratorTest::EnumerateCallback,
100 base::Unretained(this), enumerator, n - 1)); 100 base::Unretained(this), enumerator, n - 1));
101 } else { 101 } else {
102 enumerator->Enumerate( 102 enumerator->Enumerate(
103 base::Bind(&AudioOutputDeviceEnumeratorTest::QuitCallback, 103 base::Bind(&AudioOutputDeviceEnumeratorTest::QuitCallback,
104 base::Unretained(this))); 104 base::Unretained(this)));
105 } 105 }
106 } 106 }
107 107
108 void EnumerateCountCallback(size_t num_entries_expected, 108 void EnumerateCountCallback(size_t num_entries_expected,
109 bool actual_devices_expected, 109 bool actual_devices_expected,
110 const AudioOutputDeviceEnumeration& result) { 110 const AudioOutputDeviceEnumeration& result) {
111 EXPECT_EQ(actual_devices_expected, result.has_actual_devices); 111 EXPECT_EQ(actual_devices_expected, result.has_actual_devices);
112 EXPECT_EQ(num_entries_expected, result.devices.size()); 112 EXPECT_EQ(num_entries_expected, result.devices.size());
113 task_runner_->PostTask(FROM_HERE, run_loop_.QuitClosure()); 113 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
114 run_loop_.QuitClosure());
114 } 115 }
115 116
116 void QuitCallback(const AudioOutputDeviceEnumeration& result) { 117 void QuitCallback(const AudioOutputDeviceEnumeration& result) {
117 MockCallback(result); 118 MockCallback(result);
118 task_runner_->PostTask(FROM_HERE, run_loop_.QuitClosure()); 119 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
120 run_loop_.QuitClosure());
119 } 121 }
120 122
121 protected: 123 protected:
122 std::unique_ptr<MockAudioManager> audio_manager_;
123 TestBrowserThreadBundle thread_bundle_; 124 TestBrowserThreadBundle thread_bundle_;
124 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; 125 std::unique_ptr<MockAudioManager, media::AudioManagerDeleter> audio_manager_;
125 base::RunLoop run_loop_; 126 base::RunLoop run_loop_;
126 127
127 private: 128 private:
128 DISALLOW_COPY_AND_ASSIGN(AudioOutputDeviceEnumeratorTest); 129 DISALLOW_COPY_AND_ASSIGN(AudioOutputDeviceEnumeratorTest);
129 }; 130 };
130 131
131 TEST_F(AudioOutputDeviceEnumeratorTest, EnumerateWithCache) { 132 TEST_F(AudioOutputDeviceEnumeratorTest, EnumerateWithCache) {
132 const int num_calls = 10; 133 const int num_calls = 10;
133 audio_manager_.reset(new MockAudioManager()); 134 audio_manager_.reset(new MockAudioManager());
134 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(1); 135 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(1);
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 AudioOutputDeviceEnumerator enumerator( 202 AudioOutputDeviceEnumerator enumerator(
202 audio_manager_.get(), 203 audio_manager_.get(),
203 AudioOutputDeviceEnumerator::CACHE_POLICY_NO_CACHING); 204 AudioOutputDeviceEnumerator::CACHE_POLICY_NO_CACHING);
204 enumerator.Enumerate( 205 enumerator.Enumerate(
205 base::Bind(&AudioOutputDeviceEnumeratorTest::EnumerateCountCallback, 206 base::Bind(&AudioOutputDeviceEnumeratorTest::EnumerateCountCallback,
206 base::Unretained(this), num_devices + 1, true)); 207 base::Unretained(this), num_devices + 1, true));
207 run_loop_.Run(); 208 run_loop_.Run();
208 } 209 }
209 210
210 } // namespace content 211 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698