summaryrefslogtreecommitdiffstats
path: root/webkit/api
diff options
context:
space:
mode:
authorhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-10 21:53:22 +0000
committerhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-10 21:53:22 +0000
commit67cd505bfb5fe7c135f23e273c040e0a031b1d88 (patch)
tree8ef480ff3bf6b7f124ab04c5e5d5ce5d39081439 /webkit/api
parent4cfdd73343aaef2f695407f39824da5a6884553e (diff)
downloadchromium_src-67cd505bfb5fe7c135f23e273c040e0a031b1d88.zip
chromium_src-67cd505bfb5fe7c135f23e273c040e0a031b1d88.tar.gz
chromium_src-67cd505bfb5fe7c135f23e273c040e0a031b1d88.tar.bz2
Buffered time ranges for <video>
API change and related changes to support multiple buffered time ranges. This change doesn't change any behavior. BUG=21305 TEST=Open a video or audio file, you see the full bar of buffered ranges. Review URL: http://codereview.chromium.org/199037 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25932 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/api')
-rw-r--r--webkit/api/public/WebMediaPlayer.h13
-rw-r--r--webkit/api/src/WebMediaPlayerClientImpl.cpp16
-rw-r--r--webkit/api/src/WebMediaPlayerClientImpl.h2
3 files changed, 25 insertions, 6 deletions
diff --git a/webkit/api/public/WebMediaPlayer.h b/webkit/api/public/WebMediaPlayer.h
index ddd88e4..b6df8bc 100644
--- a/webkit/api/public/WebMediaPlayer.h
+++ b/webkit/api/public/WebMediaPlayer.h
@@ -31,6 +31,8 @@
#ifndef WebMediaPlayer_h
#define WebMediaPlayer_h
+#include <vector>
+
#include "WebCanvas.h"
namespace WebKit {
@@ -39,6 +41,15 @@ namespace WebKit {
struct WebRect;
struct WebSize;
+ struct WebTimeRange {
+ WebTimeRange(float s, float e) : start(s), end(e) {}
+
+ float start;
+ float end;
+ };
+
+ typedef std::vector<WebTimeRange> WebTimeRanges;
+
class WebMediaPlayer {
public:
enum NetworkState {
@@ -83,7 +94,7 @@ namespace WebKit {
virtual void setVisible(bool) = 0;
virtual bool setAutoBuffer(bool) = 0;
virtual bool totalBytesKnown() = 0;
- virtual float maxTimeBuffered() const = 0;
+ virtual const WebTimeRanges& buffered() const = 0;
virtual float maxTimeSeekable() const = 0;
virtual void setSize(const WebSize&) = 0;
diff --git a/webkit/api/src/WebMediaPlayerClientImpl.cpp b/webkit/api/src/WebMediaPlayerClientImpl.cpp
index a7c64044..b07ff6f 100644
--- a/webkit/api/src/WebMediaPlayerClientImpl.cpp
+++ b/webkit/api/src/WebMediaPlayerClientImpl.cpp
@@ -8,6 +8,7 @@
#if ENABLE(VIDEO)
#include "TemporaryGlue.h"
+#include "TimeRanges.h"
#include "WebCanvas.h"
#include "WebCString.h"
#include "WebKit.h"
@@ -253,11 +254,18 @@ float WebMediaPlayerClientImpl::maxTimeSeekable() const
return 0.0f;
}
-float WebMediaPlayerClientImpl::maxTimeBuffered() const
+WTF::PassRefPtr<WebCore::TimeRanges> WebMediaPlayerClientImpl::buffered() const
{
- if (m_webMediaPlayer.get())
- return m_webMediaPlayer->maxTimeBuffered();
- return 0.0f;
+ if (m_webMediaPlayer.get()) {
+ WebTimeRanges webRanges = m_webMediaPlayer->buffered();
+
+ // FIXME: Save the time ranges in a member variable and update it when needed.
+ WTF::RefPtr<TimeRanges> ranges = TimeRanges::create();
+ for (size_t i = 0; i < webRanges.size(); ++i)
+ ranges->add(webRanges[i].start, webRanges[i].end);
+ return ranges.release();
+ }
+ return TimeRanges::create();
}
int WebMediaPlayerClientImpl::dataRate() const
diff --git a/webkit/api/src/WebMediaPlayerClientImpl.h b/webkit/api/src/WebMediaPlayerClientImpl.h
index 8c5add0..075a710 100644
--- a/webkit/api/src/WebMediaPlayerClientImpl.h
+++ b/webkit/api/src/WebMediaPlayerClientImpl.h
@@ -82,7 +82,7 @@ namespace WebKit {
virtual WebCore::MediaPlayer::NetworkState networkState() const;
virtual WebCore::MediaPlayer::ReadyState readyState() const;
virtual float maxTimeSeekable() const;
- virtual float maxTimeBuffered() const;
+ virtual WTF::PassRefPtr<WebCore::TimeRanges> buffered() const;
virtual int dataRate() const;
virtual void setAutobuffer(bool);
virtual bool totalBytesKnown() const;