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

Unified Diff: media/filters/pipeline_integration_test.cc

Issue 13813016: Remove reference counting from media::Demuxer and friends. (Closed) Base URL: http://git.chromium.org/chromium/src.git@vd_scoped
Patch Set: Created 7 years, 8 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/pipeline_integration_test.cc
diff --git a/media/filters/pipeline_integration_test.cc b/media/filters/pipeline_integration_test.cc
index 2945db2ca2dbb7c4320584d5c9be906878b3fc77..16456764a50407aa3bd272f00a9289b735ce3b00 100644
--- a/media/filters/pipeline_integration_test.cc
+++ b/media/filters/pipeline_integration_test.cc
@@ -230,11 +230,14 @@ class MockMediaSource {
: file_path_(GetTestDataFilePath(filename)),
current_position_(0),
initial_append_size_(initial_append_size),
- mimetype_(mimetype) {
- chunk_demuxer_ = new ChunkDemuxer(
- base::Bind(&MockMediaSource::DemuxerOpened, base::Unretained(this)),
- base::Bind(&MockMediaSource::DemuxerNeedKey, base::Unretained(this)),
- LogCB());
+ mimetype_(mimetype),
+ chunk_demuxer_(new ChunkDemuxer(
+ base::Bind(&MockMediaSource::DemuxerOpened,
+ base::Unretained(this)),
+ base::Bind(&MockMediaSource::DemuxerNeedKey,
+ base::Unretained(this)),
+ LogCB())),
+ owned_chunk_demuxer_(chunk_demuxer_) {
file_data_ = ReadTestDataFile(filename);
@@ -247,7 +250,7 @@ class MockMediaSource {
virtual ~MockMediaSource() {}
- const scoped_refptr<ChunkDemuxer>& demuxer() const { return chunk_demuxer_; }
+ scoped_ptr<Demuxer> GetDemuxer() { return owned_chunk_demuxer_.Pass(); }
void set_need_key_cb(const NeedKeyCB& need_key_cb) {
need_key_cb_ = need_key_cb;
@@ -266,7 +269,7 @@ class MockMediaSource {
}
void AppendData(int size) {
- DCHECK(chunk_demuxer_.get());
+ DCHECK(chunk_demuxer_);
DCHECK_LT(current_position_, file_data_->GetDataSize());
DCHECK_LE(current_position_ + size, file_data_->GetDataSize());
chunk_demuxer_->AppendData(
@@ -286,7 +289,7 @@ class MockMediaSource {
}
void Abort() {
- if (!chunk_demuxer_.get())
+ if (!chunk_demuxer_)
return;
chunk_demuxer_->Shutdown();
chunk_demuxer_ = NULL;
@@ -326,7 +329,8 @@ class MockMediaSource {
int current_position_;
int initial_append_size_;
std::string mimetype_;
- scoped_refptr<ChunkDemuxer> chunk_demuxer_;
+ ChunkDemuxer* chunk_demuxer_;
+ scoped_ptr<Demuxer> owned_chunk_demuxer_;
NeedKeyCB need_key_cb_;
};
@@ -340,7 +344,7 @@ class PipelineIntegrationTest
EXPECT_CALL(*this, OnBufferingState(Pipeline::kPrerollCompleted))
.Times(AtMost(1));
pipeline_->Start(
- CreateFilterCollection(source->demuxer(), NULL),
+ CreateFilterCollection(source->GetDemuxer(), NULL),
base::Bind(&PipelineIntegrationTest::OnEnded, base::Unretained(this)),
base::Bind(&PipelineIntegrationTest::OnError, base::Unretained(this)),
QuitOnStatusCB(PIPELINE_OK),
@@ -359,7 +363,8 @@ class PipelineIntegrationTest
EXPECT_CALL(*this, OnBufferingState(Pipeline::kPrerollCompleted))
.Times(AtMost(1));
pipeline_->Start(
- CreateFilterCollection(source->demuxer(), encrypted_media->decryptor()),
+ CreateFilterCollection(source->GetDemuxer(),
+ encrypted_media->decryptor()),
base::Bind(&PipelineIntegrationTest::OnEnded, base::Unretained(this)),
base::Bind(&PipelineIntegrationTest::OnError, base::Unretained(this)),
QuitOnStatusCB(PIPELINE_OK),
@@ -559,7 +564,8 @@ TEST_F(PipelineIntegrationTest,
Play();
EXPECT_EQ(PIPELINE_ERROR_DECODE, WaitUntilEndedOrError());
- source.Abort();
+ // XXX this is use after free because pipeline destroys demuxers on error
scherkus (not reviewing) 2013/04/17 17:21:59 FYI
+ // source.Abort();
}
// Config changes from clear to encrypted are not currently supported.
@@ -587,7 +593,8 @@ TEST_F(PipelineIntegrationTest,
Play();
EXPECT_EQ(PIPELINE_ERROR_DECODE, WaitUntilEndedOrError());
- source.Abort();
+ // XXX this is use after free because pipeline destroys demuxers on error
scherkus (not reviewing) 2013/04/17 17:21:59 FYI
+ // source.Abort();
}
#if defined(GOOGLE_CHROME_BUILD) || defined(USE_PROPRIETARY_CODECS)
@@ -671,7 +678,8 @@ TEST_F(PipelineIntegrationTest,
Play();
EXPECT_EQ(PIPELINE_ERROR_DECODE, WaitUntilEndedOrError());
- source.Abort();
+ // XXX this is use after free because pipeline destroys demuxers on error
scherkus (not reviewing) 2013/04/17 17:21:59 FYI
+ // source.Abort();
}
// Config changes from encrypted to clear are not currently supported.
@@ -699,7 +707,8 @@ TEST_F(PipelineIntegrationTest,
Play();
EXPECT_EQ(PIPELINE_ERROR_DECODE, WaitUntilEndedOrError());
- source.Abort();
+ // XXX this is use after free because pipeline destroys demuxers on error
scherkus (not reviewing) 2013/04/17 17:21:59 FYI
+ // source.Abort();
}
// Verify files which change configuration midstream fail gracefully.

Powered by Google App Engine
This is Rietveld 408576698