diff options
| author | Andrei Popescu <andreip@google.com> | 2009-09-15 13:09:27 +0100 |
|---|---|---|
| committer | Andrei Popescu <andreip@google.com> | 2009-09-17 11:28:35 +0100 |
| commit | 2471bb64fd133cc64b2048b1fb90c84e08c24a16 (patch) | |
| tree | d84cb2020b3bf8eaaddcf5c58a2bca37f39d7e40 /WebCore | |
| parent | bc6b2da0df432c910e5423406a1b7834591d4f6e (diff) | |
| download | external_webkit-2471bb64fd133cc64b2048b1fb90c84e08c24a16.zip external_webkit-2471bb64fd133cc64b2048b1fb90c84e08c24a16.tar.gz external_webkit-2471bb64fd133cc64b2048b1fb90c84e08c24a16.tar.bz2 | |
Add poster support and other fixes
Diffstat (limited to 'WebCore')
| -rw-r--r-- | WebCore/html/HTMLMediaElement.cpp | 10 | ||||
| -rw-r--r-- | WebCore/platform/graphics/MediaPlayer.cpp | 16 | ||||
| -rw-r--r-- | WebCore/platform/graphics/MediaPlayer.h | 5 | ||||
| -rw-r--r-- | WebCore/platform/graphics/MediaPlayerPrivate.h | 5 | ||||
| -rw-r--r-- | WebCore/platform/graphics/android/MediaPlayerPrivateAndroid.h | 3 |
5 files changed, 36 insertions, 3 deletions
diff --git a/WebCore/html/HTMLMediaElement.cpp b/WebCore/html/HTMLMediaElement.cpp index b2e6428..17a3110 100644 --- a/WebCore/html/HTMLMediaElement.cpp +++ b/WebCore/html/HTMLMediaElement.cpp @@ -554,7 +554,15 @@ void HTMLMediaElement::loadResource(const KURL& url, ContentType& contentType) updateVolume(); m_player->load(m_currentSrc, contentType); - + +#if PLATFORM(ANDROID) + if (isVideo() && m_player->canLoadPoster()) { + KURL posterUrl = static_cast<HTMLVideoElement*>(this)->poster(); + if (!posterUrl.isEmpty()) + m_player->setPoster(posterUrl); + } +#endif + if (renderer()) renderer()->updateFromElement(); } diff --git a/WebCore/platform/graphics/MediaPlayer.cpp b/WebCore/platform/graphics/MediaPlayer.cpp index 6205a7b..15815dc 100644 --- a/WebCore/platform/graphics/MediaPlayer.cpp +++ b/WebCore/platform/graphics/MediaPlayer.cpp @@ -104,6 +104,11 @@ public: virtual void paint(GraphicsContext*, const IntRect&) { } +#if PLATFORM(ANDROID) + virtual bool canLoadPoster() const { return false; } + virtual void setPoster(const String&) { } +#endif + #if ENABLE(PLUGIN_PROXY_FOR_VIDEO) virtual void setPoster(const String& /*url*/) { } virtual void deliverNotification(MediaPlayerProxyNotificationType) { } @@ -253,11 +258,18 @@ void MediaPlayer::load(const String& url, const ContentType& contentType) m_private.set(createNullMediaPlayer(this)); } -#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) +#if PLATFORM(ANDROID) +bool MediaPlayer::canLoadPoster() const +{ + return m_private->canLoadPoster(); +} +#endif + +#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) || PLATFORM(ANDROID) void MediaPlayer::setPoster(const String& url) { m_private->setPoster(url); -} +} #endif void MediaPlayer::cancelLoad() diff --git a/WebCore/platform/graphics/MediaPlayer.h b/WebCore/platform/graphics/MediaPlayer.h index 7f5f2a0..1cb7625 100644 --- a/WebCore/platform/graphics/MediaPlayer.h +++ b/WebCore/platform/graphics/MediaPlayer.h @@ -184,6 +184,11 @@ public: MediaPlayerClient* mediaPlayerClient() const { return m_mediaPlayerClient; } +#if PLATFORM(ANDROID) + bool canLoadPoster() const; + void setPoster(const String&); +#endif + #if ENABLE(PLUGIN_PROXY_FOR_VIDEO) void setPoster(const String& url); void deliverNotification(MediaPlayerProxyNotificationType notification); diff --git a/WebCore/platform/graphics/MediaPlayerPrivate.h b/WebCore/platform/graphics/MediaPlayerPrivate.h index 6d1359b..ba0f4b0 100644 --- a/WebCore/platform/graphics/MediaPlayerPrivate.h +++ b/WebCore/platform/graphics/MediaPlayerPrivate.h @@ -92,6 +92,11 @@ public: virtual void setAutobuffer(bool) { }; +#if PLATFORM(ANDROID) + virtual bool canLoadPoster() const { return false; } + virtual void setPoster(const String&) { } +#endif + #if ENABLE(PLUGIN_PROXY_FOR_VIDEO) virtual void setPoster(const String& url) = 0; virtual void deliverNotification(MediaPlayerProxyNotificationType) = 0; diff --git a/WebCore/platform/graphics/android/MediaPlayerPrivateAndroid.h b/WebCore/platform/graphics/android/MediaPlayerPrivateAndroid.h index 7dcb60d..1dbd20b 100644 --- a/WebCore/platform/graphics/android/MediaPlayerPrivateAndroid.h +++ b/WebCore/platform/graphics/android/MediaPlayerPrivateAndroid.h @@ -77,6 +77,9 @@ public: virtual void setSize(const IntSize&); + virtual bool canLoadPoster() const { return true; } + virtual void setPoster(const String&); + virtual void paint(GraphicsContext*, const IntRect&); private: // Android-specific methods and fields. |
