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

Side by Side Diff: media/audio/audio_input_controller_unittest.cc

Issue 21183002: Adding key press detection in the browser process. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 4 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/bind.h" 6 #include "base/bind.h"
7 #include "base/message_loop/message_loop.h" 7 #include "base/message_loop/message_loop.h"
8 #include "base/synchronization/waitable_event.h" 8 #include "base/synchronization/waitable_event.h"
9 #include "base/test/test_timeouts.h" 9 #include "base/test/test_timeouts.h"
10 #include "media/audio/audio_input_controller.h" 10 #include "media/audio/audio_input_controller.h"
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 TEST_F(AudioInputControllerTest, CreateAndClose) { 76 TEST_F(AudioInputControllerTest, CreateAndClose) {
77 MockAudioInputControllerEventHandler event_handler; 77 MockAudioInputControllerEventHandler event_handler;
78 78
79 // OnCreated() will be posted once. 79 // OnCreated() will be posted once.
80 EXPECT_CALL(event_handler, OnCreated(NotNull())) 80 EXPECT_CALL(event_handler, OnCreated(NotNull()))
81 .WillOnce(QuitMessageLoop(&message_loop_)); 81 .WillOnce(QuitMessageLoop(&message_loop_));
82 82
83 scoped_ptr<AudioManager> audio_manager(AudioManager::Create()); 83 scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
84 AudioParameters params(AudioParameters::AUDIO_FAKE, kChannelLayout, 84 AudioParameters params(AudioParameters::AUDIO_FAKE, kChannelLayout,
85 kSampleRate, kBitsPerSample, kSamplesPerPacket); 85 kSampleRate, kBitsPerSample, kSamplesPerPacket);
86 scoped_ptr<KeyPressMonitor> key_press_monitor(new KeyPressMonitor(
87 audio_manager->GetMessageLoop()));
86 scoped_refptr<AudioInputController> controller = 88 scoped_refptr<AudioInputController> controller =
87 AudioInputController::Create(audio_manager.get(), &event_handler, params, 89 AudioInputController::Create(audio_manager.get(),
88 AudioManagerBase::kDefaultDeviceId); 90 &event_handler,
91 params,
92 AudioManagerBase::kDefaultDeviceId,
93 key_press_monitor.get());
89 ASSERT_TRUE(controller.get()); 94 ASSERT_TRUE(controller.get());
90 95
91 // Wait for OnCreated() to fire. 96 // Wait for OnCreated() to fire.
92 message_loop_.Run(); 97 message_loop_.Run();
93 98
94 // Close the AudioInputController synchronously. 99 // Close the AudioInputController synchronously.
95 CloseAudioController(controller.get()); 100 CloseAudioController(controller.get());
96 } 101 }
97 102
98 // Test a normal call sequence of create, record and close. 103 // Test a normal call sequence of create, record and close.
(...skipping 13 matching lines...) Expand all
112 EXPECT_CALL(event_handler, OnData(NotNull(), NotNull(), _)) 117 EXPECT_CALL(event_handler, OnData(NotNull(), NotNull(), _))
113 .Times(AtLeast(10)) 118 .Times(AtLeast(10))
114 .WillRepeatedly(CheckCountAndPostQuitTask(&count, 10, 119 .WillRepeatedly(CheckCountAndPostQuitTask(&count, 10,
115 message_loop_.message_loop_proxy())); 120 message_loop_.message_loop_proxy()));
116 121
117 scoped_ptr<AudioManager> audio_manager(AudioManager::Create()); 122 scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
118 AudioParameters params(AudioParameters::AUDIO_FAKE, kChannelLayout, 123 AudioParameters params(AudioParameters::AUDIO_FAKE, kChannelLayout,
119 kSampleRate, kBitsPerSample, kSamplesPerPacket); 124 kSampleRate, kBitsPerSample, kSamplesPerPacket);
120 125
121 // Creating the AudioInputController should render an OnCreated() call. 126 // Creating the AudioInputController should render an OnCreated() call.
127 scoped_ptr<KeyPressMonitor> key_press_monitor(new KeyPressMonitor(
128 audio_manager->GetMessageLoop()));
122 scoped_refptr<AudioInputController> controller = 129 scoped_refptr<AudioInputController> controller =
123 AudioInputController::Create(audio_manager.get(), &event_handler, params, 130 AudioInputController::Create(audio_manager.get(),
124 AudioManagerBase::kDefaultDeviceId); 131 &event_handler,
132 params,
133 AudioManagerBase::kDefaultDeviceId,
134 key_press_monitor.get());
125 ASSERT_TRUE(controller.get()); 135 ASSERT_TRUE(controller.get());
126 136
127 // Start recording and trigger one OnRecording() call. 137 // Start recording and trigger one OnRecording() call.
128 controller->Record(); 138 controller->Record();
129 139
130 // Record and wait until ten OnData() callbacks are received. 140 // Record and wait until ten OnData() callbacks are received.
131 message_loop_.Run(); 141 message_loop_.Run();
132 142
133 // Close the AudioInputController synchronously. 143 // Close the AudioInputController synchronously.
134 CloseAudioController(controller.get()); 144 CloseAudioController(controller.get());
(...skipping 24 matching lines...) Expand all
159 // controller is in a recording state. 169 // controller is in a recording state.
160 EXPECT_CALL(event_handler, OnError(NotNull())) 170 EXPECT_CALL(event_handler, OnError(NotNull()))
161 .Times(Exactly(1)) 171 .Times(Exactly(1))
162 .WillOnce(QuitMessageLoop(&message_loop_)); 172 .WillOnce(QuitMessageLoop(&message_loop_));
163 173
164 scoped_ptr<AudioManager> audio_manager(AudioManager::Create()); 174 scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
165 AudioParameters params(AudioParameters::AUDIO_FAKE, kChannelLayout, 175 AudioParameters params(AudioParameters::AUDIO_FAKE, kChannelLayout,
166 kSampleRate, kBitsPerSample, kSamplesPerPacket); 176 kSampleRate, kBitsPerSample, kSamplesPerPacket);
167 177
168 // Creating the AudioInputController should render an OnCreated() call. 178 // Creating the AudioInputController should render an OnCreated() call.
179 scoped_ptr<KeyPressMonitor> key_press_monitor(new KeyPressMonitor(
180 audio_manager->GetMessageLoop()));
169 scoped_refptr<AudioInputController> controller = 181 scoped_refptr<AudioInputController> controller =
170 AudioInputController::Create(audio_manager.get(), &event_handler, params, 182 AudioInputController::Create(audio_manager.get(),
171 AudioManagerBase::kDefaultDeviceId); 183 &event_handler,
184 params,
185 AudioManagerBase::kDefaultDeviceId,
186 key_press_monitor.get());
172 ASSERT_TRUE(controller.get()); 187 ASSERT_TRUE(controller.get());
173 188
174 // Start recording and trigger one OnRecording() call. 189 // Start recording and trigger one OnRecording() call.
175 controller->Record(); 190 controller->Record();
176 191
177 // Record and wait until ten OnData() callbacks are received. 192 // Record and wait until ten OnData() callbacks are received.
178 message_loop_.Run(); 193 message_loop_.Run();
179 194
180 // Stop the stream and verify that OnError() is posted. 195 // Stop the stream and verify that OnError() is posted.
181 AudioInputStream* stream = controller->stream_for_testing(); 196 AudioInputStream* stream = controller->stream_for_testing();
182 stream->Stop(); 197 stream->Stop();
183 message_loop_.Run(); 198 message_loop_.Run();
184 199
185 // Close the AudioInputController synchronously. 200 // Close the AudioInputController synchronously.
186 CloseAudioController(controller.get()); 201 CloseAudioController(controller.get());
187 } 202 }
188 203
189 // Test that AudioInputController rejects insanely large packet sizes. 204 // Test that AudioInputController rejects insanely large packet sizes.
190 TEST_F(AudioInputControllerTest, SamplesPerPacketTooLarge) { 205 TEST_F(AudioInputControllerTest, SamplesPerPacketTooLarge) {
191 // Create an audio device with a very large packet size. 206 // Create an audio device with a very large packet size.
192 MockAudioInputControllerEventHandler event_handler; 207 MockAudioInputControllerEventHandler event_handler;
193 208
194 // OnCreated() shall not be called in this test. 209 // OnCreated() shall not be called in this test.
195 EXPECT_CALL(event_handler, OnCreated(NotNull())) 210 EXPECT_CALL(event_handler, OnCreated(NotNull()))
196 .Times(Exactly(0)); 211 .Times(Exactly(0));
197 212
198 scoped_ptr<AudioManager> audio_manager(AudioManager::Create()); 213 scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
199 AudioParameters params(AudioParameters::AUDIO_FAKE, kChannelLayout, 214 AudioParameters params(AudioParameters::AUDIO_FAKE, kChannelLayout,
200 kSampleRate, kBitsPerSample, kSamplesPerPacket * 1000); 215 kSampleRate, kBitsPerSample, kSamplesPerPacket * 1000);
216 scoped_ptr<KeyPressMonitor> key_press_monitor(new KeyPressMonitor(
217 audio_manager->GetMessageLoop()));
201 scoped_refptr<AudioInputController> controller = 218 scoped_refptr<AudioInputController> controller =
202 AudioInputController::Create(audio_manager.get(), &event_handler, params, 219 AudioInputController::Create(audio_manager.get(),
203 AudioManagerBase::kDefaultDeviceId); 220 &event_handler,
221 params,
222 AudioManagerBase::kDefaultDeviceId,
223 key_press_monitor.get());
204 ASSERT_FALSE(controller.get()); 224 ASSERT_FALSE(controller.get());
205 } 225 }
206 226
207 // Test calling AudioInputController::Close multiple times. 227 // Test calling AudioInputController::Close multiple times.
208 TEST_F(AudioInputControllerTest, CloseTwice) { 228 TEST_F(AudioInputControllerTest, CloseTwice) {
209 MockAudioInputControllerEventHandler event_handler; 229 MockAudioInputControllerEventHandler event_handler;
210 230
211 // OnRecording() will be called only once. 231 // OnRecording() will be called only once.
212 EXPECT_CALL(event_handler, OnCreated(NotNull())); 232 EXPECT_CALL(event_handler, OnCreated(NotNull()));
213 233
214 // OnRecording() will be called only once. 234 // OnRecording() will be called only once.
215 EXPECT_CALL(event_handler, OnRecording(NotNull())) 235 EXPECT_CALL(event_handler, OnRecording(NotNull()))
216 .Times(Exactly(1)); 236 .Times(Exactly(1));
217 237
218 scoped_ptr<AudioManager> audio_manager(AudioManager::Create()); 238 scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
219 AudioParameters params(AudioParameters::AUDIO_FAKE, kChannelLayout, 239 AudioParameters params(AudioParameters::AUDIO_FAKE, kChannelLayout,
220 kSampleRate, kBitsPerSample, kSamplesPerPacket); 240 kSampleRate, kBitsPerSample, kSamplesPerPacket);
241 scoped_ptr<KeyPressMonitor> key_press_monitor(new KeyPressMonitor(
242 audio_manager->GetMessageLoop()));
221 scoped_refptr<AudioInputController> controller = 243 scoped_refptr<AudioInputController> controller =
222 AudioInputController::Create(audio_manager.get(), &event_handler, params, 244 AudioInputController::Create(audio_manager.get(),
223 AudioManagerBase::kDefaultDeviceId); 245 &event_handler,
246 params,
247 AudioManagerBase::kDefaultDeviceId,
248 key_press_monitor.get());
224 ASSERT_TRUE(controller.get()); 249 ASSERT_TRUE(controller.get());
225 250
226 controller->Record(); 251 controller->Record();
227 252
228 controller->Close(base::MessageLoop::QuitClosure()); 253 controller->Close(base::MessageLoop::QuitClosure());
229 base::MessageLoop::current()->Run(); 254 base::MessageLoop::current()->Run();
230 255
231 controller->Close(base::MessageLoop::QuitClosure()); 256 controller->Close(base::MessageLoop::QuitClosure());
232 base::MessageLoop::current()->Run(); 257 base::MessageLoop::current()->Run();
233 } 258 }
234 259
235 } // namespace media 260 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698