Title: [218891] trunk
Revision
218891
Author
[email protected]
Date
2017-06-28 13:59:06 -0700 (Wed, 28 Jun 2017)

Log Message

Volume controls should be hidden when AirPlay is active
https://bugs.webkit.org/show_bug.cgi?id=173933
<rdar://problem/33011931>

Patch by Antoine Quint <[email protected]> on 2017-06-28
Reviewed by Dean Jackson.

Source/WebCore:

Ensure we don't show any volume controls during AirPlay. We set the mute button's enabled state to "false"
when AirPlay is active and key off this enabled stated to control the display of all volume-related controls
throughout the UI.

Tests: media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-volume-controls-hidden-when-mute-button-disabled.html
       media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-top-right-controls-bar-hidden-when-mute-button-disabled.html

* Modules/modern-media-controls/controls/inline-media-controls.js:
(InlineMediaControls.prototype._addTopRightBarWithMuteButtonToChildren):
(InlineMediaControls):
* Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js:
(MacOSFullscreenMediaControls.prototype.layout):
* Modules/modern-media-controls/media/airplay-support.js:
(AirplaySupport.prototype.syncControl):
(AirplaySupport):

LayoutTests:

Expand the AirplaySupport testing to check that the mute button's enabled state is set to "false"
in AirPlay and add new tests to check that volume controls are correctly hidden when the mute button
is disabled.

* media/modern-media-controls/airplay-support/airplay-support-expected.txt:
* media/modern-media-controls/airplay-support/airplay-support.html:
* media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-volume-controls-hidden-when-mute-button-disabled-expected.txt: Added.
* media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-volume-controls-hidden-when-mute-button-disabled.html: Added.
* media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-top-right-controls-bar-hidden-when-mute-button-disabled-expected.txt: Added.
* media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-top-right-controls-bar-hidden-when-mute-button-disabled.html: Added.
* platform/mac/TestExpectations:

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (218890 => 218891)


--- trunk/LayoutTests/ChangeLog	2017-06-28 20:58:07 UTC (rev 218890)
+++ trunk/LayoutTests/ChangeLog	2017-06-28 20:59:06 UTC (rev 218891)
@@ -1,3 +1,23 @@
+2017-06-28  Antoine Quint  <[email protected]>
+
+        Volume controls should be hidden when AirPlay is active
+        https://bugs.webkit.org/show_bug.cgi?id=173933
+        <rdar://problem/33011931>
+
+        Reviewed by Dean Jackson.
+
+        Expand the AirplaySupport testing to check that the mute button's enabled state is set to "false"
+        in AirPlay and add new tests to check that volume controls are correctly hidden when the mute button
+        is disabled.
+
+        * media/modern-media-controls/airplay-support/airplay-support-expected.txt:
+        * media/modern-media-controls/airplay-support/airplay-support.html:
+        * media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-volume-controls-hidden-when-mute-button-disabled-expected.txt: Added.
+        * media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-volume-controls-hidden-when-mute-button-disabled.html: Added.
+        * media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-top-right-controls-bar-hidden-when-mute-button-disabled-expected.txt: Added.
+        * media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-top-right-controls-bar-hidden-when-mute-button-disabled.html: Added.
+        * platform/mac/TestExpectations:
+
 2017-06-28  Matt Lewis  <[email protected]>
 
         Marked imported/w3c/web-platform-tests/IndexedDB/idbindex_getAllKeys.html as flaky.

Modified: trunk/LayoutTests/media/modern-media-controls/airplay-support/airplay-support-expected.txt (218890 => 218891)


--- trunk/LayoutTests/media/modern-media-controls/airplay-support/airplay-support-expected.txt	2017-06-28 20:58:07 UTC (rev 218890)
+++ trunk/LayoutTests/media/modern-media-controls/airplay-support/airplay-support-expected.txt	2017-06-28 20:59:06 UTC (rev 218891)
@@ -6,10 +6,12 @@
 Making AirPlay routes available.
 PASS mediaController.controls.airplayButton.enabled is true
 PASS mediaController.controls.airplayButton.on is false
+PASS mediaController.controls.muteButton.enabled is true
 
 Entering AirPlay playback mode.
 PASS mediaController.controls.airplayButton.enabled is true
 PASS mediaController.controls.airplayButton.on is true
+PASS mediaController.controls.muteButton.enabled is false
 
 PASS successfullyParsed is true
 

Modified: trunk/LayoutTests/media/modern-media-controls/airplay-support/airplay-support.html (218890 => 218891)


--- trunk/LayoutTests/media/modern-media-controls/airplay-support/airplay-support.html	2017-06-28 20:58:07 UTC (rev 218890)
+++ trunk/LayoutTests/media/modern-media-controls/airplay-support/airplay-support.html	2017-06-28 20:59:06 UTC (rev 218891)
@@ -42,6 +42,7 @@
 
     shouldBeTrue("mediaController.controls.airplayButton.enabled");
     shouldBeFalse("mediaController.controls.airplayButton.on");
+    shouldBeTrue("mediaController.controls.muteButton.enabled");
 
     enterAirPlay();
 }
@@ -62,6 +63,7 @@
 
     shouldBeTrue("mediaController.controls.airplayButton.enabled");
     shouldBeTrue("mediaController.controls.airplayButton.on");
+    shouldBeFalse("mediaController.controls.muteButton.enabled");
 
     debug("");
     container.remove();

Added: trunk/LayoutTests/media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-volume-controls-hidden-when-mute-button-disabled-expected.txt (0 => 218891)


--- trunk/LayoutTests/media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-volume-controls-hidden-when-mute-button-disabled-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-volume-controls-hidden-when-mute-button-disabled-expected.txt	2017-06-28 20:59:06 UTC (rev 218891)
@@ -0,0 +1,15 @@
+Testing the volume controls aren't visible when the mute button is disabled.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Mute button is enabled
+PASS leftContainer.visible is true
+
+Mute button is disabled
+PASS leftContainer.visible is false
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-volume-controls-hidden-when-mute-button-disabled.html (0 => 218891)


--- trunk/LayoutTests/media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-volume-controls-hidden-when-mute-button-disabled.html	                        (rev 0)
+++ trunk/LayoutTests/media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-volume-controls-hidden-when-mute-button-disabled.html	2017-06-28 20:59:06 UTC (rev 218891)
@@ -0,0 +1,24 @@
+<script src=""
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<body>
+<script type="text/_javascript_">
+
+description("Testing the volume controls aren't visible when the mute button is disabled.");
+
+const mediaControls = new MacOSFullscreenMediaControls({ width: 250, height: 250 });
+const leftContainer = mediaControls.bottomControlsBar.children[1];
+
+debug("Mute button is enabled");
+shouldBeTrue("leftContainer.visible");
+
+debug("")
+debug("Mute button is disabled");
+mediaControls.muteButton.enabled = false;
+shouldBeFalse("leftContainer.visible");
+
+debug("");
+
+</script>
+<script src=""
+</body>

Added: trunk/LayoutTests/media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-top-right-controls-bar-hidden-when-mute-button-disabled-expected.txt (0 => 218891)


--- trunk/LayoutTests/media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-top-right-controls-bar-hidden-when-mute-button-disabled-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-top-right-controls-bar-hidden-when-mute-button-disabled-expected.txt	2017-06-28 20:59:06 UTC (rev 218891)
@@ -0,0 +1,17 @@
+Testing the top right controls bar isn't visible when the mute button is disabled.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Mute button is enabled
+PASS mediaControls.muteButton.parent.parent is mediaControls.topRightControlsBar
+PASS mediaControls.topRightControlsBar.parent is mediaControls
+
+Mute button is disabled
+PASS mediaControls.muteButton.parent.parent is mediaControls.topRightControlsBar
+PASS mediaControls.topRightControlsBar.parent is null
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-top-right-controls-bar-hidden-when-mute-button-disabled.html (0 => 218891)


--- trunk/LayoutTests/media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-top-right-controls-bar-hidden-when-mute-button-disabled.html	                        (rev 0)
+++ trunk/LayoutTests/media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-top-right-controls-bar-hidden-when-mute-button-disabled.html	2017-06-28 20:59:06 UTC (rev 218891)
@@ -0,0 +1,25 @@
+<script src=""
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<body>
+<script type="text/_javascript_">
+
+description("Testing the top right controls bar isn't visible when the mute button is disabled.");
+
+const mediaControls = new MacOSInlineMediaControls({ width: 250, height: 250 });
+
+debug("Mute button is enabled");
+shouldBe("mediaControls.muteButton.parent.parent", "mediaControls.topRightControlsBar");
+shouldBe("mediaControls.topRightControlsBar.parent", "mediaControls");
+
+debug("")
+debug("Mute button is disabled");
+mediaControls.muteButton.enabled = false;
+shouldBe("mediaControls.muteButton.parent.parent", "mediaControls.topRightControlsBar");
+shouldBeNull("mediaControls.topRightControlsBar.parent");
+
+debug("");
+
+</script>
+<script src=""
+</body>

Modified: trunk/LayoutTests/platform/mac/TestExpectations (218890 => 218891)


--- trunk/LayoutTests/platform/mac/TestExpectations	2017-06-28 20:58:07 UTC (rev 218890)
+++ trunk/LayoutTests/platform/mac/TestExpectations	2017-06-28 20:59:06 UTC (rev 218891)
@@ -1555,7 +1555,9 @@
 media/modern-media-controls/layout-node [ Pass ]
 media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag-is-prevented-over-button.html [ Pass ]
 media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag.html [ Pass ]
+media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-volume-controls-hidden-when-mute-button-disabled.html [ Pass ]
 media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-mute-button-in-bottom-or-top-right-controls-bar.html [ Pass ]
+media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-top-right-controls-bar-hidden-when-mute-button-disabled.html [ Pass ]
 media/modern-media-controls/media-documents [ Pass ]
 media/modern-media-controls/mute-button [ Pass ]
 media/modern-media-controls/mute-support [ Pass ]

Modified: trunk/Source/WebCore/ChangeLog (218890 => 218891)


--- trunk/Source/WebCore/ChangeLog	2017-06-28 20:58:07 UTC (rev 218890)
+++ trunk/Source/WebCore/ChangeLog	2017-06-28 20:59:06 UTC (rev 218891)
@@ -1,3 +1,27 @@
+2017-06-28  Antoine Quint  <[email protected]>
+
+        Volume controls should be hidden when AirPlay is active
+        https://bugs.webkit.org/show_bug.cgi?id=173933
+        <rdar://problem/33011931>
+
+        Reviewed by Dean Jackson.
+
+        Ensure we don't show any volume controls during AirPlay. We set the mute button's enabled state to "false"
+        when AirPlay is active and key off this enabled stated to control the display of all volume-related controls
+        throughout the UI.
+
+        Tests: media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-volume-controls-hidden-when-mute-button-disabled.html
+               media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-top-right-controls-bar-hidden-when-mute-button-disabled.html
+
+        * Modules/modern-media-controls/controls/inline-media-controls.js:
+        (InlineMediaControls.prototype._addTopRightBarWithMuteButtonToChildren):
+        (InlineMediaControls):
+        * Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js:
+        (MacOSFullscreenMediaControls.prototype.layout):
+        * Modules/modern-media-controls/media/airplay-support.js:
+        (AirplaySupport.prototype.syncControl):
+        (AirplaySupport):
+
 2017-06-28  Konstantin Tokarev  <[email protected]>
 
         Remove excessive includes from WebCore/css sources

Modified: trunk/Source/WebCore/Modules/modern-media-controls/controls/inline-media-controls.js (218890 => 218891)


--- trunk/Source/WebCore/Modules/modern-media-controls/controls/inline-media-controls.js	2017-06-28 20:58:07 UTC (rev 218890)
+++ trunk/Source/WebCore/Modules/modern-media-controls/controls/inline-media-controls.js	2017-06-28 20:59:06 UTC (rev 218891)
@@ -275,6 +275,9 @@
 
     _addTopRightBarWithMuteButtonToChildren(children)
     {
+        if (!this.muteButton.enabled)
+            return;
+
         delete this.muteButton.dropped;
         this.muteButton.style = Button.Styles.Bar;
         this._topRightControlsBarContainer.buttons = [this.muteButton];

Modified: trunk/Source/WebCore/Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js (218890 => 218891)


--- trunk/Source/WebCore/Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js	2017-06-28 20:58:07 UTC (rev 218890)
+++ trunk/Source/WebCore/Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js	2017-06-28 20:59:06 UTC (rev 218891)
@@ -123,6 +123,8 @@
 
         this._rightContainer.buttonMargin = buttonMargin;
 
+        this._leftContainer.visible = this.muteButton.enabled;
+
         this._leftContainer.layout();
         this._centerContainer.layout();
         this._rightContainer.layout();

Modified: trunk/Source/WebCore/Modules/modern-media-controls/media/airplay-support.js (218890 => 218891)


--- trunk/Source/WebCore/Modules/modern-media-controls/media/airplay-support.js	2017-06-28 20:58:07 UTC (rev 218890)
+++ trunk/Source/WebCore/Modules/modern-media-controls/media/airplay-support.js	2017-06-28 20:59:06 UTC (rev 218891)
@@ -55,6 +55,7 @@
     {
         this.control.enabled = !!this._routesAvailable;
         this.control.on = this.mediaController.media.webkitCurrentPlaybackTargetIsWireless;
+        this.mediaController.controls.muteButton.enabled = !this.control.on;
     }
 
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to