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

Side by Side Diff: media/audio/linux/alsa_output_unittest.cc

Issue 10413075: alsa_output: Drain and pause pcm when stopping. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: whitespace only. Created 8 years, 7 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
« no previous file with comments | « media/audio/linux/alsa_output.cc ('k') | media/audio/linux/alsa_wrapper.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/message_loop.h" 5 #include "base/message_loop.h"
6 #include "base/stringprintf.h" 6 #include "base/stringprintf.h"
7 #include "media/audio/linux/alsa_output.h" 7 #include "media/audio/linux/alsa_output.h"
8 #include "media/audio/linux/alsa_wrapper.h" 8 #include "media/audio/linux/alsa_wrapper.h"
9 #include "media/audio/linux/audio_manager_linux.h" 9 #include "media/audio/linux/audio_manager_linux.h"
10 #include "media/base/data_buffer.h" 10 #include "media/base/data_buffer.h"
(...skipping 25 matching lines...) Expand all
36 MOCK_METHOD3(DeviceNameHint, int(int card, 36 MOCK_METHOD3(DeviceNameHint, int(int card,
37 const char* iface, 37 const char* iface,
38 void*** hints)); 38 void*** hints));
39 MOCK_METHOD2(DeviceNameGetHint, char*(const void* hint, const char* id)); 39 MOCK_METHOD2(DeviceNameGetHint, char*(const void* hint, const char* id));
40 MOCK_METHOD1(DeviceNameFreeHint, int(void** hints)); 40 MOCK_METHOD1(DeviceNameFreeHint, int(void** hints));
41 41
42 MOCK_METHOD4(PcmOpen, int(snd_pcm_t** handle, const char* name, 42 MOCK_METHOD4(PcmOpen, int(snd_pcm_t** handle, const char* name,
43 snd_pcm_stream_t stream, int mode)); 43 snd_pcm_stream_t stream, int mode));
44 MOCK_METHOD1(PcmClose, int(snd_pcm_t* handle)); 44 MOCK_METHOD1(PcmClose, int(snd_pcm_t* handle));
45 MOCK_METHOD1(PcmPrepare, int(snd_pcm_t* handle)); 45 MOCK_METHOD1(PcmPrepare, int(snd_pcm_t* handle));
46 MOCK_METHOD1(PcmDrain, int(snd_pcm_t* handle));
46 MOCK_METHOD1(PcmDrop, int(snd_pcm_t* handle)); 47 MOCK_METHOD1(PcmDrop, int(snd_pcm_t* handle));
47 MOCK_METHOD2(PcmDelay, int(snd_pcm_t* handle, snd_pcm_sframes_t* delay)); 48 MOCK_METHOD2(PcmDelay, int(snd_pcm_t* handle, snd_pcm_sframes_t* delay));
48 MOCK_METHOD3(PcmWritei, snd_pcm_sframes_t(snd_pcm_t* handle, 49 MOCK_METHOD3(PcmWritei, snd_pcm_sframes_t(snd_pcm_t* handle,
49 const void* buffer, 50 const void* buffer,
50 snd_pcm_uframes_t size)); 51 snd_pcm_uframes_t size));
51 MOCK_METHOD3(PcmReadi, snd_pcm_sframes_t(snd_pcm_t* handle, 52 MOCK_METHOD3(PcmReadi, snd_pcm_sframes_t(snd_pcm_t* handle,
52 void* buffer, 53 void* buffer,
53 snd_pcm_uframes_t size)); 54 snd_pcm_uframes_t size));
54 MOCK_METHOD3(PcmRecover, int(snd_pcm_t* handle, int err, int silent)); 55 MOCK_METHOD3(PcmRecover, int(snd_pcm_t* handle, int err, int silent));
55 MOCK_METHOD7(PcmSetParams, int(snd_pcm_t* handle, snd_pcm_format_t format, 56 MOCK_METHOD7(PcmSetParams, int(snd_pcm_t* handle, snd_pcm_format_t format,
(...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 .Times(AtLeast(3)) 452 .Times(AtLeast(3))
452 .WillOnce(Return(kTestFramesPerPacket)) // Buffer is empty. 453 .WillOnce(Return(kTestFramesPerPacket)) // Buffer is empty.
453 .WillOnce(Return(kTestFramesPerPacket)) 454 .WillOnce(Return(kTestFramesPerPacket))
454 .WillRepeatedly(DoAll(InvokeWithoutArgs(&message_loop_, 455 .WillRepeatedly(DoAll(InvokeWithoutArgs(&message_loop_,
455 &MessageLoop::QuitNow), 456 &MessageLoop::QuitNow),
456 Return(0))); // Buffer is full. 457 Return(0))); // Buffer is full.
457 458
458 test_stream->Start(&mock_callback); 459 test_stream->Start(&mock_callback);
459 message_loop_.RunAllPending(); 460 message_loop_.RunAllPending();
460 461
462 EXPECT_CALL(mock_alsa_wrapper_, PcmDrain(kFakeHandle))
463 .WillOnce(Return(0));
464 test_stream->Stop();
465
461 EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle)) 466 EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle))
462 .WillOnce(Return(0)); 467 .WillOnce(Return(0));
463 EXPECT_CALL(mock_alsa_wrapper_, PcmName(kFakeHandle)) 468 EXPECT_CALL(mock_alsa_wrapper_, PcmName(kFakeHandle))
464 .WillOnce(Return(kTestDeviceName)); 469 .WillOnce(Return(kTestDeviceName));
465 test_stream->Close(); 470 test_stream->Close();
466 } 471 }
467 472
468 TEST_F(AlsaPcmOutputStreamTest, WritePacket_FinishedPacket) { 473 TEST_F(AlsaPcmOutputStreamTest, WritePacket_FinishedPacket) {
469 AlsaPcmOutputStream* test_stream = CreateStream(kTestChannelLayout); 474 AlsaPcmOutputStream* test_stream = CreateStream(kTestChannelLayout);
470 InitBuffer(test_stream); 475 InitBuffer(test_stream);
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after
818 823
819 // TODO(ajwong): Find a way to test whether or not another task has been 824 // TODO(ajwong): Find a way to test whether or not another task has been
820 // posted so we can verify that the Alsa code will indeed break the task 825 // posted so we can verify that the Alsa code will indeed break the task
821 // posting loop. 826 // posting loop.
822 827
823 test_stream->TransitionTo(AlsaPcmOutputStream::kIsClosed); 828 test_stream->TransitionTo(AlsaPcmOutputStream::kIsClosed);
824 test_stream->Close(); 829 test_stream->Close();
825 } 830 }
826 831
827 } // namespace media 832 } // namespace media
OLDNEW
« no previous file with comments | « media/audio/linux/alsa_output.cc ('k') | media/audio/linux/alsa_wrapper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698