Title: [87657] trunk/Source/WebCore
- Revision
- 87657
- Author
- [email protected]
- Date
- 2011-05-29 17:19:51 -0700 (Sun, 29 May 2011)
Log Message
<rdar://problem/9515650> 30 second rewind button obscured in fullscreen controller when video uses custom inline controls
https://bugs.webkit.org/show_bug.cgi?id=61714
Reviewed by Darin Adler.
* dom/Document.cpp:
(WebCore::Document::webkitDidEnterFullScreenForElement): Call didBecomeFullscreenElement() on the
new full screen element.
(WebCore::Document::webkitWillExitFullScreenForElement): Call willStopBeingFullscreenElement() on
the full screen element.
* dom/Element.h:
(WebCore::Element::didBecomeFullscreenElement): Added with a default implementation that does nothing.
(WebCore::Element::willStopBeingFullscreenElement): Ditto.
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::didBecomeFullscreenElement): Added this override, which calls
MediaControls::enteredFullscreen().
(WebCore::HTMLMediaElement::willStopBeingFullscreenElement): Added this override, which calls
MediaControls::exitedFullscreen().
* html/HTMLMediaElement.h:
* html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlFullscreenButtonElement::preDispatchEventHandler): Removed calls to
enteredFullscreen() and exitedFullscreen() from here, since they are now called in response to
changes to the fullscreen-ness of the element.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (87656 => 87657)
--- trunk/Source/WebCore/ChangeLog 2011-05-30 00:19:45 UTC (rev 87656)
+++ trunk/Source/WebCore/ChangeLog 2011-05-30 00:19:51 UTC (rev 87657)
@@ -1,3 +1,29 @@
+2011-05-29 Dan Bernstein <[email protected]>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/9515650> 30 second rewind button obscured in fullscreen controller when video uses custom inline controls
+ https://bugs.webkit.org/show_bug.cgi?id=61714
+
+ * dom/Document.cpp:
+ (WebCore::Document::webkitDidEnterFullScreenForElement): Call didBecomeFullscreenElement() on the
+ new full screen element.
+ (WebCore::Document::webkitWillExitFullScreenForElement): Call willStopBeingFullscreenElement() on
+ the full screen element.
+ * dom/Element.h:
+ (WebCore::Element::didBecomeFullscreenElement): Added with a default implementation that does nothing.
+ (WebCore::Element::willStopBeingFullscreenElement): Ditto.
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::didBecomeFullscreenElement): Added this override, which calls
+ MediaControls::enteredFullscreen().
+ (WebCore::HTMLMediaElement::willStopBeingFullscreenElement): Added this override, which calls
+ MediaControls::exitedFullscreen().
+ * html/HTMLMediaElement.h:
+ * html/shadow/MediaControlElements.cpp:
+ (WebCore::MediaControlFullscreenButtonElement::preDispatchEventHandler): Removed calls to
+ enteredFullscreen() and exitedFullscreen() from here, since they are now called in response to
+ changes to the fullscreen-ness of the element.
+
2011-05-29 Darin Adler <[email protected]>
Reviewed by Kevin Decker.
Modified: trunk/Source/WebCore/dom/Document.cpp (87656 => 87657)
--- trunk/Source/WebCore/dom/Document.cpp 2011-05-30 00:19:45 UTC (rev 87656)
+++ trunk/Source/WebCore/dom/Document.cpp 2011-05-30 00:19:51 UTC (rev 87657)
@@ -4905,7 +4905,7 @@
void Document::webkitDidEnterFullScreenForElement(Element*)
{
- ASSERT(m_fullScreenElement);
+ m_fullScreenElement->didBecomeFullscreenElement();
if (m_fullScreenRenderer) {
#if USE(ACCELERATED_COMPOSITING)
@@ -4924,6 +4924,8 @@
{
setContainsFullScreenElementRecursively(ownerElement(), false);
+ m_fullScreenElement->willStopBeingFullscreenElement();
+
if (m_fullScreenRenderer) {
setAnimatingFullScreen(true);
#if USE(ACCELERATED_COMPOSITING)
Modified: trunk/Source/WebCore/dom/Element.h (87656 => 87657)
--- trunk/Source/WebCore/dom/Element.h 2011-05-30 00:19:45 UTC (rev 87656)
+++ trunk/Source/WebCore/dom/Element.h 2011-05-30 00:19:51 UTC (rev 87657)
@@ -279,6 +279,9 @@
// Use Document::registerForPrivateBrowsingStateChangedCallbacks() to subscribe to this.
virtual void privateBrowsingStateDidChange() { }
+ virtual void didBecomeFullscreenElement() { }
+ virtual void willStopBeingFullscreenElement() { }
+
bool isFinishedParsingChildren() const { return isParsingChildrenFinished(); }
virtual void finishParsingChildren();
virtual void beginParsingChildren();
Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (87656 => 87657)
--- trunk/Source/WebCore/html/HTMLMediaElement.cpp 2011-05-30 00:19:45 UTC (rev 87656)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp 2011-05-30 00:19:51 UTC (rev 87657)
@@ -2556,6 +2556,18 @@
}
}
+void HTMLMediaElement::didBecomeFullscreenElement()
+{
+ if (hasMediaControls())
+ mediaControls()->enteredFullscreen();
+}
+
+void HTMLMediaElement::willStopBeingFullscreenElement()
+{
+ if (hasMediaControls())
+ mediaControls()->exitedFullscreen();
+}
+
PlatformMedia HTMLMediaElement::platformMedia() const
{
return m_player ? m_player->platformMedia() : NoPlatformMedia;
Modified: trunk/Source/WebCore/html/HTMLMediaElement.h (87656 => 87657)
--- trunk/Source/WebCore/html/HTMLMediaElement.h 2011-05-30 00:19:45 UTC (rev 87656)
+++ trunk/Source/WebCore/html/HTMLMediaElement.h 2011-05-30 00:19:51 UTC (rev 87657)
@@ -227,7 +227,10 @@
virtual void recalcStyle(StyleChange);
virtual void defaultEventHandler(Event*);
-
+
+ virtual void didBecomeFullscreenElement();
+ virtual void willStopBeingFullscreenElement();
+
// ActiveDOMObject functions.
virtual bool canSuspend() const;
virtual void suspend(ReasonForSuspension);
Modified: trunk/Source/WebCore/html/shadow/MediaControlElements.cpp (87656 => 87657)
--- trunk/Source/WebCore/html/shadow/MediaControlElements.cpp 2011-05-30 00:19:45 UTC (rev 87656)
+++ trunk/Source/WebCore/html/shadow/MediaControlElements.cpp 2011-05-30 00:19:51 UTC (rev 87657)
@@ -808,13 +808,10 @@
// video implementation without requiring them to implement their own full
// screen behavior.
if (document()->settings() && document()->settings()->fullScreenEnabled()) {
- if (document()->webkitIsFullScreen() && document()->webkitCurrentFullScreenElement() == mediaElement()) {
+ if (document()->webkitIsFullScreen() && document()->webkitCurrentFullScreenElement() == mediaElement())
document()->webkitCancelFullScreen();
- m_controls->exitedFullscreen();
- } else {
+ else
document()->requestFullScreenForElement(mediaElement(), 0, Document::ExemptIFrameAllowFulScreenRequirement);
- m_controls->enteredFullscreen();
- }
} else
#endif
mediaElement()->enterFullscreen();
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes