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

Side by Side Diff: webrtc/modules/audio_device/test/audio_device_test_api.cc

Issue 1477013005: Replace RefCountImpl with rtc::RefCountedObject. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: add back explicit Release()s in test Created 4 years, 9 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 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 30 matching lines...) Expand all
41 const char* GetFilename(const char* filename) { 41 const char* GetFilename(const char* filename) {
42 std::string full_path_filename = webrtc::test::OutputPath() + filename; 42 std::string full_path_filename = webrtc::test::OutputPath() + filename;
43 return full_path_filename.c_str(); 43 return full_path_filename.c_str();
44 } 44 }
45 #endif 45 #endif
46 46
47 using namespace webrtc; 47 using namespace webrtc;
48 48
49 class AudioEventObserverAPI: public AudioDeviceObserver { 49 class AudioEventObserverAPI: public AudioDeviceObserver {
50 public: 50 public:
51 AudioEventObserverAPI(AudioDeviceModule* audioDevice) 51 AudioEventObserverAPI(
52 const rtc::scoped_refptr<AudioDeviceModule>& audioDevice)
52 : error_(kRecordingError), 53 : error_(kRecordingError),
53 warning_(kRecordingWarning), 54 warning_(kRecordingWarning),
54 audio_device_(audioDevice) { 55 audio_device_(audioDevice) {}
55 }
56 56
57 ~AudioEventObserverAPI() {} 57 ~AudioEventObserverAPI() {}
58 58
59 virtual void OnErrorIsReported(const ErrorCode error) { 59 virtual void OnErrorIsReported(const ErrorCode error) {
60 TEST_LOG("\n[*** ERROR ***] => OnErrorIsReported(%d)\n\n", error); 60 TEST_LOG("\n[*** ERROR ***] => OnErrorIsReported(%d)\n\n", error);
61 error_ = error; 61 error_ = error;
62 } 62 }
63 63
64 virtual void OnWarningIsReported(const WarningCode warning) { 64 virtual void OnWarningIsReported(const WarningCode warning) {
65 TEST_LOG("\n[*** WARNING ***] => OnWarningIsReported(%d)\n\n", warning); 65 TEST_LOG("\n[*** WARNING ***] => OnWarningIsReported(%d)\n\n", warning);
66 warning_ = warning; 66 warning_ = warning;
67 EXPECT_EQ(0, audio_device_->StopRecording()); 67 EXPECT_EQ(0, audio_device_->StopRecording());
68 EXPECT_EQ(0, audio_device_->StopPlayout()); 68 EXPECT_EQ(0, audio_device_->StopPlayout());
69 } 69 }
70 70
71 public: 71 public:
72 ErrorCode error_; 72 ErrorCode error_;
73 WarningCode warning_; 73 WarningCode warning_;
74 private: 74 private:
75 AudioDeviceModule* audio_device_; 75 rtc::scoped_refptr<AudioDeviceModule> audio_device_;
76 }; 76 };
77 77
78 class AudioTransportAPI: public AudioTransport { 78 class AudioTransportAPI: public AudioTransport {
79 public: 79 public:
80 AudioTransportAPI(AudioDeviceModule* audioDevice) 80 AudioTransportAPI(const rtc::scoped_refptr<AudioDeviceModule>& audioDevice)
81 : rec_count_(0), 81 : rec_count_(0),
82 play_count_(0) { 82 play_count_(0) {
83 } 83 }
84 84
85 ~AudioTransportAPI() {} 85 ~AudioTransportAPI() {}
86 86
87 int32_t RecordedDataIsAvailable(const void* audioSamples, 87 int32_t RecordedDataIsAvailable(const void* audioSamples,
88 const size_t nSamples, 88 const size_t nSamples,
89 const size_t nBytesPerSample, 89 const size_t nBytesPerSample,
90 const size_t nChannels, 90 const size_t nChannels,
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 const int32_t kId = 444; 154 const int32_t kId = 444;
155 155
156 #if defined(_WIN32) 156 #if defined(_WIN32)
157 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create( 157 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
158 kId, AudioDeviceModule::kLinuxAlsaAudio)) == NULL); 158 kId, AudioDeviceModule::kLinuxAlsaAudio)) == NULL);
159 #if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD) 159 #if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
160 TEST_LOG("WEBRTC_WINDOWS_CORE_AUDIO_BUILD is defined!\n\n"); 160 TEST_LOG("WEBRTC_WINDOWS_CORE_AUDIO_BUILD is defined!\n\n");
161 // create default implementation (=Core Audio) instance 161 // create default implementation (=Core Audio) instance
162 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create( 162 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
163 kId, AudioDeviceModule::kPlatformDefaultAudio)) != NULL); 163 kId, AudioDeviceModule::kPlatformDefaultAudio)) != NULL);
164 audio_device_->AddRef(); 164 EXPECT_EQ(0, audio_device_.release()->Release());
165 EXPECT_EQ(0, audio_device_->Release());
166 // create non-default (=Wave Audio) instance 165 // create non-default (=Wave Audio) instance
167 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create( 166 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
168 kId, AudioDeviceModule::kWindowsWaveAudio)) != NULL); 167 kId, AudioDeviceModule::kWindowsWaveAudio)) != NULL);
169 audio_device_->AddRef(); 168 EXPECT_EQ(0, audio_device_.release()->Release());
170 EXPECT_EQ(0, audio_device_->Release());
171 // explicitly specify usage of Core Audio (same as default) 169 // explicitly specify usage of Core Audio (same as default)
172 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create( 170 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
173 kId, AudioDeviceModule::kWindowsCoreAudio)) != NULL); 171 kId, AudioDeviceModule::kWindowsCoreAudio)) != NULL);
174 #else 172 #else
175 TEST_LOG("WEBRTC_WINDOWS_CORE_AUDIO_BUILD is *not* defined!\n"); 173 TEST_LOG("WEBRTC_WINDOWS_CORE_AUDIO_BUILD is *not* defined!\n");
176 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create( 174 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
177 kId, AudioDeviceModule::kWindowsCoreAudio)) == NULL); 175 kId, AudioDeviceModule::kWindowsCoreAudio)) == NULL);
178 // create default implementation (=Wave Audio) instance 176 // create default implementation (=Wave Audio) instance
179 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create( 177 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
180 kId, AudioDeviceModule::kPlatformDefaultAudio)) != NULL); 178 kId, AudioDeviceModule::kPlatformDefaultAudio)) != NULL);
181 audio_device_->AddRef(); 179 EXPECT_EQ(0, audio_device_.release()->Release());
182 EXPECT_EQ(0, audio_device_->Release());
183 // explicitly specify usage of Wave Audio (same as default) 180 // explicitly specify usage of Wave Audio (same as default)
184 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create( 181 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
185 kId, AudioDeviceModule::kWindowsWaveAudio)) != NULL); 182 kId, AudioDeviceModule::kWindowsWaveAudio)) != NULL);
186 #endif 183 #endif
187 #endif 184 #endif
188 185
189 #if defined(ANDROID) 186 #if defined(ANDROID)
190 // Fails tests 187 // Fails tests
191 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create( 188 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
192 kId, AudioDeviceModule::kWindowsWaveAudio)) == NULL); 189 kId, AudioDeviceModule::kWindowsWaveAudio)) == NULL);
193 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create( 190 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
194 kId, AudioDeviceModule::kWindowsCoreAudio)) == NULL); 191 kId, AudioDeviceModule::kWindowsCoreAudio)) == NULL);
195 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create( 192 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
196 kId, AudioDeviceModule::kLinuxAlsaAudio)) == NULL); 193 kId, AudioDeviceModule::kLinuxAlsaAudio)) == NULL);
197 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create( 194 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
198 kId, AudioDeviceModule::kLinuxPulseAudio)) == NULL); 195 kId, AudioDeviceModule::kLinuxPulseAudio)) == NULL);
199 // Create default implementation instance 196 // Create default implementation instance
200 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create( 197 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
201 kId, AudioDeviceModule::kPlatformDefaultAudio)) != NULL); 198 kId, AudioDeviceModule::kPlatformDefaultAudio)) != NULL);
202 #elif defined(WEBRTC_LINUX) 199 #elif defined(WEBRTC_LINUX)
203 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create( 200 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
204 kId, AudioDeviceModule::kWindowsWaveAudio)) == NULL); 201 kId, AudioDeviceModule::kWindowsWaveAudio)) == NULL);
205 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create( 202 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
206 kId, AudioDeviceModule::kWindowsCoreAudio)) == NULL); 203 kId, AudioDeviceModule::kWindowsCoreAudio)) == NULL);
207 // create default implementation instance 204 // create default implementation instance
208 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create( 205 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
209 kId, AudioDeviceModule::kPlatformDefaultAudio)) != NULL); 206 kId, AudioDeviceModule::kPlatformDefaultAudio)) != NULL);
210 audio_device_->AddRef();
211 EXPECT_EQ(0, audio_device_->Terminate()); 207 EXPECT_EQ(0, audio_device_->Terminate());
212 EXPECT_EQ(0, audio_device_->Release()); 208 EXPECT_EQ(0, audio_device_.release()->Release());
213 // explicitly specify usage of Pulse Audio (same as default) 209 // explicitly specify usage of Pulse Audio (same as default)
214 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create( 210 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
215 kId, AudioDeviceModule::kLinuxPulseAudio)) != NULL); 211 kId, AudioDeviceModule::kLinuxPulseAudio)) != NULL);
216 #endif 212 #endif
217 213
218 #if defined(WEBRTC_MAC) 214 #if defined(WEBRTC_MAC)
219 // Fails tests 215 // Fails tests
220 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create( 216 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
221 kId, AudioDeviceModule::kWindowsWaveAudio)) == NULL); 217 kId, AudioDeviceModule::kWindowsWaveAudio)) == NULL);
222 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create( 218 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
223 kId, AudioDeviceModule::kWindowsCoreAudio)) == NULL); 219 kId, AudioDeviceModule::kWindowsCoreAudio)) == NULL);
224 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create( 220 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
225 kId, AudioDeviceModule::kLinuxAlsaAudio)) == NULL); 221 kId, AudioDeviceModule::kLinuxAlsaAudio)) == NULL);
226 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create( 222 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
227 kId, AudioDeviceModule::kLinuxPulseAudio)) == NULL); 223 kId, AudioDeviceModule::kLinuxPulseAudio)) == NULL);
228 // Create default implementation instance 224 // Create default implementation instance
229 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create( 225 EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
230 kId, AudioDeviceModule::kPlatformDefaultAudio)) != NULL); 226 kId, AudioDeviceModule::kPlatformDefaultAudio)) != NULL);
231 #endif 227 #endif
232 228
233 if (audio_device_ == NULL) { 229 if (audio_device_ == NULL) {
234 FAIL() << "Failed creating audio device object!"; 230 FAIL() << "Failed creating audio device object!";
235 } 231 }
236 232
237 // The ADM is reference counted.
238 audio_device_->AddRef();
239
240 process_thread_->RegisterModule(audio_device_); 233 process_thread_->RegisterModule(audio_device_);
241 234
242 AudioDeviceModule::AudioLayer audio_layer = 235 AudioDeviceModule::AudioLayer audio_layer =
243 AudioDeviceModule::kPlatformDefaultAudio; 236 AudioDeviceModule::kPlatformDefaultAudio;
244 EXPECT_EQ(0, audio_device_->ActiveAudioLayer(&audio_layer)); 237 EXPECT_EQ(0, audio_device_->ActiveAudioLayer(&audio_layer));
245 if (audio_layer == AudioDeviceModule::kLinuxAlsaAudio) { 238 if (audio_layer == AudioDeviceModule::kLinuxAlsaAudio) {
246 linux_alsa_ = true; 239 linux_alsa_ = true;
247 } 240 }
248 } 241 }
249 242
250 static void TearDownTestCase() { 243 static void TearDownTestCase() {
251 if (process_thread_) { 244 if (process_thread_) {
252 process_thread_->DeRegisterModule(audio_device_); 245 process_thread_->DeRegisterModule(audio_device_);
253 process_thread_->Stop(); 246 process_thread_->Stop();
254 process_thread_.reset(); 247 process_thread_.reset();
255 } 248 }
256 if (event_observer_) { 249 if (event_observer_) {
257 delete event_observer_; 250 delete event_observer_;
258 event_observer_ = NULL; 251 event_observer_ = NULL;
259 } 252 }
260 if (audio_transport_) { 253 if (audio_transport_) {
261 delete audio_transport_; 254 delete audio_transport_;
262 audio_transport_ = NULL; 255 audio_transport_ = NULL;
263 } 256 }
264 if (audio_device_) { 257 if (audio_device_)
265 EXPECT_EQ(0, audio_device_->Release()); 258 EXPECT_EQ(0, audio_device_.release()->Release());
266 }
267 PRINT_TEST_RESULTS; 259 PRINT_TEST_RESULTS;
268 } 260 }
269 261
270 void SetUp() { 262 void SetUp() {
271 if (linux_alsa_) { 263 if (linux_alsa_) {
272 FAIL() << "API Test is not available on ALSA on Linux!"; 264 FAIL() << "API Test is not available on ALSA on Linux!";
273 } 265 }
274 EXPECT_EQ(0, audio_device_->Init()); 266 EXPECT_EQ(0, audio_device_->Init());
275 EXPECT_TRUE(audio_device_->Initialized()); 267 EXPECT_TRUE(audio_device_->Initialized());
276 } 268 }
(...skipping 20 matching lines...) Expand all
297 289
298 void CheckInitialRecordingStates() { 290 void CheckInitialRecordingStates() {
299 EXPECT_FALSE(audio_device_->RecordingIsInitialized()); 291 EXPECT_FALSE(audio_device_->RecordingIsInitialized());
300 EXPECT_FALSE(audio_device_->Recording()); 292 EXPECT_FALSE(audio_device_->Recording());
301 EXPECT_FALSE(audio_device_->MicrophoneIsInitialized()); 293 EXPECT_FALSE(audio_device_->MicrophoneIsInitialized());
302 } 294 }
303 295
304 // TODO(henrika): Get rid of globals. 296 // TODO(henrika): Get rid of globals.
305 static bool linux_alsa_; 297 static bool linux_alsa_;
306 static std::unique_ptr<ProcessThread> process_thread_; 298 static std::unique_ptr<ProcessThread> process_thread_;
307 static AudioDeviceModule* audio_device_; 299 static rtc::scoped_refptr<AudioDeviceModule> audio_device_;
308 static AudioTransportAPI* audio_transport_; 300 static AudioTransportAPI* audio_transport_;
309 static AudioEventObserverAPI* event_observer_; 301 static AudioEventObserverAPI* event_observer_;
310 }; 302 };
311 303
312 // Must be initialized like this to handle static SetUpTestCase() above. 304 // Must be initialized like this to handle static SetUpTestCase() above.
313 bool AudioDeviceAPITest::linux_alsa_ = false; 305 bool AudioDeviceAPITest::linux_alsa_ = false;
314 std::unique_ptr<ProcessThread> AudioDeviceAPITest::process_thread_; 306 std::unique_ptr<ProcessThread> AudioDeviceAPITest::process_thread_;
315 AudioDeviceModule* AudioDeviceAPITest::audio_device_ = NULL; 307 rtc::scoped_refptr<AudioDeviceModule> AudioDeviceAPITest::audio_device_;
316 AudioTransportAPI* AudioDeviceAPITest::audio_transport_ = NULL; 308 AudioTransportAPI* AudioDeviceAPITest::audio_transport_ = NULL;
317 AudioEventObserverAPI* AudioDeviceAPITest::event_observer_ = NULL; 309 AudioEventObserverAPI* AudioDeviceAPITest::event_observer_ = NULL;
318 310
319 TEST_F(AudioDeviceAPITest, RegisterEventObserver) { 311 TEST_F(AudioDeviceAPITest, RegisterEventObserver) {
320 event_observer_ = new AudioEventObserverAPI(audio_device_); 312 event_observer_ = new AudioEventObserverAPI(audio_device_);
321 EXPECT_EQ(0, audio_device_->RegisterEventObserver(NULL)); 313 EXPECT_EQ(0, audio_device_->RegisterEventObserver(NULL));
322 EXPECT_EQ(0, audio_device_->RegisterEventObserver(event_observer_)); 314 EXPECT_EQ(0, audio_device_->RegisterEventObserver(event_observer_));
323 EXPECT_EQ(0, audio_device_->RegisterEventObserver(NULL)); 315 EXPECT_EQ(0, audio_device_->RegisterEventObserver(NULL));
324 } 316 }
325 317
(...skipping 1481 matching lines...) Expand 10 before | Expand all | Expand 10 after
1807 // TODO(kjellander): Fix so these tests pass on Mac. 1799 // TODO(kjellander): Fix so these tests pass on Mac.
1808 #if !defined(WEBRTC_MAC) 1800 #if !defined(WEBRTC_MAC)
1809 EXPECT_EQ(0, audio_device_->InitPlayout()); 1801 EXPECT_EQ(0, audio_device_->InitPlayout());
1810 EXPECT_EQ(0, audio_device_->StartPlayout()); 1802 EXPECT_EQ(0, audio_device_->StartPlayout());
1811 #endif 1803 #endif
1812 1804
1813 EXPECT_EQ(-1, audio_device_->GetLoudspeakerStatus(&loudspeakerOn)); 1805 EXPECT_EQ(-1, audio_device_->GetLoudspeakerStatus(&loudspeakerOn));
1814 #endif 1806 #endif
1815 EXPECT_EQ(0, audio_device_->StopPlayout()); 1807 EXPECT_EQ(0, audio_device_->StopPlayout());
1816 } 1808 }
OLDNEW
« no previous file with comments | « webrtc/modules/audio_device/include/audio_device.h ('k') | webrtc/modules/desktop_capture/differ_block_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698