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.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@87657
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2011-05-29 Dan Bernstein <mitz@apple.com>
+
+ 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 <darin@apple.com>
Reviewed by Kevin Decker.
void Document::webkitDidEnterFullScreenForElement(Element*)
{
- ASSERT(m_fullScreenElement);
+ m_fullScreenElement->didBecomeFullscreenElement();
if (m_fullScreenRenderer) {
#if USE(ACCELERATED_COMPOSITING)
{
setContainsFullScreenElementRecursively(ownerElement(), false);
+ m_fullScreenElement->willStopBeingFullscreenElement();
+
if (m_fullScreenRenderer) {
setAnimatingFullScreen(true);
#if USE(ACCELERATED_COMPOSITING)
// 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();
}
}
+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;
virtual void recalcStyle(StyleChange);
virtual void defaultEventHandler(Event*);
-
+
+ virtual void didBecomeFullscreenElement();
+ virtual void willStopBeingFullscreenElement();
+
// ActiveDOMObject functions.
virtual bool canSuspend() const;
virtual void suspend(ReasonForSuspension);
// 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();