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

Unified Diff: media/filters/audio_renderer_impl_unittest.cc

Issue 407583002: Fold AudioRenderer::Stop() into the dtor. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments addressed Created 6 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: media/filters/audio_renderer_impl_unittest.cc
diff --git a/media/filters/audio_renderer_impl_unittest.cc b/media/filters/audio_renderer_impl_unittest.cc
index c6cb9523cf7d59625f05f0c3ed30ea5cb7b7d9d0..4e50d4373586d5c6a6d665df9ddd09154de316db 100644
--- a/media/filters/audio_renderer_impl_unittest.cc
+++ b/media/filters/audio_renderer_impl_unittest.cc
@@ -44,7 +44,6 @@ class AudioRendererImplTest : public ::testing::Test {
// Give the decoder some non-garbage media properties.
AudioRendererImplTest()
: hardware_config_(AudioParameters(), AudioParameters()),
- needs_stop_(true),
demuxer_stream_(DemuxerStream::AUDIO),
decoder_(new MockAudioDecoder()),
last_time_update_(kNoTimestamp()),
@@ -88,11 +87,6 @@ class AudioRendererImplTest : public ::testing::Test {
virtual ~AudioRendererImplTest() {
SCOPED_TRACE("~AudioRendererImplTest()");
- if (needs_stop_) {
- WaitableMessageLoopEvent event;
- renderer_->Stop(event.GetClosure());
- event.RunAndWait();
- }
}
void ExpectUnsupportedAudioDecoder() {
@@ -147,38 +141,31 @@ class AudioRendererImplTest : public ::testing::Test {
EXPECT_TRUE(decode_cb_.is_null());
}
- void InitializeAndStop() {
+ void InitializeAndDestroy() {
EXPECT_CALL(*decoder_, Initialize(_, _, _))
- .WillOnce(DoAll(SaveArg<2>(&output_cb_),
- RunCallback<1>(PIPELINE_OK)));
+ .WillOnce(RunCallback<1>(PIPELINE_OK));
WaitableMessageLoopEvent event;
InitializeRenderer(event.GetPipelineStatusCB());
- // Stop before we let the MessageLoop run, this simulates an interleaving
- // in which we end up calling Stop() while the OnDecoderSelected callback
- // is in flight.
- renderer_->Stop(NewExpectedClosure());
+ // Destroy the |renderer_| before we let the MessageLoop run, this simulates
+ // an interleaving in which we end up destroying the |renderer_| while the
+ // OnDecoderSelected callback is in flight.
+ renderer_.reset();
event.RunAndWaitForStatus(PIPELINE_ERROR_ABORT);
- EXPECT_EQ(renderer_->state_, AudioRendererImpl::kStopped);
}
- void InitializeAndStopDuringDecoderInit() {
+ void InitializeAndDestroyDuringDecoderInit() {
EXPECT_CALL(*decoder_, Initialize(_, _, _))
- .WillOnce(DoAll(SaveArg<2>(&output_cb_),
- EnterPendingDecoderInitStateAction(this)));
+ .WillOnce(EnterPendingDecoderInitStateAction(this));
WaitableMessageLoopEvent event;
InitializeRenderer(event.GetPipelineStatusCB());
-
base::RunLoop().RunUntilIdle();
DCHECK(!init_decoder_cb_.is_null());
- renderer_->Stop(NewExpectedClosure());
- base::ResetAndReturn(&init_decoder_cb_).Run(PIPELINE_OK);
-
+ renderer_.reset();
event.RunAndWaitForStatus(PIPELINE_ERROR_ABORT);
- EXPECT_EQ(renderer_->state_, AudioRendererImpl::kStopped);
}
void EnterPendingDecoderInitState(PipelineStatusCB cb) {
@@ -339,16 +326,9 @@ class AudioRendererImplTest : public ::testing::Test {
scoped_refptr<FakeAudioRendererSink> sink_;
AudioHardwareConfig hardware_config_;
- // Whether or not the test needs the destructor to call Stop() on
- // |renderer_| at destruction.
- bool needs_stop_;
-
private:
void DecodeDecoder(const scoped_refptr<DecoderBuffer>& buffer,
const AudioDecoder::DecodeCB& decode_cb) {
- // We shouldn't ever call Read() after Stop():
- EXPECT_TRUE(stop_decoder_cb_.is_null());
-
// TODO(scherkus): Make this a DCHECK after threading semantics are fixed.
if (base::MessageLoop::current() != &message_loop_) {
message_loop_.PostTask(FROM_HERE, base::Bind(
@@ -405,7 +385,6 @@ class AudioRendererImplTest : public ::testing::Test {
// Run during DecodeDecoder() to unblock WaitForPendingRead().
base::Closure wait_for_pending_decode_cb_;
- base::Closure stop_decoder_cb_;
PipelineStatusCB init_decoder_cb_;
base::TimeDelta last_time_update_;
@@ -553,7 +532,7 @@ TEST_F(AudioRendererImplTest, PendingRead_Flush) {
Preroll(1000, PIPELINE_OK);
}
-TEST_F(AudioRendererImplTest, PendingRead_Stop) {
+TEST_F(AudioRendererImplTest, PendingRead_Destroy) {
Initialize();
Preroll();
@@ -567,18 +546,10 @@ TEST_F(AudioRendererImplTest, PendingRead_Stop) {
EXPECT_TRUE(IsReadPending());
- WaitableMessageLoopEvent stop_event;
- renderer_->Stop(stop_event.GetClosure());
- needs_stop_ = false;
-
- SatisfyPendingRead(kDataSize);
-
- stop_event.RunAndWait();
-
- EXPECT_FALSE(IsReadPending());
+ renderer_.reset();
}
-TEST_F(AudioRendererImplTest, PendingFlush_Stop) {
+TEST_F(AudioRendererImplTest, PendingFlush_Destroy) {
Initialize();
Preroll();
@@ -599,18 +570,15 @@ TEST_F(AudioRendererImplTest, PendingFlush_Stop) {
EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_NOTHING));
SatisfyPendingRead(kDataSize);
- WaitableMessageLoopEvent event;
- renderer_->Stop(event.GetClosure());
- event.RunAndWait();
- needs_stop_ = false;
+ renderer_.reset();
}
-TEST_F(AudioRendererImplTest, InitializeThenStop) {
- InitializeAndStop();
+TEST_F(AudioRendererImplTest, InitializeThenDestroy) {
+ InitializeAndDestroy();
}
-TEST_F(AudioRendererImplTest, InitializeThenStopDuringDecoderInit) {
- InitializeAndStopDuringDecoderInit();
+TEST_F(AudioRendererImplTest, InitializeThenDestroyDuringDecoderInit) {
+ InitializeAndDestroyDuringDecoderInit();
}
TEST_F(AudioRendererImplTest, ConfigChangeDrainsConverter) {
« media/filters/audio_renderer_impl.cc ('K') | « media/filters/audio_renderer_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698