OLD | NEW |
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.h" | 7 #include "base/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 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 | 73 |
74 // Test AudioInputController for create and close without recording audio. | 74 // Test AudioInputController for create and close without recording audio. |
75 TEST_F(AudioInputControllerTest, CreateAndClose) { | 75 TEST_F(AudioInputControllerTest, CreateAndClose) { |
76 MockAudioInputControllerEventHandler event_handler; | 76 MockAudioInputControllerEventHandler event_handler; |
77 | 77 |
78 // OnCreated() will be posted once. | 78 // OnCreated() will be posted once. |
79 EXPECT_CALL(event_handler, OnCreated(NotNull())) | 79 EXPECT_CALL(event_handler, OnCreated(NotNull())) |
80 .WillOnce(QuitMessageLoop(message_loop_.message_loop_proxy())); | 80 .WillOnce(QuitMessageLoop(message_loop_.message_loop_proxy())); |
81 | 81 |
82 scoped_ptr<AudioManager> audio_manager(AudioManager::Create()); | 82 scoped_ptr<AudioManager> audio_manager(AudioManager::Create()); |
83 AudioParameters params(AudioParameters::AUDIO_MOCK, kChannelLayout, | 83 AudioParameters params(AudioParameters::AUDIO_MOCK, false, kChannelLayout, |
84 kSampleRate, kBitsPerSample, kSamplesPerPacket); | 84 kSampleRate, kBitsPerSample, kSamplesPerPacket); |
85 scoped_refptr<AudioInputController> controller = | 85 scoped_refptr<AudioInputController> controller = |
86 AudioInputController::Create(audio_manager.get(), &event_handler, params); | 86 AudioInputController::Create(audio_manager.get(), &event_handler, params); |
87 ASSERT_TRUE(controller.get()); | 87 ASSERT_TRUE(controller.get()); |
88 | 88 |
89 // Close the AudioInputController synchronously. | 89 // Close the AudioInputController synchronously. |
90 CloseAudioController(controller); | 90 CloseAudioController(controller); |
91 } | 91 } |
92 | 92 |
93 // Test a normal call sequence of create, record and close. | 93 // Test a normal call sequence of create, record and close. |
94 TEST_F(AudioInputControllerTest, RecordAndClose) { | 94 TEST_F(AudioInputControllerTest, RecordAndClose) { |
95 MockAudioInputControllerEventHandler event_handler; | 95 MockAudioInputControllerEventHandler event_handler; |
96 int count = 0; | 96 int count = 0; |
97 | 97 |
98 // OnCreated() will be called once. | 98 // OnCreated() will be called once. |
99 EXPECT_CALL(event_handler, OnCreated(NotNull())) | 99 EXPECT_CALL(event_handler, OnCreated(NotNull())) |
100 .Times(Exactly(1)); | 100 .Times(Exactly(1)); |
101 | 101 |
102 // OnRecording() will be called only once. | 102 // OnRecording() will be called only once. |
103 EXPECT_CALL(event_handler, OnRecording(NotNull())) | 103 EXPECT_CALL(event_handler, OnRecording(NotNull())) |
104 .Times(Exactly(1)); | 104 .Times(Exactly(1)); |
105 | 105 |
106 // OnData() shall be called ten times. | 106 // OnData() shall be called ten times. |
107 EXPECT_CALL(event_handler, OnData(NotNull(), NotNull(), _)) | 107 EXPECT_CALL(event_handler, OnData(NotNull(), NotNull(), _)) |
108 .Times(AtLeast(10)) | 108 .Times(AtLeast(10)) |
109 .WillRepeatedly(CheckCountAndPostQuitTask(&count, 10, | 109 .WillRepeatedly(CheckCountAndPostQuitTask(&count, 10, |
110 message_loop_.message_loop_proxy())); | 110 message_loop_.message_loop_proxy())); |
111 | 111 |
112 scoped_ptr<AudioManager> audio_manager(AudioManager::Create()); | 112 scoped_ptr<AudioManager> audio_manager(AudioManager::Create()); |
113 AudioParameters params(AudioParameters::AUDIO_MOCK, kChannelLayout, | 113 AudioParameters params(AudioParameters::AUDIO_MOCK, false, kChannelLayout, |
114 kSampleRate, kBitsPerSample, kSamplesPerPacket); | 114 kSampleRate, kBitsPerSample, kSamplesPerPacket); |
115 | 115 |
116 // Creating the AudioInputController should render an OnCreated() call. | 116 // Creating the AudioInputController should render an OnCreated() call. |
117 scoped_refptr<AudioInputController> controller = | 117 scoped_refptr<AudioInputController> controller = |
118 AudioInputController::Create(audio_manager.get(), &event_handler, params); | 118 AudioInputController::Create(audio_manager.get(), &event_handler, params); |
119 ASSERT_TRUE(controller.get()); | 119 ASSERT_TRUE(controller.get()); |
120 | 120 |
121 // Start recording and trigger one OnRecording() call. | 121 // Start recording and trigger one OnRecording() call. |
122 controller->Record(); | 122 controller->Record(); |
123 | 123 |
(...skipping 25 matching lines...) Expand all Loading... |
149 .WillRepeatedly(CheckCountAndPostQuitTask(&count, 10, | 149 .WillRepeatedly(CheckCountAndPostQuitTask(&count, 10, |
150 message_loop_.message_loop_proxy())); | 150 message_loop_.message_loop_proxy())); |
151 | 151 |
152 // OnError() will be called after the data stream stops while the | 152 // OnError() will be called after the data stream stops while the |
153 // controller is in a recording state. | 153 // controller is in a recording state. |
154 EXPECT_CALL(event_handler, OnError(NotNull(), 0)) | 154 EXPECT_CALL(event_handler, OnError(NotNull(), 0)) |
155 .Times(Exactly(1)) | 155 .Times(Exactly(1)) |
156 .WillOnce(QuitMessageLoop(message_loop_.message_loop_proxy())); | 156 .WillOnce(QuitMessageLoop(message_loop_.message_loop_proxy())); |
157 | 157 |
158 scoped_ptr<AudioManager> audio_manager(AudioManager::Create()); | 158 scoped_ptr<AudioManager> audio_manager(AudioManager::Create()); |
159 AudioParameters params(AudioParameters::AUDIO_MOCK, kChannelLayout, | 159 AudioParameters params(AudioParameters::AUDIO_MOCK, false, kChannelLayout, |
160 kSampleRate, kBitsPerSample, kSamplesPerPacket); | 160 kSampleRate, kBitsPerSample, kSamplesPerPacket); |
161 | 161 |
162 // Creating the AudioInputController should render an OnCreated() call. | 162 // Creating the AudioInputController should render an OnCreated() call. |
163 scoped_refptr<AudioInputController> controller = | 163 scoped_refptr<AudioInputController> controller = |
164 AudioInputController::Create(audio_manager.get(), &event_handler, params); | 164 AudioInputController::Create(audio_manager.get(), &event_handler, params); |
165 ASSERT_TRUE(controller.get()); | 165 ASSERT_TRUE(controller.get()); |
166 | 166 |
167 // Start recording and trigger one OnRecording() call. | 167 // Start recording and trigger one OnRecording() call. |
168 controller->Record(); | 168 controller->Record(); |
169 | 169 |
(...skipping 12 matching lines...) Expand all Loading... |
182 // Test that AudioInputController rejects insanely large packet sizes. | 182 // Test that AudioInputController rejects insanely large packet sizes. |
183 TEST_F(AudioInputControllerTest, SamplesPerPacketTooLarge) { | 183 TEST_F(AudioInputControllerTest, SamplesPerPacketTooLarge) { |
184 // Create an audio device with a very large packet size. | 184 // Create an audio device with a very large packet size. |
185 MockAudioInputControllerEventHandler event_handler; | 185 MockAudioInputControllerEventHandler event_handler; |
186 | 186 |
187 // OnCreated() shall not be called in this test. | 187 // OnCreated() shall not be called in this test. |
188 EXPECT_CALL(event_handler, OnCreated(NotNull())) | 188 EXPECT_CALL(event_handler, OnCreated(NotNull())) |
189 .Times(Exactly(0)); | 189 .Times(Exactly(0)); |
190 | 190 |
191 scoped_ptr<AudioManager> audio_manager(AudioManager::Create()); | 191 scoped_ptr<AudioManager> audio_manager(AudioManager::Create()); |
192 AudioParameters params(AudioParameters::AUDIO_MOCK, kChannelLayout, | 192 AudioParameters params(AudioParameters::AUDIO_MOCK, false, kChannelLayout, |
193 kSampleRate, kBitsPerSample, kSamplesPerPacket * 1000); | 193 kSampleRate, kBitsPerSample, kSamplesPerPacket * 1000); |
194 scoped_refptr<AudioInputController> controller = | 194 scoped_refptr<AudioInputController> controller = |
195 AudioInputController::Create(audio_manager.get(), &event_handler, params); | 195 AudioInputController::Create(audio_manager.get(), &event_handler, params); |
196 ASSERT_FALSE(controller); | 196 ASSERT_FALSE(controller); |
197 } | 197 } |
198 | 198 |
199 // Test calling AudioInputController::Close multiple times. | 199 // Test calling AudioInputController::Close multiple times. |
200 TEST_F(AudioInputControllerTest, CloseTwice) { | 200 TEST_F(AudioInputControllerTest, CloseTwice) { |
201 MockAudioInputControllerEventHandler event_handler; | 201 MockAudioInputControllerEventHandler event_handler; |
202 | 202 |
203 // OnRecording() will be called only once. | 203 // OnRecording() will be called only once. |
204 EXPECT_CALL(event_handler, OnCreated(NotNull())); | 204 EXPECT_CALL(event_handler, OnCreated(NotNull())); |
205 | 205 |
206 // OnRecording() will be called only once. | 206 // OnRecording() will be called only once. |
207 EXPECT_CALL(event_handler, OnRecording(NotNull())) | 207 EXPECT_CALL(event_handler, OnRecording(NotNull())) |
208 .Times(Exactly(1)); | 208 .Times(Exactly(1)); |
209 | 209 |
210 scoped_ptr<AudioManager> audio_manager(AudioManager::Create()); | 210 scoped_ptr<AudioManager> audio_manager(AudioManager::Create()); |
211 AudioParameters params(AudioParameters::AUDIO_MOCK, kChannelLayout, | 211 AudioParameters params(AudioParameters::AUDIO_MOCK, false, kChannelLayout, |
212 kSampleRate, kBitsPerSample, kSamplesPerPacket); | 212 kSampleRate, kBitsPerSample, kSamplesPerPacket); |
213 scoped_refptr<AudioInputController> controller = | 213 scoped_refptr<AudioInputController> controller = |
214 AudioInputController::Create(audio_manager.get(), &event_handler, params); | 214 AudioInputController::Create(audio_manager.get(), &event_handler, params); |
215 ASSERT_TRUE(controller.get()); | 215 ASSERT_TRUE(controller.get()); |
216 | 216 |
217 controller->Record(); | 217 controller->Record(); |
218 | 218 |
219 base::WaitableEvent closed_event_1(true, false); | 219 base::WaitableEvent closed_event_1(true, false); |
220 controller->Close(base::Bind(&base::WaitableEvent::Signal, | 220 controller->Close(base::Bind(&base::WaitableEvent::Signal, |
221 base::Unretained(&closed_event_1))); | 221 base::Unretained(&closed_event_1))); |
222 | 222 |
223 base::WaitableEvent closed_event_2(true, false); | 223 base::WaitableEvent closed_event_2(true, false); |
224 controller->Close(base::Bind(&base::WaitableEvent::Signal, | 224 controller->Close(base::Bind(&base::WaitableEvent::Signal, |
225 base::Unretained(&closed_event_2))); | 225 base::Unretained(&closed_event_2))); |
226 | 226 |
227 closed_event_1.Wait(); | 227 closed_event_1.Wait(); |
228 closed_event_2.Wait(); | 228 closed_event_2.Wait(); |
229 } | 229 } |
230 | 230 |
231 } // namespace media | 231 } // namespace media |
OLD | NEW |