Title: [179612] trunk
Revision
179612
Author
[email protected]
Date
2015-02-04 10:16:06 -0800 (Wed, 04 Feb 2015)

Log Message

video.attribute should not return true just because of fullscreen
https://bugs.webkit.org/show_bug.cgi?id=141219

Reviewed by Dean Jackson.

Source/WebCore:

No new tests, updated media/video-fullscreeen-only-controls.html

* Modules/mediacontrols/mediaControlsApple.js:
(Controller.prototype.shouldHaveControls):
* Modules/mediacontrols/mediaControlsiOS.js:
(ControllerIOS.prototype.isFullScreen):

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::controls): Don't consider fullscreen status.
(WebCore::HTMLMediaElement::configureMediaControls): Create controls if a video element
    isn't allowed to play inline, or if it is in fullscreen.

LayoutTests:

* media/video-fullscreeen-only-controls-expected.txt: Update.
* media/video-fullscreeen-only-controls.html: Ditto.

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (179611 => 179612)


--- trunk/LayoutTests/ChangeLog	2015-02-04 18:08:38 UTC (rev 179611)
+++ trunk/LayoutTests/ChangeLog	2015-02-04 18:16:06 UTC (rev 179612)
@@ -1,3 +1,13 @@
+2015-02-04  Eric Carlson  <[email protected]>
+
+        video.attribute should not return true just because of fullscreen
+        https://bugs.webkit.org/show_bug.cgi?id=141219
+
+        Reviewed by Dean Jackson.
+
+        * media/video-fullscreeen-only-controls-expected.txt: Update.
+        * media/video-fullscreeen-only-controls.html: Ditto.
+
 2015-02-04  Alexey Proskuryakov  <[email protected]>
 
         inspector/css/selector-dynamic-specificity.html is very slow on Yosemite

Modified: trunk/LayoutTests/media/video-fullscreeen-only-controls-expected.txt (179611 => 179612)


--- trunk/LayoutTests/media/video-fullscreeen-only-controls-expected.txt	2015-02-04 18:08:38 UTC (rev 179611)
+++ trunk/LayoutTests/media/video-fullscreeen-only-controls-expected.txt	2015-02-04 18:16:06 UTC (rev 179612)
@@ -2,6 +2,8 @@
 
 
 RUN(internals.setMediaSessionRestrictions('video', 'InlineVideoPlaybackRestricted'))
+EXPECTED (video.hasAttribute('controls') == 'false') OK
+EXPECTED (video.controls == 'false') OK
 EXPECTED (shadowRoot = internals.shadowRoot(video) != 'null') OK
 EXPECTED (panel = mediaControlsElement(shadowRoot.firstChild, '-webkit-media-controls-panel') != 'null') OK
 EXPECTED (internals.shadowPseudoId(panel) == '-webkit-media-controls-panel') OK

Modified: trunk/LayoutTests/media/video-fullscreeen-only-controls.html (179611 => 179612)


--- trunk/LayoutTests/media/video-fullscreeen-only-controls.html	2015-02-04 18:08:38 UTC (rev 179611)
+++ trunk/LayoutTests/media/video-fullscreeen-only-controls.html	2015-02-04 18:16:06 UTC (rev 179612)
@@ -14,6 +14,9 @@
     var video = document.getElementById('video');
     video.src = "" "content/test");
 
+    testExpected("video.hasAttribute('controls')", false);
+    testExpected("video.controls", false);
+
     if (window.internals) {
         testExpected("shadowRoot = internals.shadowRoot(video)", null, "!=");
         testExpected("panel = mediaControlsElement(shadowRoot.firstChild, '-webkit-media-controls-panel')", null, "!=");

Modified: trunk/Source/WebCore/ChangeLog (179611 => 179612)


--- trunk/Source/WebCore/ChangeLog	2015-02-04 18:08:38 UTC (rev 179611)
+++ trunk/Source/WebCore/ChangeLog	2015-02-04 18:16:06 UTC (rev 179612)
@@ -1,3 +1,22 @@
+2015-02-04  Eric Carlson  <[email protected]>
+
+        video.attribute should not return true just because of fullscreen
+        https://bugs.webkit.org/show_bug.cgi?id=141219
+
+        Reviewed by Dean Jackson.
+
+        No new tests, updated media/video-fullscreeen-only-controls.html
+
+        * Modules/mediacontrols/mediaControlsApple.js:
+        (Controller.prototype.shouldHaveControls):
+        * Modules/mediacontrols/mediaControlsiOS.js:
+        (ControllerIOS.prototype.isFullScreen):
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::controls): Don't consider fullscreen status.
+        (WebCore::HTMLMediaElement::configureMediaControls): Create controls if a video element
+            isn't allowed to play inline, or if it is in fullscreen.
+
 2015-02-04  Mark Lam  <[email protected]>
 
         Remove concept of makeUsableFromMultipleThreads().

Modified: trunk/Source/WebCore/Modules/mediacontrols/mediaControlsApple.js (179611 => 179612)


--- trunk/Source/WebCore/Modules/mediacontrols/mediaControlsApple.js	2015-02-04 18:08:38 UTC (rev 179611)
+++ trunk/Source/WebCore/Modules/mediacontrols/mediaControlsApple.js	2015-02-04 18:16:06 UTC (rev 179612)
@@ -250,6 +250,9 @@
 
     shouldHaveControls: function()
     {
+        if (!this.isAudio() && !this.host.mediaPlaybackAllowsInline)
+            return true;
+
         return this.video.controls || this.isFullScreen();
     },
 

Modified: trunk/Source/WebCore/Modules/mediacontrols/mediaControlsiOS.js (179611 => 179612)


--- trunk/Source/WebCore/Modules/mediacontrols/mediaControlsiOS.js	2015-02-04 18:08:38 UTC (rev 179611)
+++ trunk/Source/WebCore/Modules/mediacontrols/mediaControlsiOS.js	2015-02-04 18:16:06 UTC (rev 179612)
@@ -413,7 +413,7 @@
 
     isFullScreen: function()
     {
-        return this.video.webkitDisplayingFullscreen;
+        return this.video.webkitDisplayingFullscreen && this.presentationMode() != 'optimized';
     },
 
     handleFullscreenButtonClicked: function(event) {

Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (179611 => 179612)


--- trunk/Source/WebCore/html/HTMLMediaElement.cpp	2015-02-04 18:08:38 UTC (rev 179611)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp	2015-02-04 18:16:06 UTC (rev 179612)
@@ -2966,14 +2966,6 @@
     if (frame && !frame->script().canExecuteScripts(NotAboutToExecuteScript))
         return true;
 
-    // always show controls for video when fullscreen playback is required.
-    if (isVideo() && m_mediaSession->requiresFullscreenForVideoPlayback(*this))
-        return true;
-
-    // Always show controls when in full screen mode.
-    if (isFullscreen())
-        return true;
-
     return fastHasAttribute(controlsAttr);
 }
 
@@ -5256,13 +5248,23 @@
 
 void HTMLMediaElement::configureMediaControls()
 {
+    bool requireControls = controls();
+
+    // Always create controls for video when fullscreen playback is required.
+    if (isVideo() && m_mediaSession->requiresFullscreenForVideoPlayback(*this))
+        requireControls = true;
+
+    // Always create controls when in full screen mode.
+    if (isFullscreen())
+        requireControls = true;
+
 #if ENABLE(MEDIA_CONTROLS_SCRIPT)
-    if (!controls() || !inDocument())
+    if (!requireControls || !inDocument())
         return;
 
     ensureUserAgentShadowRoot();
 #else
-    if (!controls() || !inDocument()) {
+    if (!requireControls || !inDocument()) {
         if (hasMediaControls())
             mediaControls()->hide();
         return;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to