diff options
author | acolwell@chromium.org <acolwell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-27 22:25:51 +0000 |
---|---|---|
committer | acolwell@chromium.org <acolwell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-27 22:25:51 +0000 |
commit | 310032ef13cf1291f2d22e387ac5bf2e4c08eb0b (patch) | |
tree | 0f8f45e1091d5a31df57bca3826473a67a30cdfc /media | |
parent | a0bfea8ac95229c003a3ab56a4f18773ec8f65a9 (diff) | |
download | chromium_src-310032ef13cf1291f2d22e387ac5bf2e4c08eb0b.zip chromium_src-310032ef13cf1291f2d22e387ac5bf2e4c08eb0b.tar.gz chromium_src-310032ef13cf1291f2d22e387ac5bf2e4c08eb0b.tar.bz2 |
Revert 94316 - Fix invalid pointer dereference in WebDataSourceFactory when playback is cancelled during init.
Removed Clone() from DemuxerFactory since it isn't being used.
BUG=90393
TEST=WebDataSourceFactoryTest.*
Review URL: http://codereview.chromium.org/7465048
TBR=acolwell@chromium.org
Review URL: http://codereview.chromium.org/7482028
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@94373 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r-- | media/base/filter_factories.h | 4 | ||||
-rw-r--r-- | media/filters/adaptive_demuxer.cc | 4 | ||||
-rw-r--r-- | media/filters/adaptive_demuxer.h | 1 | ||||
-rw-r--r-- | media/filters/chunk_demuxer_factory.cc | 4 | ||||
-rw-r--r-- | media/filters/chunk_demuxer_factory.h | 1 | ||||
-rw-r--r-- | media/filters/ffmpeg_demuxer_factory.cc | 4 | ||||
-rw-r--r-- | media/filters/ffmpeg_demuxer_factory.h | 1 |
7 files changed, 19 insertions, 0 deletions
diff --git a/media/base/filter_factories.h b/media/base/filter_factories.h index c7b10fe..f9c8fa7 100644 --- a/media/base/filter_factories.h +++ b/media/base/filter_factories.h @@ -42,6 +42,10 @@ class DemuxerFactory { // Builds a Demuxer for |url| and returns it via |callback|. virtual void Build(const std::string& url, const BuildCB& callback) = 0; + + // Makes a copy of this factory. + // NOTE: Pending requests are not cloned. + virtual DemuxerFactory* Clone() const = 0; }; } // namespace media diff --git a/media/filters/adaptive_demuxer.cc b/media/filters/adaptive_demuxer.cc index eb902cd..19d7887 100644 --- a/media/filters/adaptive_demuxer.cc +++ b/media/filters/adaptive_demuxer.cc @@ -857,6 +857,10 @@ AdaptiveDemuxerFactory::AdaptiveDemuxerFactory( AdaptiveDemuxerFactory::~AdaptiveDemuxerFactory() {} +DemuxerFactory* AdaptiveDemuxerFactory::Clone() const { + return new AdaptiveDemuxerFactory(delegate_factory_->Clone()); +} + // See AdaptiveDemuxerFactory's class-level comment for |url|'s format. bool ParseAdaptiveUrl( const std::string& url, int* audio_index, int* video_index, diff --git a/media/filters/adaptive_demuxer.h b/media/filters/adaptive_demuxer.h index 24b480a..c357042 100644 --- a/media/filters/adaptive_demuxer.h +++ b/media/filters/adaptive_demuxer.h @@ -253,6 +253,7 @@ class AdaptiveDemuxerFactory : public DemuxerFactory { // If any of the underlying Demuxers encounter construction errors, only the // first one (in manifest order) will get reported back in |cb|. virtual void Build(const std::string& url, const BuildCB& cb) OVERRIDE; + virtual DemuxerFactory* Clone() const OVERRIDE; private: scoped_ptr<DemuxerFactory> delegate_factory_; diff --git a/media/filters/chunk_demuxer_factory.cc b/media/filters/chunk_demuxer_factory.cc index 6587325..561be0e 100644 --- a/media/filters/chunk_demuxer_factory.cc +++ b/media/filters/chunk_demuxer_factory.cc @@ -55,4 +55,8 @@ void ChunkDemuxerFactory::Build(const std::string& url, const BuildCB& cb) { scoped_refptr<Demuxer>(demuxer.get()))); } +DemuxerFactory* ChunkDemuxerFactory::Clone() const { + return new ChunkDemuxerFactory(url_, delegate_factory_->Clone(), client_); +} + } // namespace media diff --git a/media/filters/chunk_demuxer_factory.h b/media/filters/chunk_demuxer_factory.h index 7c9291e..a43b85f 100644 --- a/media/filters/chunk_demuxer_factory.h +++ b/media/filters/chunk_demuxer_factory.h @@ -26,6 +26,7 @@ class ChunkDemuxerFactory : public DemuxerFactory { // DemuxerFactory methods. virtual void Build(const std::string& url, const BuildCB& cb) OVERRIDE; + virtual DemuxerFactory* Clone() const OVERRIDE; private: std::string url_; diff --git a/media/filters/ffmpeg_demuxer_factory.cc b/media/filters/ffmpeg_demuxer_factory.cc index 01ccbee..bead67b 100644 --- a/media/filters/ffmpeg_demuxer_factory.cc +++ b/media/filters/ffmpeg_demuxer_factory.cc @@ -42,4 +42,8 @@ void FFmpegDemuxerFactory::Build(const std::string& url, const BuildCB& cb) { base::Bind(&DataSourceFactoryDone, cb, loop_)); } +DemuxerFactory* FFmpegDemuxerFactory::Clone() const { + return new FFmpegDemuxerFactory(data_source_factory_->Clone(), loop_); +} + } // namespace media diff --git a/media/filters/ffmpeg_demuxer_factory.h b/media/filters/ffmpeg_demuxer_factory.h index 091ee93..029248e 100644 --- a/media/filters/ffmpeg_demuxer_factory.h +++ b/media/filters/ffmpeg_demuxer_factory.h @@ -25,6 +25,7 @@ class FFmpegDemuxerFactory : public DemuxerFactory { // DemuxerFactory methods. virtual void Build(const std::string& url, const BuildCB& cb) OVERRIDE; + virtual DemuxerFactory* Clone() const OVERRIDE; private: scoped_ptr<DataSourceFactory> data_source_factory_; |