Title: [87322] trunk
Revision
87322
Author
[email protected]
Date
2011-05-25 14:38:31 -0700 (Wed, 25 May 2011)

Log Message

2011-05-25  Jer Noble  <[email protected]>

        Reviewed by Darin Adler.

        REGRESSION: Fullscreen button on embedded Vimeo videos does nothing
        https://bugs.webkit.org/show_bug.cgi?id=61461

        * fullscreen/full-screen-iframe-legacy-expected.txt: Added.
        * fullscreen/full-screen-iframe-legacy.html: Added.
        * fullscreen/resources/legacy.html: Added.
2011-05-25  Jer Noble  <[email protected]>

        Reviewed by Darin Adler.

        REGRESSION: Fullscreen button on embedded Vimeo videos does nothing
        https://bugs.webkit.org/show_bug.cgi?id=61461

        Tests: fullscreen/full-screen-iframe-legacy.html

        Allow calls from the legacy full-screen API to bypass the iframe
        "webkitallowfullscreen" requirement by adding a parameter to
        Document::webkitRequestFullScreenForElement specifying the strictness
        of that check.  Specify this new parameter everywhere that function is
        called, including in the default controls' full-screen button handler.

        * dom/Document.cpp:
        (WebCore::Document::webkitRequestFullScreenForElement):
        * dom/Document.h:
        * dom/Element.cpp:
        (WebCore::Element::requestFullScreen): Renamed from webkitRequestFullScreen.
        * html/HTMLMediaElement.cpp:
        (WebCore::HTMLMediaElement::enterFullscreen):
        * html/shadow/MediaControlElements.cpp:
        (WebCore::MediaControlFullscreenButtonElement::defaultEventHandler):

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (87321 => 87322)


--- trunk/LayoutTests/ChangeLog	2011-05-25 21:33:15 UTC (rev 87321)
+++ trunk/LayoutTests/ChangeLog	2011-05-25 21:38:31 UTC (rev 87322)
@@ -1,3 +1,14 @@
+2011-05-25  Jer Noble  <[email protected]>
+
+        Reviewed by Darin Adler.
+
+        REGRESSION: Fullscreen button on embedded Vimeo videos does nothing
+        https://bugs.webkit.org/show_bug.cgi?id=61461
+
+        * fullscreen/full-screen-iframe-legacy-expected.txt: Added.
+        * fullscreen/full-screen-iframe-legacy.html: Added.
+        * fullscreen/resources/legacy.html: Added.
+
 2011-05-25  Caio Marcelo de Oliveira Filho  <[email protected]>
 
         Reviewed by Andreas Kling.

Added: trunk/LayoutTests/fullscreen/full-screen-iframe-legacy-expected.txt (0 => 87322)


--- trunk/LayoutTests/fullscreen/full-screen-iframe-legacy-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fullscreen/full-screen-iframe-legacy-expected.txt	2011-05-25 21:38:31 UTC (rev 87322)
@@ -0,0 +1,8 @@
+Test for bug 61461: Handle entering full screen security restrictions
+
+To test manually, click the video "full screen" button - the page should enter full screen mode.
+
+EVENT(webkitfullscreenchange)
+TEST(document.getElementById('frame').contentDocument.width==document.width) OK
+END OF TEST
+

Added: trunk/LayoutTests/fullscreen/full-screen-iframe-legacy.html (0 => 87322)


--- trunk/LayoutTests/fullscreen/full-screen-iframe-legacy.html	                        (rev 0)
+++ trunk/LayoutTests/fullscreen/full-screen-iframe-legacy.html	2011-05-25 21:38:31 UTC (rev 87322)
@@ -0,0 +1,27 @@
+<p>Test for <a href="" 61461</a>: 
+Handle entering full screen security restrictions</p>
+<p>To test manually, click the video "full screen" button - the page should enter full screen mode.</p>
+<script src=""
+<script>
+function runTest() {
+    var frame = document.getElementById('frame');
+
+    waitForEvent(frame.contentDocument, 'webkitfullscreenchange', function() { 
+            test("document.getElementById('frame').contentDocument.width==document.width")
+            endTest();
+    });
+
+    runWithKeyDown(function() {
+
+        setTimeout(function() { 
+            consoleWrite("FAIL - did not enter full screen!"); 
+            endTest(); 
+        }, 50);
+
+        var video = frame.contentDocument.getElementsByTagName('video')[0];
+        video.webkitEnterFullScreen();
+    });
+}
+</script>
+<iframe id="frame" src="" _onload_="runTest()" width="336" height="256">
+</iframe>

Added: trunk/LayoutTests/fullscreen/resources/legacy.html (0 => 87322)


--- trunk/LayoutTests/fullscreen/resources/legacy.html	                        (rev 0)
+++ trunk/LayoutTests/fullscreen/resources/legacy.html	2011-05-25 21:38:31 UTC (rev 87322)
@@ -0,0 +1,7 @@
+<video controls width="320" height="240"></video>
+<script src=""
+<script>
+    video = mediaElement = document.getElementsByTagName('video')[0];
+    var mediaFile = findMediaFile("video", "../../media/content/test");
+    video.src = ""
+</script>

Modified: trunk/Source/WebCore/ChangeLog (87321 => 87322)


--- trunk/Source/WebCore/ChangeLog	2011-05-25 21:33:15 UTC (rev 87321)
+++ trunk/Source/WebCore/ChangeLog	2011-05-25 21:38:31 UTC (rev 87322)
@@ -1,3 +1,28 @@
+2011-05-25  Jer Noble  <[email protected]>
+
+        Reviewed by Darin Adler.
+
+        REGRESSION: Fullscreen button on embedded Vimeo videos does nothing
+        https://bugs.webkit.org/show_bug.cgi?id=61461
+
+        Tests: fullscreen/full-screen-iframe-legacy.html
+
+        Allow calls from the legacy full-screen API to bypass the iframe
+        "webkitallowfullscreen" requirement by adding a parameter to 
+        Document::webkitRequestFullScreenForElement specifying the strictness
+        of that check.  Specify this new parameter everywhere that function is 
+        called, including in the default controls' full-screen button handler.
+
+        * dom/Document.cpp:
+        (WebCore::Document::webkitRequestFullScreenForElement):
+        * dom/Document.h:
+        * dom/Element.cpp:
+        (WebCore::Element::requestFullScreen): Renamed from webkitRequestFullScreen.
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::enterFullscreen):
+        * html/shadow/MediaControlElements.cpp:
+        (WebCore::MediaControlFullscreenButtonElement::defaultEventHandler):
+
 2011-05-25  Kulanthaivel Palanichamy  <[email protected]>
 
         Reviewed by David Hyatt.

Modified: trunk/Source/WebCore/dom/Document.cpp (87321 => 87322)


--- trunk/Source/WebCore/dom/Document.cpp	2011-05-25 21:33:15 UTC (rev 87321)
+++ trunk/Source/WebCore/dom/Document.cpp	2011-05-25 21:38:31 UTC (rev 87322)
@@ -4834,7 +4834,7 @@
     return true;
 }
 
-void Document::webkitRequestFullScreenForElement(Element* element, unsigned short flags)
+void Document::requestFullScreenForElement(Element* element, unsigned short flags, FullScreenCheckType checkType)
 {
     if (!page() || !page()->settings()->fullScreenEnabled())
         return;
@@ -4842,7 +4842,7 @@
     if (!element)
         element = documentElement();
     
-    if (!fullScreenIsAllowedForElement(element))
+    if (checkType == EnforceIFrameAllowFulScreenRequirement && !fullScreenIsAllowedForElement(element))
         return;
     
     if (!ScriptController::processingUserGesture())

Modified: trunk/Source/WebCore/dom/Document.h (87321 => 87322)


--- trunk/Source/WebCore/dom/Document.h	2011-05-25 21:33:15 UTC (rev 87321)
+++ trunk/Source/WebCore/dom/Document.h	2011-05-25 21:38:31 UTC (rev 87322)
@@ -1055,7 +1055,13 @@
     bool webkitIsFullScreen() const { return m_fullScreenElement.get(); }
     bool webkitFullScreenKeyboardInputAllowed() const { return m_fullScreenElement.get() && m_areKeysEnabledInFullScreen; }
     Element* webkitCurrentFullScreenElement() const { return m_fullScreenElement.get(); }
-    void webkitRequestFullScreenForElement(Element*, unsigned short flags);
+    
+    enum FullScreenCheckType {
+        EnforceIFrameAllowFulScreenRequirement,
+        ExemptIFrameAllowFulScreenRequirement,
+    };
+
+    void requestFullScreenForElement(Element*, unsigned short flags, FullScreenCheckType);
     void webkitCancelFullScreen();
     
     void webkitWillEnterFullScreenForElement(Element*);

Modified: trunk/Source/WebCore/dom/Element.cpp (87321 => 87322)


--- trunk/Source/WebCore/dom/Element.cpp	2011-05-25 21:33:15 UTC (rev 87321)
+++ trunk/Source/WebCore/dom/Element.cpp	2011-05-25 21:38:31 UTC (rev 87322)
@@ -1889,7 +1889,7 @@
 #if ENABLE(FULLSCREEN_API)
 void Element::webkitRequestFullScreen(unsigned short flags)
 {
-    document()->webkitRequestFullScreenForElement(this, flags);
+    document()->requestFullScreenForElement(this, flags, Document::EnforceIFrameAllowFulScreenRequirement);
 }
 #endif    
 

Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (87321 => 87322)


--- trunk/Source/WebCore/html/HTMLMediaElement.cpp	2011-05-25 21:33:15 UTC (rev 87321)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp	2011-05-25 21:38:31 UTC (rev 87322)
@@ -2531,7 +2531,7 @@
     LOG(Media, "HTMLMediaElement::enterFullscreen");
 #if ENABLE(FULLSCREEN_API)
     if (document() && document()->settings() && document()->settings()->fullScreenEnabled()) {
-        webkitRequestFullScreen(0);
+        document()->requestFullScreenForElement(this, 0, Document::ExemptIFrameAllowFulScreenRequirement);
         return;
     }
 #endif

Modified: trunk/Source/WebCore/html/shadow/MediaControlElements.cpp (87321 => 87322)


--- trunk/Source/WebCore/html/shadow/MediaControlElements.cpp	2011-05-25 21:33:15 UTC (rev 87321)
+++ trunk/Source/WebCore/html/shadow/MediaControlElements.cpp	2011-05-25 21:38:31 UTC (rev 87322)
@@ -793,7 +793,7 @@
                 document()->webkitCancelFullScreen();
                 m_controls->exitedFullscreen();
             } else {
-                mediaElement()->webkitRequestFullScreen(0);
+                document()->requestFullScreenForElement(mediaElement(), 0, Document::ExemptIFrameAllowFulScreenRequirement);
                 m_controls->enteredFullscreen();
             }
         } else
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to