summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authoracolwell@chromium.org <acolwell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-27 22:25:51 +0000
committeracolwell@chromium.org <acolwell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-27 22:25:51 +0000
commit310032ef13cf1291f2d22e387ac5bf2e4c08eb0b (patch)
tree0f8f45e1091d5a31df57bca3826473a67a30cdfc /media
parenta0bfea8ac95229c003a3ab56a4f18773ec8f65a9 (diff)
downloadchromium_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.h4
-rw-r--r--media/filters/adaptive_demuxer.cc4
-rw-r--r--media/filters/adaptive_demuxer.h1
-rw-r--r--media/filters/chunk_demuxer_factory.cc4
-rw-r--r--media/filters/chunk_demuxer_factory.h1
-rw-r--r--media/filters/ffmpeg_demuxer_factory.cc4
-rw-r--r--media/filters/ffmpeg_demuxer_factory.h1
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_;