[SCM] WebKit Debian packaging branch, webkit-1.1, updated. upstream/1.1.15.1-1414-gc69ee75
eric at webkit.org
eric at webkit.org
Thu Oct 29 20:35:08 UTC 2009
The following commit has been merged in the webkit-1.1 branch:
commit 65ab9de1ba259a86cd9e94bc69993fe5bdfdee75
Author: eric at webkit.org <eric at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Mon Sep 28 18:43:54 2009 +0000
2009-09-28 Andrew Scherkus <scherkus at chromium.org>
Reviewed by Eric Carlson.
Delegate implementation of rendererIsNeeded() for media control elements to RenderTheme.
https://bugs.webkit.org/show_bug.cgi?id=28689
Covered by LayoutTests/media/video-no-audio.html
* rendering/MediaControlElements.cpp: Removed subclass implementations of rendererIsNeeded().
(WebCore::MediaControlElement::rendererIsNeeded): Include calling shouldRenderMediaControlPart().
(WebCore::MediaControlInputElement::rendererIsNeeded): Include calling shouldRenderMediaControlPart().
* rendering/MediaControlElements.h:
* rendering/RenderTheme.cpp:
(WebCore::RenderTheme::shouldRenderMediaControlPart): New method. Contains logic moved from subclass implementations of rendererIsNeeded().
* rendering/RenderTheme.h:
* rendering/RenderThemeChromiumSkia.cpp:
(WebCore::RenderThemeChromiumSkia::shouldRenderMediaControlPart): Override to always render mute button.
* rendering/RenderThemeChromiumSkia.h:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@48822 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 7b8cda3..5dd977c 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,24 @@
+2009-09-28 Andrew Scherkus <scherkus at chromium.org>
+
+ Reviewed by Eric Carlson.
+
+ Delegate implementation of rendererIsNeeded() for media control elements to RenderTheme.
+
+ https://bugs.webkit.org/show_bug.cgi?id=28689
+
+ Covered by LayoutTests/media/video-no-audio.html
+
+ * rendering/MediaControlElements.cpp: Removed subclass implementations of rendererIsNeeded().
+ (WebCore::MediaControlElement::rendererIsNeeded): Include calling shouldRenderMediaControlPart().
+ (WebCore::MediaControlInputElement::rendererIsNeeded): Include calling shouldRenderMediaControlPart().
+ * rendering/MediaControlElements.h:
+ * rendering/RenderTheme.cpp:
+ (WebCore::RenderTheme::shouldRenderMediaControlPart): New method. Contains logic moved from subclass implementations of rendererIsNeeded().
+ * rendering/RenderTheme.h:
+ * rendering/RenderThemeChromiumSkia.cpp:
+ (WebCore::RenderThemeChromiumSkia::shouldRenderMediaControlPart): Override to always render mute button.
+ * rendering/RenderThemeChromiumSkia.h:
+
2009-09-28 Jian Li <jianli at chromium.org>
Reviewed by David Levin.
diff --git a/WebCore/rendering/MediaControlElements.cpp b/WebCore/rendering/MediaControlElements.cpp
index 969716f..29e2e57 100644
--- a/WebCore/rendering/MediaControlElements.cpp
+++ b/WebCore/rendering/MediaControlElements.cpp
@@ -135,7 +135,10 @@ PassRefPtr<RenderStyle> MediaControlElement::styleForElement()
bool MediaControlElement::rendererIsNeeded(RenderStyle* style)
{
- return HTMLDivElement::rendererIsNeeded(style) && parent() && parent()->renderer();
+ ASSERT(document()->page());
+
+ return HTMLDivElement::rendererIsNeeded(style) && parent() && parent()->renderer()
+ && document()->page()->theme()->shouldRenderMediaControlPart(style->appearance(), m_mediaElement);
}
void MediaControlElement::attach()
@@ -360,7 +363,10 @@ PassRefPtr<RenderStyle> MediaControlInputElement::styleForElement()
bool MediaControlInputElement::rendererIsNeeded(RenderStyle* style)
{
- return HTMLInputElement::rendererIsNeeded(style) && parent() && parent()->renderer();
+ ASSERT(document()->page());
+
+ return HTMLInputElement::rendererIsNeeded(style) && parent() && parent()->renderer()
+ && document()->page()->theme()->shouldRenderMediaControlPart(style->appearance(), m_mediaElement);
}
void MediaControlInputElement::attach()
@@ -444,16 +450,6 @@ void MediaControlMuteButtonElement::updateDisplayType()
setDisplayType(m_mediaElement->muted() ? MediaUnMuteButton : MediaMuteButton);
}
-bool MediaControlMuteButtonElement::disabled() const
-{
- return !m_mediaElement->hasAudio();
-}
-
-bool MediaControlMuteButtonElement::rendererIsNeeded(RenderStyle* style)
-{
- return MediaControlInputElement::rendererIsNeeded(style) && !disabled();
-}
-
// ----------------------------
MediaControlPlayButtonElement::MediaControlPlayButtonElement(Document* document, HTMLMediaElement* element)
@@ -551,11 +547,6 @@ void MediaControlRewindButtonElement::defaultEventHandler(Event* event)
HTMLInputElement::defaultEventHandler(event);
}
-bool MediaControlRewindButtonElement::rendererIsNeeded(RenderStyle* style)
-{
- return MediaControlInputElement::rendererIsNeeded(style) && m_mediaElement->movieLoadType() != MediaPlayer::LiveStream;
-}
-
// ----------------------------
@@ -573,10 +564,6 @@ void MediaControlReturnToRealtimeButtonElement::defaultEventHandler(Event* event
HTMLInputElement::defaultEventHandler(event);
}
-bool MediaControlReturnToRealtimeButtonElement::rendererIsNeeded(RenderStyle* style)
-{
- return MediaControlInputElement::rendererIsNeeded(style) && m_mediaElement->movieLoadType() == MediaPlayer::LiveStream;
-}
// ----------------------------
@@ -664,11 +651,6 @@ void MediaControlFullscreenButtonElement::defaultEventHandler(Event* event)
HTMLInputElement::defaultEventHandler(event);
}
-bool MediaControlFullscreenButtonElement::rendererIsNeeded(RenderStyle* style)
-{
- return MediaControlInputElement::rendererIsNeeded(style) && m_mediaElement->supportsFullscreen();
-}
-
// ----------------------------
diff --git a/WebCore/rendering/MediaControlElements.h b/WebCore/rendering/MediaControlElements.h
index e80f7fa..f692485 100644
--- a/WebCore/rendering/MediaControlElements.h
+++ b/WebCore/rendering/MediaControlElements.h
@@ -155,9 +155,6 @@ public:
bool hitTest(const IntPoint& absPoint);
MediaControlElementType displayType() const { return m_displayType; }
- // Some elements are disabled by movie state (eg. mute if no audio).
- virtual bool disabled() const { return false; }
-
HTMLMediaElement* mediaElement() const { return m_mediaElement; }
virtual bool isMediaControlElement() const { return true; }
@@ -177,8 +174,6 @@ public:
MediaControlMuteButtonElement(Document*, HTMLMediaElement*);
virtual void defaultEventHandler(Event*);
virtual void updateDisplayType();
- virtual bool disabled() const;
- virtual bool rendererIsNeeded(RenderStyle*);
};
// ----------------------------
@@ -212,7 +207,6 @@ class MediaControlRewindButtonElement : public MediaControlInputElement {
public:
MediaControlRewindButtonElement(Document*, HTMLMediaElement*);
virtual void defaultEventHandler(Event*);
- virtual bool rendererIsNeeded(RenderStyle*);
};
// ----------------------------
@@ -221,7 +215,6 @@ class MediaControlReturnToRealtimeButtonElement : public MediaControlInputElemen
public:
MediaControlReturnToRealtimeButtonElement(Document*, HTMLMediaElement*);
virtual void defaultEventHandler(Event*);
- virtual bool rendererIsNeeded(RenderStyle*);
};
// ----------------------------
@@ -247,7 +240,6 @@ class MediaControlFullscreenButtonElement : public MediaControlInputElement {
public:
MediaControlFullscreenButtonElement(Document*, HTMLMediaElement*);
virtual void defaultEventHandler(Event*);
- virtual bool rendererIsNeeded(RenderStyle*);
};
// ----------------------------
diff --git a/WebCore/rendering/RenderTheme.cpp b/WebCore/rendering/RenderTheme.cpp
index 7b4dfe3..b5826cd 100644
--- a/WebCore/rendering/RenderTheme.cpp
+++ b/WebCore/rendering/RenderTheme.cpp
@@ -30,6 +30,7 @@
#include "GraphicsContext.h"
#include "HTMLInputElement.h"
#include "HTMLNames.h"
+#include "MediaControlElements.h"
#include "Page.h"
#include "RenderStyle.h"
#include "RenderView.h"
@@ -396,6 +397,23 @@ bool RenderTheme::hitTestMediaControlPart(RenderObject* o, const IntPoint& absPo
FloatPoint localPoint = o->absoluteToLocal(absPoint, false, true); // respect transforms
return toRenderBox(o)->borderBoxRect().contains(roundedIntPoint(localPoint));
}
+
+bool RenderTheme::shouldRenderMediaControlPart(ControlPart part, Element* e)
+{
+ HTMLMediaElement* mediaElement = static_cast<HTMLMediaElement*>(e);
+ switch (part) {
+ case MediaMuteButtonPart:
+ return mediaElement->hasAudio();
+ case MediaRewindButtonPart:
+ return mediaElement->movieLoadType() != MediaPlayer::LiveStream;
+ case MediaReturnToRealtimeButtonPart:
+ return mediaElement->movieLoadType() == MediaPlayer::LiveStream;
+ case MediaFullscreenButtonPart:
+ return mediaElement->supportsFullscreen();
+ default:
+ return true;
+ }
+}
#endif
Color RenderTheme::activeSelectionBackgroundColor() const
diff --git a/WebCore/rendering/RenderTheme.h b/WebCore/rendering/RenderTheme.h
index c00c2eb..1b6a7e4 100644
--- a/WebCore/rendering/RenderTheme.h
+++ b/WebCore/rendering/RenderTheme.h
@@ -172,6 +172,7 @@ public:
#if ENABLE(VIDEO)
// Media controls
virtual bool hitTestMediaControlPart(RenderObject*, const IntPoint& absPoint);
+ virtual bool shouldRenderMediaControlPart(ControlPart, Element*);
#endif
protected:
diff --git a/WebCore/rendering/RenderThemeChromiumSkia.cpp b/WebCore/rendering/RenderThemeChromiumSkia.cpp
index 82e633b..4f486d5 100644
--- a/WebCore/rendering/RenderThemeChromiumSkia.cpp
+++ b/WebCore/rendering/RenderThemeChromiumSkia.cpp
@@ -868,6 +868,19 @@ int RenderThemeChromiumSkia::buttonInternalPaddingBottom() const
return 1;
}
+#if ENABLE(VIDEO)
+bool RenderThemeChromiumSkia::shouldRenderMediaControlPart(ControlPart part, Element* e)
+{
+ HTMLMediaElement* mediaElement = static_cast<HTMLMediaElement*>(e);
+ switch (part) {
+ case MediaMuteButtonPart:
+ return true;
+ default:
+ return RenderTheme::shouldRenderMediaControlPart(part, e);
+ }
+}
+#endif
+
// static
void RenderThemeChromiumSkia::setDefaultFontSize(int fontSize)
{
diff --git a/WebCore/rendering/RenderThemeChromiumSkia.h b/WebCore/rendering/RenderThemeChromiumSkia.h
index 37e656f..98e3a35 100644
--- a/WebCore/rendering/RenderThemeChromiumSkia.h
+++ b/WebCore/rendering/RenderThemeChromiumSkia.h
@@ -126,6 +126,11 @@ namespace WebCore {
virtual int buttonInternalPaddingTop() const;
virtual int buttonInternalPaddingBottom() const;
+#if ENABLE(VIDEO)
+ // Media controls
+ virtual bool shouldRenderMediaControlPart(ControlPart, Element*);
+#endif
+
// Provide a way to pass the default font size from the Settings object
// to the render theme. FIXME: http://b/1129186 A cleaner way would be
// to remove the default font size from this object and have callers
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list