- 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;