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

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

Issue 10823097: Part 2: Plumb render view ID to content::MediaObserver (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 8 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 | Annotate | Revision Log
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/bind.h" 5 #include "base/bind.h"
6 #include "base/environment.h" 6 #include "base/environment.h"
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/process_util.h" 9 #include "base/process_util.h"
10 #include "base/sync_socket.h" 10 #include "base/sync_socket.h"
(...skipping 14 matching lines...) Expand all
25 using ::testing::InSequence; 25 using ::testing::InSequence;
26 using ::testing::InvokeWithoutArgs; 26 using ::testing::InvokeWithoutArgs;
27 using ::testing::Return; 27 using ::testing::Return;
28 using ::testing::SaveArg; 28 using ::testing::SaveArg;
29 using ::testing::SetArgumentPointee; 29 using ::testing::SetArgumentPointee;
30 using content::BrowserThread; 30 using content::BrowserThread;
31 31
32 using content::BrowserThreadImpl; 32 using content::BrowserThreadImpl;
33 33
34 static const int kStreamId = 50; 34 static const int kStreamId = 50;
35 static const int kRenderProcessId = 1;
35 static const int kRenderViewId = -2; 36 static const int kRenderViewId = -2;
36 37
37 static bool IsRunningHeadless() { 38 static bool IsRunningHeadless() {
38 scoped_ptr<base::Environment> env(base::Environment::Create()); 39 scoped_ptr<base::Environment> env(base::Environment::Create());
39 if (env->HasVar("CHROME_HEADLESS")) 40 if (env->HasVar("CHROME_HEADLESS"))
40 return true; 41 return true;
41 return false; 42 return false;
42 } 43 }
43 44
44 class MockAudioRendererHost : public AudioRendererHost { 45 class MockAudioRendererHost : public AudioRendererHost {
45 public: 46 public:
46 explicit MockAudioRendererHost( 47 explicit MockAudioRendererHost(
47 media::AudioManager* audio_manager, 48 media::AudioManager* audio_manager,
48 content::MediaObserver* media_observer) 49 content::MediaObserver* media_observer)
49 : AudioRendererHost(audio_manager, media_observer), 50 : AudioRendererHost(kRenderProcessId, audio_manager, media_observer),
50 shared_memory_length_(0) { 51 shared_memory_length_(0) {
51 } 52 }
52 53
53 // A list of mock methods. 54 // A list of mock methods.
54 MOCK_METHOD2(OnStreamCreated, 55 MOCK_METHOD2(OnStreamCreated,
55 void(int stream_id, int length)); 56 void(int stream_id, int length));
56 MOCK_METHOD1(OnStreamPlaying, void(int stream_id)); 57 MOCK_METHOD1(OnStreamPlaying, void(int stream_id));
57 MOCK_METHOD1(OnStreamPaused, void(int stream_id)); 58 MOCK_METHOD1(OnStreamPaused, void(int stream_id));
58 MOCK_METHOD1(OnStreamError, void(int stream_id)); 59 MOCK_METHOD1(OnStreamError, void(int stream_id));
59 MOCK_METHOD2(OnStreamVolume, void(int stream_id, double volume)); 60 MOCK_METHOD2(OnStreamVolume, void(int stream_id, double volume));
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 // We need to continue running message_loop_ to complete all destructions. 187 // We need to continue running message_loop_ to complete all destructions.
187 SyncWithAudioThread(); 188 SyncWithAudioThread();
188 189
189 audio_manager_.reset(); 190 audio_manager_.reset();
190 191
191 io_thread_.reset(); 192 io_thread_.reset();
192 ui_thread_.reset(); 193 ui_thread_.reset();
193 } 194 }
194 195
195 void Create() { 196 void Create() {
196 EXPECT_CALL(*observer_, 197 EXPECT_CALL(*observer_, OnSetAudioStreamStatus(
197 OnSetAudioStreamStatus(_, kStreamId, "created")); 198 _, kRenderViewId, kStreamId, "created"));
198 199
199 InSequence s; 200 InSequence s;
200 // We will first receive an OnStreamCreated() signal. 201 // We will first receive an OnStreamCreated() signal.
201 EXPECT_CALL(*host_, OnStreamCreated(kStreamId, _)) 202 EXPECT_CALL(*host_, OnStreamCreated(kStreamId, _))
202 .WillOnce(QuitMessageLoop(message_loop_.get())); 203 .WillOnce(QuitMessageLoop(message_loop_.get()));
203 204
204 media::AudioParameters::Format format; 205 media::AudioParameters::Format format;
205 if (mock_stream_) 206 if (mock_stream_)
206 format = media::AudioParameters::AUDIO_MOCK; 207 format = media::AudioParameters::AUDIO_MOCK;
207 else 208 else
208 format = media::AudioParameters::AUDIO_PCM_LINEAR; 209 format = media::AudioParameters::AUDIO_PCM_LINEAR;
209 210
210 media::AudioParameters params( 211 media::AudioParameters params(
211 format, CHANNEL_LAYOUT_STEREO, 212 format, CHANNEL_LAYOUT_STEREO,
212 media::AudioParameters::kAudioCDSampleRate, 16, 213 media::AudioParameters::kAudioCDSampleRate, 16,
213 media::AudioParameters::kAudioCDSampleRate / 10); 214 media::AudioParameters::kAudioCDSampleRate / 10);
214 215
215 // Send a create stream message to the audio output stream and wait until 216 // Send a create stream message to the audio output stream and wait until
216 // we receive the created message. 217 // we receive the created message.
217 host_->OnCreateStream(kRenderViewId, kStreamId, params); 218 host_->OnCreateStream(kRenderViewId, kStreamId, params);
218 message_loop_->Run(); 219 message_loop_->Run();
219 } 220 }
220 221
221 void Close() { 222 void Close() {
222 EXPECT_CALL(*observer_, 223 EXPECT_CALL(*observer_, OnSetAudioStreamStatus(
223 OnSetAudioStreamStatus(_, kStreamId, "closed")); 224 _, kRenderViewId, kStreamId, "closed"));
224 225
225 // Send a message to AudioRendererHost to tell it we want to close the 226 // Send a message to AudioRendererHost to tell it we want to close the
226 // stream. 227 // stream.
227 host_->OnCloseStream(kStreamId); 228 host_->OnCloseStream(kStreamId);
228 message_loop_->RunAllPending(); 229 message_loop_->RunAllPending();
229 } 230 }
230 231
231 void Play() { 232 void Play() {
232 EXPECT_CALL(*observer_, 233 EXPECT_CALL(*observer_,
233 OnSetAudioStreamPlaying(_, kStreamId, true)); 234 OnSetAudioStreamPlaying(_, kRenderViewId, kStreamId, true));
234 EXPECT_CALL(*host_, OnStreamPlaying(kStreamId)) 235 EXPECT_CALL(*host_, OnStreamPlaying(kStreamId))
235 .WillOnce(QuitMessageLoop(message_loop_.get())); 236 .WillOnce(QuitMessageLoop(message_loop_.get()));
236 237
237 host_->OnPlayStream(kStreamId); 238 host_->OnPlayStream(kStreamId);
238 message_loop_->Run(); 239 message_loop_->Run();
239 } 240 }
240 241
241 void Pause() { 242 void Pause() {
242 EXPECT_CALL(*observer_, 243 EXPECT_CALL(*observer_, OnSetAudioStreamPlaying(
243 OnSetAudioStreamPlaying(_, kStreamId, false)); 244 _, kRenderViewId, kStreamId, false));
244 EXPECT_CALL(*host_, OnStreamPaused(kStreamId)) 245 EXPECT_CALL(*host_, OnStreamPaused(kStreamId))
245 .WillOnce(QuitMessageLoop(message_loop_.get())); 246 .WillOnce(QuitMessageLoop(message_loop_.get()));
246 247
247 host_->OnPauseStream(kStreamId); 248 host_->OnPauseStream(kStreamId);
248 message_loop_->Run(); 249 message_loop_->Run();
249 } 250 }
250 251
251 void SetVolume(double volume) { 252 void SetVolume(double volume) {
252 EXPECT_CALL(*observer_, 253 EXPECT_CALL(*observer_, OnSetAudioStreamVolume(
253 OnSetAudioStreamVolume(_, kStreamId, volume)); 254 _, kRenderViewId, kStreamId, volume));
254 255
255 host_->OnSetVolume(kStreamId, volume); 256 host_->OnSetVolume(kStreamId, volume);
256 message_loop_->RunAllPending(); 257 message_loop_->RunAllPending();
257 } 258 }
258 259
259 void SimulateError() { 260 void SimulateError() {
260 EXPECT_CALL(*observer_, 261 EXPECT_CALL(*observer_, OnSetAudioStreamStatus(
261 OnSetAudioStreamStatus(_, kStreamId, "error")); 262 _, kRenderViewId, kStreamId, "error"));
262 // Find the first AudioOutputController in the AudioRendererHost. 263 // Find the first AudioOutputController in the AudioRendererHost.
263 CHECK(host_->audio_entries_.size()) 264 CHECK(host_->audio_entries_.size())
264 << "Calls Create() before calling this method"; 265 << "Calls Create() before calling this method";
265 media::AudioOutputController* controller = 266 media::AudioOutputController* controller =
266 host_->audio_entries_.begin()->second->controller; 267 host_->audio_entries_.begin()->second->controller;
267 CHECK(controller) << "AudioOutputController not found"; 268 CHECK(controller) << "AudioOutputController not found";
268 269
269 // Expect an error signal sent through IPC. 270 // Expect an error signal sent through IPC.
270 EXPECT_CALL(*host_, OnStreamError(kStreamId)); 271 EXPECT_CALL(*host_, OnStreamError(kStreamId));
271 272
272 // Expect the audio stream will be deleted. 273 // Expect the audio stream will be deleted.
273 EXPECT_CALL(*observer_, OnDeleteAudioStream(_, kStreamId)); 274 EXPECT_CALL(*observer_, OnDeleteAudioStream(
275 _, kRenderViewId, kStreamId));
274 276
275 // Simulate an error sent from the audio device. 277 // Simulate an error sent from the audio device.
276 host_->OnError(controller, 0); 278 host_->OnError(controller, 0);
277 SyncWithAudioThread(); 279 SyncWithAudioThread();
278 280
279 // Expect the audio stream record is removed. 281 // Expect the audio stream record is removed.
280 EXPECT_EQ(0u, host_->audio_entries_.size()); 282 EXPECT_EQ(0u, host_->audio_entries_.size());
281 } 283 }
282 284
283 // Called on the audio thread. 285 // Called on the audio thread.
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 EnableRealDevice(); 406 EnableRealDevice();
405 407
406 Create(); 408 Create();
407 Play(); 409 Play();
408 SimulateError(); 410 SimulateError();
409 Close(); 411 Close();
410 } 412 }
411 413
412 414
413 // TODO(hclam): Add tests for data conversation in low latency mode. 415 // TODO(hclam): Add tests for data conversation in low latency mode.
OLDNEW
« no previous file with comments | « content/browser/renderer_host/media/audio_renderer_host.cc ('k') | content/browser/renderer_host/media/mock_media_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698