Modified: releases/WebKitGTK/webkit-1.10/Source/WebCore/html/HTMLMediaElement.cpp (128318 => 128319)
--- releases/WebKitGTK/webkit-1.10/Source/WebCore/html/HTMLMediaElement.cpp 2012-09-12 15:49:52 UTC (rev 128318)
+++ releases/WebKitGTK/webkit-1.10/Source/WebCore/html/HTMLMediaElement.cpp 2012-09-12 16:02:10 UTC (rev 128319)
@@ -4377,6 +4377,54 @@
return document()->url().host();
}
+void HTMLMediaElement::mediaPlayerExitFullscreen()
+{
+ exitFullscreen();
+}
+
+bool HTMLMediaElement::mediaPlayerIsVideo() const
+{
+ return isVideo();
+}
+
+LayoutRect HTMLMediaElement::mediaPlayerContentBoxRect() const
+{
+ if (renderer())
+ return renderer()->enclosingBox()->contentBoxRect();
+ return LayoutRect();
+}
+
+void HTMLMediaElement::mediaPlayerSetSize(const IntSize& size)
+{
+ setAttribute(widthAttr, String::number(size.width()));
+ setAttribute(heightAttr, String::number(size.height()));
+}
+
+void HTMLMediaElement::mediaPlayerPause()
+{
+ pause();
+}
+
+void HTMLMediaElement::mediaPlayerPlay()
+{
+ play();
+}
+
+bool HTMLMediaElement::mediaPlayerIsPaused() const
+{
+ return paused();
+}
+
+HostWindow* HTMLMediaElement::mediaPlayerHostWindow()
+{
+ return mediaPlayerOwningDocument()->view()->hostWindow();
+}
+
+IntRect HTMLMediaElement::mediaPlayerWindowClipRect()
+{
+ return mediaPlayerOwningDocument()->view()->windowClipRect();
+}
+
void HTMLMediaElement::removeBehaviorsRestrictionsAfterFirstUserGesture()
{
m_restrictions = NoRestrictions;
Modified: releases/WebKitGTK/webkit-1.10/Source/WebCore/platform/graphics/MediaPlayer.h (128318 => 128319)
--- releases/WebKitGTK/webkit-1.10/Source/WebCore/platform/graphics/MediaPlayer.h 2012-09-12 15:49:52 UTC (rev 128318)
+++ releases/WebKitGTK/webkit-1.10/Source/WebCore/platform/graphics/MediaPlayer.h 2012-09-12 16:02:10 UTC (rev 128319)
@@ -98,6 +98,7 @@
class MediaPlayer;
struct MediaPlayerFactory;
class TimeRanges;
+class HostWindow;
#if PLATFORM(WIN) && USE(AVFOUNDATION)
struct GraphicsDeviceAdapter;
@@ -189,6 +190,15 @@
virtual String mediaPlayerReferrer() const { return String(); }
virtual String mediaPlayerUserAgent() const { return String(); }
virtual CORSMode mediaPlayerCORSMode() const { return Unspecified; }
+ virtual void mediaPlayerExitFullscreen() { }
+ virtual bool mediaPlayerIsVideo() const { return false; }
+ virtual LayoutRect mediaPlayerContentBoxRect() const { return LayoutRect(); }
+ virtual void mediaPlayerSetSize(const IntSize&) { }
+ virtual void mediaPlayerPause() { }
+ virtual void mediaPlayerPlay() { }
+ virtual bool mediaPlayerIsPaused() const { return true; }
+ virtual HostWindow* mediaPlayerHostWindow() { return 0; }
+ virtual IntRect mediaPlayerWindowClipRect() { return IntRect(); }
};
class MediaPlayerSupportsTypeClient {
Modified: releases/WebKitGTK/webkit-1.10/Source/WebCore/platform/graphics/blackberry/MediaPlayerPrivateBlackBerry.cpp (128318 => 128319)
--- releases/WebKitGTK/webkit-1.10/Source/WebCore/platform/graphics/blackberry/MediaPlayerPrivateBlackBerry.cpp 2012-09-12 15:49:52 UTC (rev 128318)
+++ releases/WebKitGTK/webkit-1.10/Source/WebCore/platform/graphics/blackberry/MediaPlayerPrivateBlackBerry.cpp 2012-09-12 16:02:10 UTC (rev 128319)
@@ -27,7 +27,6 @@
#include "Frame.h"
#include "FrameView.h"
#include "GraphicsContext.h"
-#include "HTMLMediaElement.h"
#include "HTMLNames.h"
#include "HostWindow.h"
#include "MediaStreamDescriptor.h"
@@ -122,8 +121,7 @@
MediaPlayerPrivate::~MediaPlayerPrivate()
{
if (isFullscreen()) {
- HTMLMediaElement* element = static_cast<HTMLMediaElement*>(m_webCorePlayer->mediaPlayerClient());
- element->exitFullscreen();
+ m_webCorePlayer->mediaPlayerClient()->mediaPlayerExitFullscreen();
}
#if USE(ACCELERATED_COMPOSITING)
// Remove media player from platform layer.
@@ -151,9 +149,7 @@
modifiedUrl = decodeURLEscapeSequences(modifiedUrl);
}
- void* tabId = 0;
- if (frameView() && frameView()->hostWindow())
- tabId = frameView()->hostWindow()->platformPageClient();
+ void* tabId = m_webCorePlayer->mediaPlayerClient()->mediaPlayerHostWindow()->platformPageClient();
deleteGuardedObject(m_platformPlayer);
#if USE(ACCELERATED_COMPOSITING)
@@ -370,7 +366,7 @@
ASSERT(graphics);
BlackBerry::Platform::IntRect platformRect(rect.x(), rect.y(), rect.width(), rect.height());
- IntRect clippedRect = frameView()->windowClipRect();
+ IntRect clippedRect = m_webCorePlayer->mediaPlayerClient()->mediaPlayerWindowClipRect();
BlackBerry::Platform::IntRect platformWindowClipRect(clippedRect.x(), clippedRect.y(), clippedRect.width(), clippedRect.height());
m_platformPlayer->paint(graphics->canvas(), platformRect, platformWindowClipRect);
}
@@ -399,39 +395,27 @@
if (!m_webCorePlayer)
return;
- HTMLMediaElement* client = static_cast<HTMLMediaElement*>(m_webCorePlayer->mediaPlayerClient());
-
- if (!client || !client->isVideo())
+ if (!m_webCorePlayer->mediaPlayerClient()->mediaPlayerIsVideo())
return;
- RenderObject* o = client->renderer();
- if (!o)
- return;
-
// If we have an HTMLVideoElement but the source has no video, then we need to resize the media element.
if (!hasVideo()) {
- IntRect rect = o->enclosingBox()->contentBoxRect();
+ LayoutRect rect = m_webCorePlayer->mediaPlayerClient()->mediaPlayerContentBoxRect();
static const int playbookMinAudioElementWidth = 300;
static const int playbookMinAudioElementHeight = 32;
// If the rect dimensions are less than the allowed minimum, use the minimum instead.
- int newWidth = max(rect.width(), playbookMinAudioElementWidth);
- int newHeight = max(rect.height(), playbookMinAudioElementHeight);
+ int newWidth = max(rect.width().toInt(), playbookMinAudioElementWidth);
+ int newHeight = max(rect.height().toInt(), playbookMinAudioElementHeight);
- char attrString[12];
-
- sprintf(attrString, "%d", newWidth);
- client->setAttribute(HTMLNames::widthAttr, attrString);
-
- sprintf(attrString, "%d", newHeight);
- client->setAttribute(HTMLNames::heightAttr, attrString);
+ m_webCorePlayer->mediaPlayerClient()->mediaPlayerSetSize(IntSize(newWidth, newHeight));
}
// If we don't know what the width and height of the video source is, then we need to set it to something sane.
if (m_platformPlayer->sourceWidth() && m_platformPlayer->sourceHeight())
return;
- IntRect rect = o->enclosingBox()->contentBoxRect();
- m_platformPlayer->setSourceDimension(rect.width(), rect.height());
+ LayoutRect rect = m_webCorePlayer->mediaPlayerClient()->mediaPlayerContentBoxRect();
+ m_platformPlayer->setSourceDimension(rect.width().toUnsigned(), rect.height().toUnsigned());
}
void MediaPlayerPrivate::setFullscreenWebPageClient(BlackBerry::WebKit::WebPageClient* client)
@@ -511,8 +495,6 @@
PlatformPlayer::Error currentError = m_platformPlayer->error();
- HTMLMediaElement* element = static_cast<HTMLMediaElement*>(m_webCorePlayer->mediaPlayerClient());
-
if (currentError != PlatformPlayer::MediaOK) {
m_readyState = MediaPlayer::HaveNothing;
if (currentError == PlatformPlayer::MediaDecodeError)
@@ -549,7 +531,7 @@
}
#endif
if (isFullscreen())
- element->exitFullscreen();
+ m_webCorePlayer->mediaPlayerClient()->mediaPlayerExitFullscreen();
break;
case PlatformPlayer::MP_STATE_ACTIVE:
#if USE(ACCELERATED_COMPOSITING)
@@ -608,15 +590,14 @@
if (!isFullscreen())
return;
- HTMLMediaElement* element = static_cast<HTMLMediaElement*>(m_webCorePlayer->mediaPlayerClient());
// Paused state change not due to local controller.
if (m_platformPlayer->isPaused())
- element->pause();
+ m_webCorePlayer->mediaPlayerClient()->mediaPlayerPause();
else {
// The HMI fullscreen widget has resumed play. Check if the
// pause timeout occurred.
m_platformPlayer->processPauseTimeoutIfNecessary();
- element->play();
+ m_webCorePlayer->mediaPlayerClient()->mediaPlayerPlay();
}
}
@@ -644,14 +625,12 @@
void MediaPlayerPrivate::onPlayNotified()
{
- if (HTMLMediaElement* element = static_cast<HTMLMediaElement*>(m_webCorePlayer->mediaPlayerClient()))
- element->play();
+ m_webCorePlayer->mediaPlayerClient()->mediaPlayerPlay();
}
void MediaPlayerPrivate::onPauseNotified()
{
- if (HTMLMediaElement* element = static_cast<HTMLMediaElement*>(m_webCorePlayer->mediaPlayerClient()))
- element->pause();
+ m_webCorePlayer->mediaPlayerClient()->mediaPlayerPause();
}
static const int popupDialogInterval = 10;
@@ -726,8 +705,8 @@
Credential credential = CredentialStorage::get(protectionSpace);
bool isConfirmed = false;
if (credential.isEmpty()) {
- if (frameView() && frameView()->hostWindow())
- isConfirmed = frameView()->hostWindow()->platformPageClient()->authenticationChallenge(url, protectionSpace, credential);
+ isConfirmed = m_webCorePlayer->mediaPlayerClient()->mediaPlayerHostWindow()->platformPageClient()->authenticationChallenge(url, protectionSpace, credential);
+
} else
isConfirmed = true;
@@ -783,11 +762,7 @@
LOG(Media, "Alert type does not exist.");
return -1;
}
-
- int rc = 0;
- if (frameView() && frameView()->hostWindow())
- rc = frameView()->hostWindow()->platformPageClient()->showAlertDialog(atype);
- return rc;
+ return m_webCorePlayer->mediaPlayerClient()->mediaPlayerHostWindow()->platformPageClient()->showAlertDialog(atype);
}
static WebMediaStreamSource toWebMediaStreamSource(MediaStreamSource* src)
@@ -817,23 +792,9 @@
return toWebMediaStreamDescriptor(descriptor);
}
-FrameView* MediaPlayerPrivate::frameView() const
-{
- // We previously used m_webCorePlayer->frameView(), but this method returns
- // a null frameView until quite late in the media player initialization,
- // and starting quite early in the media player destruction (because
- // it may be set to zero by the destructor in RenderVideo.cpp before
- // our destructor is called, leaving us unable to clean up child windows
- // in mmrDisconnect).
- HTMLMediaElement* element = static_cast<HTMLMediaElement*>(m_webCorePlayer->mediaPlayerClient());
- return element->document()->view();
-}
-
BlackBerry::Platform::Graphics::Window* MediaPlayerPrivate::platformWindow()
{
- if (frameView() && frameView()->hostWindow())
- return frameView()->hostWindow()->platformPageClient()->platformWindow();
- return 0;
+ return m_webCorePlayer->mediaPlayerClient()->mediaPlayerHostWindow()->platformPageClient()->platformWindow();
}
bool MediaPlayerPrivate::isFullscreen() const
@@ -843,17 +804,12 @@
bool MediaPlayerPrivate::isElementPaused() const
{
- HTMLMediaElement* element = static_cast<HTMLMediaElement*>(m_webCorePlayer->mediaPlayerClient());
- if (!element || element->paused())
- return true;
- return false;
+ return m_webCorePlayer->mediaPlayerClient()->mediaPlayerIsPaused();
}
bool MediaPlayerPrivate::isTabVisible() const
{
- if (frameView() && frameView()->hostWindow())
- return frameView()->hostWindow()->platformPageClient()->isVisible();
- return true;
+ return m_webCorePlayer->mediaPlayerClient()->mediaPlayerHostWindow()->platformPageClient()->isVisible();
}
#if USE(ACCELERATED_COMPOSITING)