summaryrefslogtreecommitdiff
path: root/Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@digia.com>2013-09-13 12:51:20 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-19 20:50:05 +0200
commitd441d6f39bb846989d95bcf5caf387b42414718d (patch)
treee367e64a75991c554930278175d403c072de6bb8 /Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp
parent0060b2994c07842f4c59de64b5e3e430525c4b90 (diff)
downloadqtwebkit-d441d6f39bb846989d95bcf5caf387b42414718d.tar.gz
Import Qt5x2 branch of QtWebkit for Qt 5.2
Importing a new snapshot of webkit. Change-Id: I2d01ad12cdc8af8cb015387641120a9d7ea5f10c Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Diffstat (limited to 'Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp')
-rw-r--r--Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp941
1 files changed, 0 insertions, 941 deletions
diff --git a/Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp b/Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp
deleted file mode 100644
index e75c73947..000000000
--- a/Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp
+++ /dev/null
@@ -1,941 +0,0 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "config.h"
-#include "WebMediaPlayerClientImpl.h"
-
-#if ENABLE(VIDEO)
-
-#include "AudioBus.h"
-#include "AudioSourceProvider.h"
-#include "AudioSourceProviderClient.h"
-#include "Frame.h"
-#include "GraphicsContext.h"
-#include "GraphicsLayerChromium.h"
-#include "HTMLMediaElement.h"
-#include "IntSize.h"
-#include "KURL.h"
-#include "MediaPlayer.h"
-#include "NotImplemented.h"
-#include "PlatformContextSkia.h"
-#include "RenderView.h"
-#include "TimeRanges.h"
-#include "WebAudioSourceProvider.h"
-#include "WebFrameClient.h"
-#include "WebFrameImpl.h"
-#include "WebHelperPluginImpl.h"
-#include "WebMediaPlayer.h"
-#include "WebViewImpl.h"
-#include <public/Platform.h>
-#include <public/WebCString.h>
-#include <public/WebCanvas.h>
-#include <public/WebCompositorSupport.h>
-#include <public/WebMimeRegistry.h>
-#include <public/WebRect.h>
-#include <public/WebSize.h>
-#include <public/WebString.h>
-#include <public/WebURL.h>
-#include <public/WebVideoLayer.h>
-
-#if USE(ACCELERATED_COMPOSITING)
-#include "RenderLayerCompositor.h"
-#endif
-
-#include <wtf/Assertions.h>
-#include <wtf/text/CString.h>
-
-using namespace WebCore;
-
-namespace WebKit {
-
-static PassOwnPtr<WebMediaPlayer> createWebMediaPlayer(WebMediaPlayerClient* client, const WebURL& url, Frame* frame)
-{
- WebFrameImpl* webFrame = WebFrameImpl::fromFrame(frame);
-
- if (!webFrame->client())
- return nullptr;
- return adoptPtr(webFrame->client()->createMediaPlayer(webFrame, url, client));
-}
-
-bool WebMediaPlayerClientImpl::m_isEnabled = false;
-
-bool WebMediaPlayerClientImpl::isEnabled()
-{
- return m_isEnabled;
-}
-
-void WebMediaPlayerClientImpl::setIsEnabled(bool isEnabled)
-{
- m_isEnabled = isEnabled;
-}
-
-void WebMediaPlayerClientImpl::registerSelf(MediaEngineRegistrar registrar)
-{
- if (m_isEnabled) {
- registrar(WebMediaPlayerClientImpl::create,
- WebMediaPlayerClientImpl::getSupportedTypes,
- WebMediaPlayerClientImpl::supportsType,
- 0,
- 0,
- 0);
- }
-}
-
-WebMediaPlayer* WebMediaPlayerClientImpl::mediaPlayer() const
-{
- return m_webMediaPlayer.get();
-}
-
-// WebMediaPlayerClient --------------------------------------------------------
-
-WebMediaPlayerClientImpl::~WebMediaPlayerClientImpl()
-{
-#if USE(ACCELERATED_COMPOSITING)
- if (m_videoFrameProviderClient)
- m_videoFrameProviderClient->stopUsingProvider();
- // No need for a lock here, as getCurrentFrame/putCurrentFrame can't be
- // called now that the client is no longer using this provider. Also, load()
- // and this destructor are called from the same thread.
- if (m_webMediaPlayer)
- m_webMediaPlayer->setStreamTextureClient(0);
-#endif
- if (m_helperPlugin)
- closeHelperPlugin();
-#if USE(ACCELERATED_COMPOSITING)
- if (m_videoLayer)
- GraphicsLayerChromium::unregisterContentsLayer(m_videoLayer->layer());
-#endif
-}
-
-void WebMediaPlayerClientImpl::networkStateChanged()
-{
- ASSERT(m_mediaPlayer);
- m_mediaPlayer->networkStateChanged();
-}
-
-void WebMediaPlayerClientImpl::readyStateChanged()
-{
- ASSERT(m_mediaPlayer);
- m_mediaPlayer->readyStateChanged();
-#if USE(ACCELERATED_COMPOSITING)
- if (hasVideo() && supportsAcceleratedRendering() && !m_videoLayer) {
- m_videoLayer = adoptPtr(Platform::current()->compositorSupport()->createVideoLayer(this));
-
- m_videoLayer->layer()->setOpaque(m_opaque);
- GraphicsLayerChromium::registerContentsLayer(m_videoLayer->layer());
- }
-#endif
-}
-
-void WebMediaPlayerClientImpl::volumeChanged(float newVolume)
-{
- ASSERT(m_mediaPlayer);
- m_mediaPlayer->volumeChanged(newVolume);
-}
-
-void WebMediaPlayerClientImpl::muteChanged(bool newMute)
-{
- ASSERT(m_mediaPlayer);
- m_mediaPlayer->muteChanged(newMute);
-}
-
-void WebMediaPlayerClientImpl::timeChanged()
-{
- ASSERT(m_mediaPlayer);
- m_mediaPlayer->timeChanged();
-}
-
-void WebMediaPlayerClientImpl::repaint()
-{
- ASSERT(m_mediaPlayer);
-#if USE(ACCELERATED_COMPOSITING)
- if (m_videoLayer && supportsAcceleratedRendering())
- m_videoLayer->layer()->invalidate();
-#endif
- m_mediaPlayer->repaint();
-}
-
-void WebMediaPlayerClientImpl::durationChanged()
-{
- ASSERT(m_mediaPlayer);
- m_mediaPlayer->durationChanged();
-}
-
-void WebMediaPlayerClientImpl::rateChanged()
-{
- ASSERT(m_mediaPlayer);
- m_mediaPlayer->rateChanged();
-}
-
-void WebMediaPlayerClientImpl::sizeChanged()
-{
- ASSERT(m_mediaPlayer);
- m_mediaPlayer->sizeChanged();
-}
-
-void WebMediaPlayerClientImpl::setOpaque(bool opaque)
-{
-#if USE(ACCELERATED_COMPOSITING)
- m_opaque = opaque;
- if (m_videoLayer)
- m_videoLayer->layer()->setOpaque(m_opaque);
-#endif
-}
-
-void WebMediaPlayerClientImpl::sawUnsupportedTracks()
-{
- ASSERT(m_mediaPlayer);
- m_mediaPlayer->mediaPlayerClient()->mediaPlayerSawUnsupportedTracks(m_mediaPlayer);
-}
-
-float WebMediaPlayerClientImpl::volume() const
-{
- if (m_mediaPlayer)
- return m_mediaPlayer->volume();
- return 0.0f;
-}
-
-void WebMediaPlayerClientImpl::playbackStateChanged()
-{
- ASSERT(m_mediaPlayer);
- m_mediaPlayer->playbackStateChanged();
-}
-
-WebMediaPlayer::Preload WebMediaPlayerClientImpl::preload() const
-{
- if (m_mediaPlayer)
- return static_cast<WebMediaPlayer::Preload>(m_mediaPlayer->preload());
- return static_cast<WebMediaPlayer::Preload>(m_preload);
-}
-
-void WebMediaPlayerClientImpl::sourceOpened()
-{
-#if ENABLE(MEDIA_SOURCE)
- ASSERT(m_mediaPlayer);
- m_mediaPlayer->sourceOpened();
-#endif
-}
-
-WebKit::WebURL WebMediaPlayerClientImpl::sourceURL() const
-{
-#if ENABLE(MEDIA_SOURCE)
- ASSERT(m_mediaPlayer);
- return KURL(ParsedURLString, m_mediaPlayer->sourceURL());
-#else
- return KURL();
-#endif
-}
-
-void WebMediaPlayerClientImpl::keyAdded(const WebString& keySystem, const WebString& sessionId)
-{
-#if ENABLE(ENCRYPTED_MEDIA)
- ASSERT(m_mediaPlayer);
- m_mediaPlayer->keyAdded(keySystem, sessionId);
-#else
- UNUSED_PARAM(keySystem);
- UNUSED_PARAM(sessionId);
-#endif
-}
-
-void WebMediaPlayerClientImpl::keyError(const WebString& keySystem, const WebString& sessionId, MediaKeyErrorCode errorCode, unsigned short systemCode)
-{
-#if ENABLE(ENCRYPTED_MEDIA)
- ASSERT(m_mediaPlayer);
- m_mediaPlayer->keyError(keySystem, sessionId, static_cast<MediaPlayerClient::MediaKeyErrorCode>(errorCode), systemCode);
-#else
- UNUSED_PARAM(keySystem);
- UNUSED_PARAM(sessionId);
- UNUSED_PARAM(errorCode);
- UNUSED_PARAM(systemCode);
-#endif
-}
-
-void WebMediaPlayerClientImpl::keyMessage(const WebString& keySystem, const WebString& sessionId, const unsigned char* message, unsigned messageLength)
-{
-#if ENABLE(ENCRYPTED_MEDIA)
- ASSERT(m_mediaPlayer);
- m_mediaPlayer->keyMessage(keySystem, sessionId, message, messageLength);
-#else
- UNUSED_PARAM(keySystem);
- UNUSED_PARAM(sessionId);
- UNUSED_PARAM(message);
- UNUSED_PARAM(messageLength);
-#endif
-}
-
-void WebMediaPlayerClientImpl::keyNeeded(const WebString& keySystem, const WebString& sessionId, const unsigned char* initData, unsigned initDataLength)
-{
-#if ENABLE(ENCRYPTED_MEDIA)
- ASSERT(m_mediaPlayer);
- m_mediaPlayer->keyNeeded(keySystem, sessionId, initData, initDataLength);
-#else
- UNUSED_PARAM(keySystem);
- UNUSED_PARAM(sessionId);
- UNUSED_PARAM(initData);
- UNUSED_PARAM(initDataLength);
-#endif
-}
-
-WebPlugin* WebMediaPlayerClientImpl::createHelperPlugin(const WebString& pluginType, WebFrame* frame)
-{
- ASSERT(!m_helperPlugin);
- WebViewImpl* webView = static_cast<WebViewImpl*>(frame->view());
- m_helperPlugin = webView->createHelperPlugin(pluginType);
- if (!m_helperPlugin)
- return 0;
-
- WebPlugin* plugin = m_helperPlugin->getPlugin();
- if (!plugin) {
- // There is no need to keep the helper plugin around and the caller
- // should not be expected to call close after a failure (null pointer).
- closeHelperPlugin();
- return 0;
- }
-
- return plugin;
-}
-
-void WebMediaPlayerClientImpl::closeHelperPlugin()
-{
- ASSERT(m_helperPlugin);
- m_helperPlugin->closeHelperPlugin();
- m_helperPlugin = 0;
-}
-
-void WebMediaPlayerClientImpl::disableAcceleratedCompositing()
-{
- m_supportsAcceleratedCompositing = false;
-}
-
-// MediaPlayerPrivateInterface -------------------------------------------------
-
-void WebMediaPlayerClientImpl::load(const String& url)
-{
- m_url = url;
-
- MutexLocker locker(m_webMediaPlayerMutex);
- if (m_preload == MediaPlayer::None) {
-#if ENABLE(WEB_AUDIO)
- m_audioSourceProvider.wrap(0); // Clear weak reference to m_webMediaPlayer's WebAudioSourceProvider.
-#endif
- m_webMediaPlayer.clear();
- m_delayingLoad = true;
- } else
- loadInternal();
-}
-
-void WebMediaPlayerClientImpl::loadInternal()
-{
-#if ENABLE(WEB_AUDIO)
- m_audioSourceProvider.wrap(0); // Clear weak reference to m_webMediaPlayer's WebAudioSourceProvider.
-#endif
-
- Frame* frame = static_cast<HTMLMediaElement*>(m_mediaPlayer->mediaPlayerClient())->document()->frame();
- m_webMediaPlayer = createWebMediaPlayer(this, KURL(ParsedURLString, m_url), frame);
- if (m_webMediaPlayer) {
-#if ENABLE(WEB_AUDIO)
- // Make sure if we create/re-create the WebMediaPlayer that we update our wrapper.
- m_audioSourceProvider.wrap(m_webMediaPlayer->audioSourceProvider());
-#endif
- m_webMediaPlayer->load(
- KURL(ParsedURLString, m_url),
- static_cast<WebMediaPlayer::CORSMode>(m_mediaPlayer->mediaPlayerClient()->mediaPlayerCORSMode()));
- }
-}
-
-void WebMediaPlayerClientImpl::cancelLoad()
-{
- if (m_webMediaPlayer)
- m_webMediaPlayer->cancelLoad();
-}
-
-#if USE(ACCELERATED_COMPOSITING)
-WebLayer* WebMediaPlayerClientImpl::platformLayer() const
-{
- ASSERT(m_supportsAcceleratedCompositing);
- return m_videoLayer ? m_videoLayer->layer() : 0;
-}
-#endif
-
-PlatformMedia WebMediaPlayerClientImpl::platformMedia() const
-{
- PlatformMedia pm;
- pm.type = PlatformMedia::ChromiumMediaPlayerType;
- pm.media.chromiumMediaPlayer = const_cast<WebMediaPlayerClientImpl*>(this);
- return pm;
-}
-
-void WebMediaPlayerClientImpl::play()
-{
- if (m_webMediaPlayer)
- m_webMediaPlayer->play();
-}
-
-void WebMediaPlayerClientImpl::pause()
-{
- if (m_webMediaPlayer)
- m_webMediaPlayer->pause();
-}
-
-#if USE(NATIVE_FULLSCREEN_VIDEO)
-void WebMediaPlayerClientImpl::enterFullscreen()
-{
- if (m_webMediaPlayer)
- m_webMediaPlayer->enterFullscreen();
-}
-
-void WebMediaPlayerClientImpl::exitFullscreen()
-{
- if (m_webMediaPlayer)
- m_webMediaPlayer->exitFullscreen();
-}
-
-bool WebMediaPlayerClientImpl::canEnterFullscreen() const
-{
- return m_webMediaPlayer && m_webMediaPlayer->canEnterFullscreen();
-}
-#endif
-
-#if ENABLE(MEDIA_SOURCE)
-WebCore::MediaPlayer::AddIdStatus WebMediaPlayerClientImpl::sourceAddId(const String& id, const String& type, const Vector<String>& codecs)
-{
- if (!m_webMediaPlayer)
- return WebCore::MediaPlayer::NotSupported;
-
- return static_cast<WebCore::MediaPlayer::AddIdStatus>(m_webMediaPlayer->sourceAddId(id, type, codecs));
-}
-
-bool WebMediaPlayerClientImpl::sourceRemoveId(const String& id)
-{
- if (!m_webMediaPlayer)
- return false;
-
- return m_webMediaPlayer->sourceRemoveId(id);
-}
-
-PassRefPtr<TimeRanges> WebMediaPlayerClientImpl::sourceBuffered(const String& id)
-{
- if (!m_webMediaPlayer)
- return TimeRanges::create();
-
- WebTimeRanges webRanges = m_webMediaPlayer->sourceBuffered(id);
- 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();
-}
-
-bool WebMediaPlayerClientImpl::sourceAppend(const String& id, const unsigned char* data, unsigned length)
-{
- if (m_webMediaPlayer)
- return m_webMediaPlayer->sourceAppend(id, data, length);
- return false;
-}
-
-bool WebMediaPlayerClientImpl::sourceAbort(const String& id)
-{
- if (!m_webMediaPlayer)
- return false;
-
- return m_webMediaPlayer->sourceAbort(id);
-}
-
-void WebMediaPlayerClientImpl::sourceSetDuration(double duration)
-{
- if (m_webMediaPlayer)
- m_webMediaPlayer->sourceSetDuration(duration);
-}
-
-void WebMediaPlayerClientImpl::sourceEndOfStream(WebCore::MediaPlayer::EndOfStreamStatus status)
-{
- if (m_webMediaPlayer)
- m_webMediaPlayer->sourceEndOfStream(static_cast<WebMediaPlayer::EndOfStreamStatus>(status));
-}
-
-bool WebMediaPlayerClientImpl::sourceSetTimestampOffset(const String& id, double offset)
-{
- if (!m_webMediaPlayer)
- return false;
- return m_webMediaPlayer->sourceSetTimestampOffset(id, offset);
-}
-#endif
-
-#if ENABLE(ENCRYPTED_MEDIA)
-MediaPlayer::MediaKeyException WebMediaPlayerClientImpl::generateKeyRequest(const String& keySystem, const unsigned char* initData, unsigned initDataLength)
-{
- if (!m_webMediaPlayer)
- return MediaPlayer::InvalidPlayerState;
-
- WebMediaPlayer::MediaKeyException result = m_webMediaPlayer->generateKeyRequest(keySystem, initData, initDataLength);
- return static_cast<MediaPlayer::MediaKeyException>(result);
-}
-
-MediaPlayer::MediaKeyException WebMediaPlayerClientImpl::addKey(const String& keySystem, const unsigned char* key, unsigned keyLength, const unsigned char* initData, unsigned initDataLength, const String& sessionId)
-{
- if (!m_webMediaPlayer)
- return MediaPlayer::InvalidPlayerState;
-
- WebMediaPlayer::MediaKeyException result = m_webMediaPlayer->addKey(keySystem, key, keyLength, initData, initDataLength, sessionId);
- return static_cast<MediaPlayer::MediaKeyException>(result);
-}
-
-MediaPlayer::MediaKeyException WebMediaPlayerClientImpl::cancelKeyRequest(const String& keySystem, const String& sessionId)
-{
- if (!m_webMediaPlayer)
- return MediaPlayer::InvalidPlayerState;
-
- WebMediaPlayer::MediaKeyException result = m_webMediaPlayer->cancelKeyRequest(keySystem, sessionId);
- return static_cast<MediaPlayer::MediaKeyException>(result);
-}
-#endif
-
-void WebMediaPlayerClientImpl::prepareToPlay()
-{
- if (m_delayingLoad)
- startDelayedLoad();
-}
-
-IntSize WebMediaPlayerClientImpl::naturalSize() const
-{
- if (m_webMediaPlayer)
- return m_webMediaPlayer->naturalSize();
- return IntSize();
-}
-
-bool WebMediaPlayerClientImpl::hasVideo() const
-{
- if (m_webMediaPlayer)
- return m_webMediaPlayer->hasVideo();
- return false;
-}
-
-bool WebMediaPlayerClientImpl::hasAudio() const
-{
- if (m_webMediaPlayer)
- return m_webMediaPlayer->hasAudio();
- return false;
-}
-
-void WebMediaPlayerClientImpl::setVisible(bool visible)
-{
- if (m_webMediaPlayer)
- m_webMediaPlayer->setVisible(visible);
-}
-
-float WebMediaPlayerClientImpl::duration() const
-{
- if (m_webMediaPlayer)
- return m_webMediaPlayer->duration();
- return 0.0f;
-}
-
-float WebMediaPlayerClientImpl::currentTime() const
-{
- if (m_webMediaPlayer)
- return m_webMediaPlayer->currentTime();
- return 0.0f;
-}
-
-void WebMediaPlayerClientImpl::seek(float time)
-{
- if (m_webMediaPlayer)
- m_webMediaPlayer->seek(time);
-}
-
-bool WebMediaPlayerClientImpl::seeking() const
-{
- if (m_webMediaPlayer)
- return m_webMediaPlayer->seeking();
- return false;
-}
-
-void WebMediaPlayerClientImpl::setEndTime(float time)
-{
- if (m_webMediaPlayer)
- m_webMediaPlayer->setEndTime(time);
-}
-
-void WebMediaPlayerClientImpl::setRate(float rate)
-{
- if (m_webMediaPlayer)
- m_webMediaPlayer->setRate(rate);
-}
-
-bool WebMediaPlayerClientImpl::paused() const
-{
- if (m_webMediaPlayer)
- return m_webMediaPlayer->paused();
- return false;
-}
-
-bool WebMediaPlayerClientImpl::supportsFullscreen() const
-{
- if (m_webMediaPlayer)
- return m_webMediaPlayer->supportsFullscreen();
- return false;
-}
-
-bool WebMediaPlayerClientImpl::supportsSave() const
-{
- if (m_webMediaPlayer)
- return m_webMediaPlayer->supportsSave();
- return false;
-}
-
-void WebMediaPlayerClientImpl::setVolume(float volume)
-{
- if (m_webMediaPlayer)
- m_webMediaPlayer->setVolume(volume);
-}
-
-MediaPlayer::NetworkState WebMediaPlayerClientImpl::networkState() const
-{
- if (m_webMediaPlayer)
- return static_cast<MediaPlayer::NetworkState>(m_webMediaPlayer->networkState());
- return MediaPlayer::Empty;
-}
-
-MediaPlayer::ReadyState WebMediaPlayerClientImpl::readyState() const
-{
- if (m_webMediaPlayer)
- return static_cast<MediaPlayer::ReadyState>(m_webMediaPlayer->readyState());
- return MediaPlayer::HaveNothing;
-}
-
-float WebMediaPlayerClientImpl::maxTimeSeekable() const
-{
- if (m_webMediaPlayer)
- return m_webMediaPlayer->maxTimeSeekable();
- return 0.0f;
-}
-
-PassRefPtr<TimeRanges> WebMediaPlayerClientImpl::buffered() const
-{
- if (m_webMediaPlayer) {
- const WebTimeRanges& webRanges = m_webMediaPlayer->buffered();
-
- // FIXME: Save the time ranges in a member variable and update it when needed.
- 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
-{
- if (m_webMediaPlayer)
- return m_webMediaPlayer->dataRate();
- return 0;
-}
-
-bool WebMediaPlayerClientImpl::totalBytesKnown() const
-{
- if (m_webMediaPlayer)
- return m_webMediaPlayer->totalBytesKnown();
- return false;
-}
-
-unsigned WebMediaPlayerClientImpl::totalBytes() const
-{
- if (m_webMediaPlayer)
- return static_cast<unsigned>(m_webMediaPlayer->totalBytes());
- return 0;
-}
-
-bool WebMediaPlayerClientImpl::didLoadingProgress() const
-{
- return m_webMediaPlayer && m_webMediaPlayer->didLoadingProgress();
-}
-
-void WebMediaPlayerClientImpl::setSize(const IntSize& size)
-{
- if (m_webMediaPlayer)
- m_webMediaPlayer->setSize(WebSize(size.width(), size.height()));
-}
-
-void WebMediaPlayerClientImpl::paint(GraphicsContext* context, const IntRect& rect)
-{
-#if USE(ACCELERATED_COMPOSITING)
- // If we are using GPU to render video, ignore requests to paint frames into
- // canvas because it will be taken care of by WebVideoLayer.
- if (acceleratedRenderingInUse())
- return;
-#endif
- paintCurrentFrameInContext(context, rect);
-}
-
-void WebMediaPlayerClientImpl::paintCurrentFrameInContext(GraphicsContext* context, const IntRect& rect)
-{
- // Normally GraphicsContext operations do nothing when painting is disabled.
- // Since we're accessing platformContext() directly we have to manually
- // check.
- if (m_webMediaPlayer && !context->paintingDisabled()) {
- PlatformGraphicsContext* platformContext = context->platformContext();
- WebCanvas* canvas = platformContext->canvas();
- m_webMediaPlayer->paint(canvas, rect, platformContext->getNormalizedAlpha());
- }
-}
-
-void WebMediaPlayerClientImpl::setPreload(MediaPlayer::Preload preload)
-{
- m_preload = preload;
-
- if (m_webMediaPlayer)
- m_webMediaPlayer->setPreload(static_cast<WebMediaPlayer::Preload>(preload));
-
- if (m_delayingLoad && m_preload != MediaPlayer::None)
- startDelayedLoad();
-}
-
-bool WebMediaPlayerClientImpl::hasSingleSecurityOrigin() const
-{
- if (m_webMediaPlayer)
- return m_webMediaPlayer->hasSingleSecurityOrigin();
- return false;
-}
-
-bool WebMediaPlayerClientImpl::didPassCORSAccessCheck() const
-{
- if (m_webMediaPlayer)
- return m_webMediaPlayer->didPassCORSAccessCheck();
- return false;
-}
-
-MediaPlayer::MovieLoadType WebMediaPlayerClientImpl::movieLoadType() const
-{
- if (m_webMediaPlayer)
- return static_cast<MediaPlayer::MovieLoadType>(
- m_webMediaPlayer->movieLoadType());
- return MediaPlayer::Unknown;
-}
-
-float WebMediaPlayerClientImpl::mediaTimeForTimeValue(float timeValue) const
-{
- if (m_webMediaPlayer)
- return m_webMediaPlayer->mediaTimeForTimeValue(timeValue);
- return timeValue;
-}
-
-unsigned WebMediaPlayerClientImpl::decodedFrameCount() const
-{
- if (m_webMediaPlayer)
- return m_webMediaPlayer->decodedFrameCount();
- return 0;
-}
-
-unsigned WebMediaPlayerClientImpl::droppedFrameCount() const
-{
- if (m_webMediaPlayer)
- return m_webMediaPlayer->droppedFrameCount();
- return 0;
-}
-
-unsigned WebMediaPlayerClientImpl::audioDecodedByteCount() const
-{
- if (m_webMediaPlayer)
- return m_webMediaPlayer->audioDecodedByteCount();
- return 0;
-}
-
-unsigned WebMediaPlayerClientImpl::videoDecodedByteCount() const
-{
- if (m_webMediaPlayer)
- return m_webMediaPlayer->videoDecodedByteCount();
- return 0;
-}
-
-#if ENABLE(WEB_AUDIO)
-AudioSourceProvider* WebMediaPlayerClientImpl::audioSourceProvider()
-{
- return &m_audioSourceProvider;
-}
-#endif
-
-#if USE(ACCELERATED_COMPOSITING)
-bool WebMediaPlayerClientImpl::supportsAcceleratedRendering() const
-{
- return m_supportsAcceleratedCompositing;
-}
-
-bool WebMediaPlayerClientImpl::acceleratedRenderingInUse()
-{
- return m_videoLayer && m_videoLayer->active();
-}
-
-void WebMediaPlayerClientImpl::setVideoFrameProviderClient(WebVideoFrameProvider::Client* client)
-{
- MutexLocker locker(m_webMediaPlayerMutex);
- if (m_videoFrameProviderClient)
- m_videoFrameProviderClient->stopUsingProvider();
- m_videoFrameProviderClient = client;
- if (m_webMediaPlayer)
- m_webMediaPlayer->setStreamTextureClient(client ? this : 0);
-}
-
-WebVideoFrame* WebMediaPlayerClientImpl::getCurrentFrame()
-{
- // This function is called only by the client.
- MutexLocker locker(m_webMediaPlayerMutex);
- ASSERT(!m_currentVideoFrame);
- ASSERT(m_videoFrameProviderClient);
- if (m_webMediaPlayer)
- m_currentVideoFrame = m_webMediaPlayer->getCurrentFrame();
- return m_currentVideoFrame;
-}
-
-void WebMediaPlayerClientImpl::putCurrentFrame(WebVideoFrame* videoFrame)
-{
- // This function is called only by the client.
- MutexLocker locker(m_webMediaPlayerMutex);
- ASSERT(videoFrame == m_currentVideoFrame);
- ASSERT(m_videoFrameProviderClient);
- if (!videoFrame)
- return;
- if (m_webMediaPlayer)
- m_webMediaPlayer->putCurrentFrame(videoFrame);
- m_currentVideoFrame = 0;
-}
-#endif
-
-PassOwnPtr<MediaPlayerPrivateInterface> WebMediaPlayerClientImpl::create(MediaPlayer* player)
-{
- OwnPtr<WebMediaPlayerClientImpl> client = adoptPtr(new WebMediaPlayerClientImpl());
- client->m_mediaPlayer = player;
-
-#if USE(ACCELERATED_COMPOSITING)
- Frame* frame = static_cast<HTMLMediaElement*>(
- client->m_mediaPlayer->mediaPlayerClient())->document()->frame();
-
- // This does not actually check whether the hardware can support accelerated
- // compositing, but only if the flag is set. However, this is checked lazily
- // in WebViewImpl::setIsAcceleratedCompositingActive() and will fail there
- // if necessary.
- client->m_supportsAcceleratedCompositing =
- frame->contentRenderer()->compositor()->hasAcceleratedCompositing();
-#endif
-
- return client.release();
-}
-
-void WebMediaPlayerClientImpl::getSupportedTypes(HashSet<String>& supportedTypes)
-{
- // FIXME: integrate this list with WebMediaPlayerClientImpl::supportsType.
- notImplemented();
-}
-
-#if ENABLE(ENCRYPTED_MEDIA)
-MediaPlayer::SupportsType WebMediaPlayerClientImpl::supportsType(const String& type,
- const String& codecs,
- const String& keySystem,
- const KURL&)
-{
-#else
-MediaPlayer::SupportsType WebMediaPlayerClientImpl::supportsType(const String& type,
- const String& codecs,
- const KURL&)
-{
- String keySystem;
-#endif
- WebMimeRegistry::SupportsType supportsType = WebKit::Platform::current()->mimeRegistry()->supportsMediaMIMEType(type, codecs, keySystem);
-
- switch (supportsType) {
- default:
- ASSERT_NOT_REACHED();
- case WebMimeRegistry::IsNotSupported:
- return MediaPlayer::IsNotSupported;
- case WebMimeRegistry::IsSupported:
- return MediaPlayer::IsSupported;
- case WebMimeRegistry::MayBeSupported:
- return MediaPlayer::MayBeSupported;
- }
- return MediaPlayer::IsNotSupported;
-}
-
-void WebMediaPlayerClientImpl::startDelayedLoad()
-{
- ASSERT(m_delayingLoad);
- ASSERT(!m_webMediaPlayer);
-
- m_delayingLoad = false;
-
- loadInternal();
-}
-
-void WebMediaPlayerClientImpl::didReceiveFrame()
-{
- // No lock since this gets called on the client's thread.
- m_videoFrameProviderClient->didReceiveFrame();
-}
-
-void WebMediaPlayerClientImpl::didUpdateMatrix(const float* matrix)
-{
- // No lock since this gets called on the client's thread.
- m_videoFrameProviderClient->didUpdateMatrix(matrix);
-}
-
-WebMediaPlayerClientImpl::WebMediaPlayerClientImpl()
- : m_mediaPlayer(0)
- , m_currentVideoFrame(0)
- , m_delayingLoad(false)
- , m_preload(MediaPlayer::MetaData)
-#if USE(ACCELERATED_COMPOSITING)
- , m_supportsAcceleratedCompositing(false)
- , m_opaque(false)
- , m_videoFrameProviderClient(0)
-#endif
-{
-}
-
-#if ENABLE(WEB_AUDIO)
-void WebMediaPlayerClientImpl::AudioSourceProviderImpl::wrap(WebAudioSourceProvider* provider)
-{
- m_webAudioSourceProvider = provider;
- if (m_webAudioSourceProvider)
- m_webAudioSourceProvider->setClient(m_client.get());
-}
-
-void WebMediaPlayerClientImpl::AudioSourceProviderImpl::setClient(AudioSourceProviderClient* client)
-{
- if (client)
- m_client = adoptPtr(new WebMediaPlayerClientImpl::AudioClientImpl(client));
- else
- m_client.clear();
-
- if (m_webAudioSourceProvider)
- m_webAudioSourceProvider->setClient(m_client.get());
-}
-
-void WebMediaPlayerClientImpl::AudioSourceProviderImpl::provideInput(AudioBus* bus, size_t framesToProcess)
-{
- ASSERT(bus);
- if (!bus)
- return;
-
- if (!m_webAudioSourceProvider) {
- bus->zero();
- return;
- }
-
- // Wrap the AudioBus channel data using WebVector.
- size_t n = bus->numberOfChannels();
- WebVector<float*> webAudioData(n);
- for (size_t i = 0; i < n; ++i)
- webAudioData[i] = bus->channel(i)->mutableData();
-
- m_webAudioSourceProvider->provideInput(webAudioData, framesToProcess);
-}
-
-void WebMediaPlayerClientImpl::AudioClientImpl::setFormat(size_t numberOfChannels, float sampleRate)
-{
- if (m_client)
- m_client->setFormat(numberOfChannels, sampleRate);
-}
-
-#endif
-
-} // namespace WebKit
-
-#endif // ENABLE(VIDEO)