Diff
Modified: trunk/LayoutTests/ChangeLog (208079 => 208080)
--- trunk/LayoutTests/ChangeLog 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/LayoutTests/ChangeLog 2016-10-28 23:35:14 UTC (rev 208080)
@@ -1,3 +1,43 @@
+2016-10-28 Antoine Quint <grao...@apple.com>
+
+ [Modern Media Controls] Media Controller: volume control support
+ https://bugs.webkit.org/show_bug.cgi?id=163727
+
+ Reviewed by Dean Jackson.
+
+ Adding new tests for VolumeSupport and adding the new resource to other MediaController tests.
+
+ * http/tests/media/modern-media-controls/skip-back-support/skip-back-support-button-click.html:
+ * media/modern-media-controls/elapsed-time-support/elapsed-time-support.html:
+ * media/modern-media-controls/media-controller/media-controller-constructor.html:
+ * media/modern-media-controls/media-controller/media-controller-resize.html:
+ * media/modern-media-controls/mute-support/mute-support-button-click.html:
+ * media/modern-media-controls/mute-support/mute-support-media-api.html:
+ * media/modern-media-controls/mute-support/mute-support-muted.html:
+ * media/modern-media-controls/playback-support/playback-support-autoplay.html:
+ * media/modern-media-controls/playback-support/playback-support-button-click.html:
+ * media/modern-media-controls/playback-support/playback-support-media-api.html:
+ * media/modern-media-controls/remaining-time-support/remaining-time-support.html:
+ * media/modern-media-controls/scrubber-support/scrubber-support-click.html:
+ * media/modern-media-controls/scrubber-support/scrubber-support-drag.html:
+ * media/modern-media-controls/scrubber-support/scrubber-support-media-api.html:
+ * media/modern-media-controls/start-support/start-support-audio.html:
+ * media/modern-media-controls/start-support/start-support-autoplay.html:
+ * media/modern-media-controls/start-support/start-support-click-to-start.html:
+ * media/modern-media-controls/start-support/start-support-error.html:
+ * media/modern-media-controls/start-support/start-support-fullscreen.html:
+ * media/modern-media-controls/start-support/start-support-manual-play.html:
+ * media/modern-media-controls/start-support/start-support-no-source.html:
+ * media/modern-media-controls/volume-support/volume-support-click-expected.txt: Added.
+ * media/modern-media-controls/volume-support/volume-support-click.html: Added.
+ * media/modern-media-controls/volume-support/volume-support-drag-expected.txt: Added.
+ * media/modern-media-controls/volume-support/volume-support-drag.html: Added.
+ * media/modern-media-controls/volume-support/volume-support-media-api-expected.txt: Added.
+ * media/modern-media-controls/volume-support/volume-support-media-api-mute-expected.txt: Added.
+ * media/modern-media-controls/volume-support/volume-support-media-api-mute.html: Added.
+ * media/modern-media-controls/volume-support/volume-support-media-api.html: Added.
+ * platform/ios-simulator/TestExpectations:
+
2016-10-28 Yusuke Suzuki <utatane....@gmail.com>
[DOMJIT] Implement Document::documentElement
Modified: trunk/LayoutTests/http/tests/media/modern-media-controls/skip-back-support/skip-back-support-button-click.html (208079 => 208080)
--- trunk/LayoutTests/http/tests/media/modern-media-controls/skip-back-support/skip-back-support-button-click.html 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/LayoutTests/http/tests/media/modern-media-controls/skip-back-support/skip-back-support-button-click.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -33,6 +33,7 @@
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<body>
Modified: trunk/LayoutTests/media/modern-media-controls/elapsed-time-support/elapsed-time-support.html (208079 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/elapsed-time-support/elapsed-time-support.html 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/LayoutTests/media/modern-media-controls/elapsed-time-support/elapsed-time-support.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -33,6 +33,7 @@
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<body>
Modified: trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-constructor.html (208079 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-constructor.html 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-constructor.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -33,6 +33,7 @@
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<body>
Modified: trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-resize.html (208079 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-resize.html 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-resize.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -33,6 +33,7 @@
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<body>
Modified: trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-button-click.html (208079 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-button-click.html 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-button-click.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -33,6 +33,7 @@
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<body>
Modified: trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-media-api.html (208079 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-media-api.html 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-media-api.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -33,6 +33,7 @@
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<body>
Modified: trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-muted.html (208079 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-muted.html 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-muted.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -33,6 +33,7 @@
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<body>
Modified: trunk/LayoutTests/media/modern-media-controls/playback-support/playback-support-autoplay.html (208079 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/playback-support/playback-support-autoplay.html 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/LayoutTests/media/modern-media-controls/playback-support/playback-support-autoplay.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -33,6 +33,7 @@
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<body>
Modified: trunk/LayoutTests/media/modern-media-controls/playback-support/playback-support-button-click.html (208079 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/playback-support/playback-support-button-click.html 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/LayoutTests/media/modern-media-controls/playback-support/playback-support-button-click.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -33,6 +33,7 @@
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<body>
Modified: trunk/LayoutTests/media/modern-media-controls/playback-support/playback-support-media-api.html (208079 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/playback-support/playback-support-media-api.html 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/LayoutTests/media/modern-media-controls/playback-support/playback-support-media-api.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -33,6 +33,7 @@
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<body>
Modified: trunk/LayoutTests/media/modern-media-controls/remaining-time-support/remaining-time-support.html (208079 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/remaining-time-support/remaining-time-support.html 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/LayoutTests/media/modern-media-controls/remaining-time-support/remaining-time-support.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -33,6 +33,7 @@
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<body>
Modified: trunk/LayoutTests/media/modern-media-controls/scrubber-support/scrubber-support-click.html (208079 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/scrubber-support/scrubber-support-click.html 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/LayoutTests/media/modern-media-controls/scrubber-support/scrubber-support-click.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -45,6 +45,7 @@
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<body>
Modified: trunk/LayoutTests/media/modern-media-controls/scrubber-support/scrubber-support-drag.html (208079 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/scrubber-support/scrubber-support-drag.html 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/LayoutTests/media/modern-media-controls/scrubber-support/scrubber-support-drag.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -45,6 +45,7 @@
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<body>
Modified: trunk/LayoutTests/media/modern-media-controls/scrubber-support/scrubber-support-media-api.html (208079 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/scrubber-support/scrubber-support-media-api.html 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/LayoutTests/media/modern-media-controls/scrubber-support/scrubber-support-media-api.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -33,6 +33,7 @@
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<body>
Modified: trunk/LayoutTests/media/modern-media-controls/start-support/start-support-audio.html (208079 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/start-support/start-support-audio.html 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/LayoutTests/media/modern-media-controls/start-support/start-support-audio.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -33,6 +33,7 @@
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<body>
Modified: trunk/LayoutTests/media/modern-media-controls/start-support/start-support-autoplay.html (208079 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/start-support/start-support-autoplay.html 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/LayoutTests/media/modern-media-controls/start-support/start-support-autoplay.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -33,6 +33,7 @@
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<body>
Modified: trunk/LayoutTests/media/modern-media-controls/start-support/start-support-click-to-start.html (208079 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/start-support/start-support-click-to-start.html 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/LayoutTests/media/modern-media-controls/start-support/start-support-click-to-start.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -33,6 +33,7 @@
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<body>
Modified: trunk/LayoutTests/media/modern-media-controls/start-support/start-support-error.html (208079 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/start-support/start-support-error.html 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/LayoutTests/media/modern-media-controls/start-support/start-support-error.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -33,6 +33,7 @@
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<body>
Modified: trunk/LayoutTests/media/modern-media-controls/start-support/start-support-fullscreen.html (208079 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/start-support/start-support-fullscreen.html 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/LayoutTests/media/modern-media-controls/start-support/start-support-fullscreen.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -33,6 +33,7 @@
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<body>
Modified: trunk/LayoutTests/media/modern-media-controls/start-support/start-support-manual-play.html (208079 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/start-support/start-support-manual-play.html 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/LayoutTests/media/modern-media-controls/start-support/start-support-manual-play.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -33,6 +33,7 @@
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<body>
Modified: trunk/LayoutTests/media/modern-media-controls/start-support/start-support-no-source.html (208079 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/start-support/start-support-no-source.html 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/LayoutTests/media/modern-media-controls/start-support/start-support-no-source.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -33,6 +33,7 @@
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<script src="" type="text/_javascript_"></script>
<body>
Added: trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-click-expected.txt (0 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-click-expected.txt (rev 0)
+++ trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-click-expected.txt 2016-10-28 23:35:14 UTC (rev 208080)
@@ -0,0 +1,10 @@
+Testing the VolumeSupport behavior when clicking the volume slider.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS media.volume is 0.51
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Copied: trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-click.html (from rev 208078, trunk/LayoutTests/media/modern-media-controls/scrubber-support/scrubber-support-click.html) (0 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-click.html (rev 0)
+++ trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-click.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -0,0 +1,110 @@
+<link rel="stylesheet" href=""
+<link rel="stylesheet" href=""
+<link rel="stylesheet" href=""
+<link rel="stylesheet" href=""
+<link rel="stylesheet" href=""
+<link rel="stylesheet" href=""
+<link rel="stylesheet" href=""
+<link rel="stylesheet" href=""
+<link rel="stylesheet" href=""
+<link rel="stylesheet" href=""
+<link rel="stylesheet" href=""
+<link rel="stylesheet" href=""
+<script src=""
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<body>
+<style type="text/css" media="screen">
+
+ video, #host {
+ position: absolute;
+ top: 0;
+ left: 0;
+ }
+
+ video {
+ width: 800px;
+ height: 240px;
+ }
+
+</style>
+<video src=""
+<div id="host"></div>
+<script type="text/_javascript_">
+
+window.jsTestIsAsync = true;
+
+description("Testing the <code>VolumeSupport</code> behavior when clicking the volume slider.");
+
+iconService.directoryPath = "../../../../Source/WebCore/Modules/modern-media-controls/images";
+
+const container = document.querySelector("div#host");
+const media = document.querySelector("video");
+const mediaController = createControls(container, media, null);
+
+let numberOfFrames = 0;
+scheduler.frameDidFire = function() {
+ numberOfFrames++;
+
+ if (numberOfFrames == 1) {
+ // Controls are now visible, let's hover over the mute button to make the volume control visible.
+ const muteButtonElement = mediaController.controls.muteButton.element;
+ const muteButtonBounds = muteButtonElement.getBoundingClientRect();
+ eventSender.mouseMoveTo(muteButtonBounds.left + muteButtonBounds.width / 2, muteButtonBounds.top + muteButtonBounds.height / 2);
+ } else if (numberOfFrames == 2) {
+ // Volume slider is visible, let's click in the middle of it.
+ const volumeSliderBounds = mediaController.controls.volumeSlider.element.getBoundingClientRect();
+ eventSender.mouseMoveTo(volumeSliderBounds.left + volumeSliderBounds.width / 2, volumeSliderBounds.top + volumeSliderBounds.height / 2);
+ eventSender.mouseDown();
+ eventSender.mouseUp();
+ }
+};
+
+// First, ensure controls are shown.
+mediaController.controls.showsStartButton = false;
+
+media.addEventListener("volumechange", () => {
+ shouldBe("media.volume", "0.51");
+ container.remove();
+ media.remove();
+ finishJSTest();
+});
+
+</script>
+<script src=""
+</body>
Added: trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-drag-expected.txt (0 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-drag-expected.txt (rev 0)
+++ trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-drag-expected.txt 2016-10-28 23:35:14 UTC (rev 208080)
@@ -0,0 +1,21 @@
+Testing the VolumeSupport behavior when dragging the scrubber.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+By default, the volume slider should be set to 0 because the media is muted
+PASS mediaController.controls.volumeSlider.value is 0
+
+Before starting to drag the volume slider, the media should be muted still
+PASS media.muted is true
+
+We initiated a volume slider drag, the media should no longer be muted and the volume set
+PASS media.muted is false
+PASS media.volume is 0.51
+
+We finished dragging to set the volume to 1
+PASS media.volume is 1
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Copied: trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-drag.html (from rev 208078, trunk/LayoutTests/media/modern-media-controls/scrubber-support/scrubber-support-click.html) (0 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-drag.html (rev 0)
+++ trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-drag.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -0,0 +1,132 @@
+<link rel="stylesheet" href=""
+<link rel="stylesheet" href=""
+<link rel="stylesheet" href=""
+<link rel="stylesheet" href=""
+<link rel="stylesheet" href=""
+<link rel="stylesheet" href=""
+<link rel="stylesheet" href=""
+<link rel="stylesheet" href=""
+<link rel="stylesheet" href=""
+<link rel="stylesheet" href=""
+<link rel="stylesheet" href=""
+<link rel="stylesheet" href=""
+<script src=""
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<body>
+<style type="text/css" media="screen">
+
+ video, #host {
+ position: absolute;
+ top: 0;
+ left: 0;
+ }
+
+ video {
+ width: 800px;
+ height: 240px;
+ }
+
+</style>
+<video src="" muted></video>
+<div id="host"></div>
+<script type="text/_javascript_">
+
+window.jsTestIsAsync = true;
+
+description("Testing the <code>VolumeSupport</code> behavior when dragging the scrubber.");
+
+iconService.directoryPath = "../../../../Source/WebCore/Modules/modern-media-controls/images";
+
+const container = document.querySelector("div#host");
+const media = document.querySelector("video");
+const mediaController = createControls(container, media, null);
+
+debug("By default, the volume slider should be set to 0 because the media is muted");
+shouldBe("mediaController.controls.volumeSlider.value", "0");
+
+let numberOfFrames = 0;
+scheduler.frameDidFire = function() {
+ numberOfFrames++;
+
+ if (numberOfFrames == 1) {
+ // Controls are now visible, let's hover over the mute button to make the volume control visible.
+ const muteButtonElement = mediaController.controls.muteButton.element;
+ const muteButtonBounds = muteButtonElement.getBoundingClientRect();
+ eventSender.mouseMoveTo(muteButtonBounds.left + muteButtonBounds.width / 2, muteButtonBounds.top + muteButtonBounds.height / 2);
+ } else if (numberOfFrames == 2) {
+ // Volume slider is visible, let's start dragging in the middle of it.
+ const bounds = mediaController.controls.volumeSlider.children[1].element.getBoundingClientRect();
+ const centerX = bounds.left + bounds.width / 2;
+ const dragStartY = bounds.top + bounds.height / 2;
+ const dragEndY = bounds.top;
+ const delta = dragEndY - dragStartY;
+ const iterations = Math.abs(delta);
+
+ debug("");
+ debug("Before starting to drag the volume slider, the media should be muted still");
+ shouldBeTrue("media.muted");
+
+ eventSender.mouseMoveTo(centerX, dragStartY);
+ eventSender.mouseDown();
+
+ debug("");
+ debug("We initiated a volume slider drag, the media should no longer be muted and the volume set");
+ shouldBeFalse("media.muted");
+ shouldBe("media.volume", "0.51");
+
+ for (let i = 1; i <= iterations; ++i)
+ eventSender.mouseMoveTo(bounds.left + bounds.width / 2, dragStartY + i * Math.sign(delta));
+
+ eventSender.mouseUp();
+
+ debug("");
+ debug("We finished dragging to set the volume to 1");
+ shouldBe("media.volume", "1");
+ container.remove();
+ media.remove();
+ finishJSTest();
+ }
+};
+
+// First, ensure controls are shown.
+mediaController.controls.showsStartButton = false;
+
+</script>
+<script src=""
+</body>
Added: trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-media-api-expected.txt (0 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-media-api-expected.txt (rev 0)
+++ trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-media-api-expected.txt 2016-10-28 23:35:14 UTC (rev 208080)
@@ -0,0 +1,12 @@
+Testing the VolumeSupport behavior by using the media API.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS mediaController.controls.volumeSlider.value is 1
+PASS mediaController.controls.volumeSlider.value is 0.5
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-media-api-mute-expected.txt (0 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-media-api-mute-expected.txt (rev 0)
+++ trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-media-api-mute-expected.txt 2016-10-28 23:35:14 UTC (rev 208080)
@@ -0,0 +1,12 @@
+Testing the VolumeSupport behavior by using the media API to mute.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS mediaController.controls.volumeSlider.value is 1
+PASS mediaController.controls.volumeSlider.value is 0
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Copied: trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-media-api-mute.html (from rev 208078, trunk/LayoutTests/media/modern-media-controls/elapsed-time-support/elapsed-time-support.html) (0 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-media-api-mute.html (rev 0)
+++ trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-media-api-mute.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -0,0 +1,68 @@
+<script src=""
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<body>
+<video src="" style="width: 320px; height: 240px;"></video>
+<div id="shadow"></div>
+<script type="text/_javascript_">
+
+window.jsTestIsAsync = true;
+
+description("Testing the <code>VolumeSupport</code> behavior by using the media API to mute.");
+
+iconService.directoryPath = "../../../../Source/WebCore/Modules/modern-media-controls/images";
+
+const shadowRoot = document.querySelector("div#shadow").attachShadow({ mode: "open" });
+const media = document.querySelector("video");
+const mediaController = createControls(shadowRoot, media, null);
+
+shouldBe("mediaController.controls.volumeSlider.value", "1");
+
+media.addEventListener("volumechange", () => {
+ shouldBe("mediaController.controls.volumeSlider.value", "0");
+ debug("");
+ shadowRoot.host.remove();
+ media.remove();
+ finishJSTest();
+});
+
+media.muted = true;
+
+</script>
+<script src=""
+</body>
Copied: trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-media-api.html (from rev 208078, trunk/LayoutTests/media/modern-media-controls/elapsed-time-support/elapsed-time-support.html) (0 => 208080)
--- trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-media-api.html (rev 0)
+++ trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-media-api.html 2016-10-28 23:35:14 UTC (rev 208080)
@@ -0,0 +1,68 @@
+<script src=""
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
+<body>
+<video src="" style="width: 320px; height: 240px;"></video>
+<div id="shadow"></div>
+<script type="text/_javascript_">
+
+window.jsTestIsAsync = true;
+
+description("Testing the <code>VolumeSupport</code> behavior by using the media API.");
+
+iconService.directoryPath = "../../../../Source/WebCore/Modules/modern-media-controls/images";
+
+const shadowRoot = document.querySelector("div#shadow").attachShadow({ mode: "open" });
+const media = document.querySelector("video");
+const mediaController = createControls(shadowRoot, media, null);
+
+shouldBe("mediaController.controls.volumeSlider.value", "1");
+
+media.addEventListener("volumechange", () => {
+ shouldBe("mediaController.controls.volumeSlider.value", "0.5");
+ debug("");
+ shadowRoot.host.remove();
+ media.remove();
+ finishJSTest();
+});
+
+media.volume = 0.5;
+
+</script>
+<script src=""
+</body>
Modified: trunk/LayoutTests/platform/ios-simulator/TestExpectations (208079 => 208080)
--- trunk/LayoutTests/platform/ios-simulator/TestExpectations 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/LayoutTests/platform/ios-simulator/TestExpectations 2016-10-28 23:35:14 UTC (rev 208080)
@@ -2707,6 +2707,8 @@
webkit.org/b/163669 media/modern-media-controls/start-support/start-support-fullscreen.html [ Skip ]
webkit.org/b/164088 media/modern-media-controls/scrubber-support/scrubber-support-click.html [ Skip ]
webkit.org/b/164088 media/modern-media-controls/scrubber-support/scrubber-support-drag.html [ Skip ]
+webkit.org/b/164160 media/modern-media-controls/volume-support/volume-support-click.html [ Skip ]
+webkit.org/b/164160 media/modern-media-controls/volume-support/volume-support-drag.html [ Skip ]
# This variation font test requires Skia which isn't available on iOS.
webkit.org/b/163093 fast/text/variations/advances.html [ Failure ]
Modified: trunk/Source/WebCore/ChangeLog (208079 => 208080)
--- trunk/Source/WebCore/ChangeLog 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/Source/WebCore/ChangeLog 2016-10-28 23:35:14 UTC (rev 208080)
@@ -1,3 +1,31 @@
+2016-10-28 Antoine Quint <grao...@apple.com>
+
+ [Modern Media Controls] Media Controller: volume control support
+ https://bugs.webkit.org/show_bug.cgi?id=163727
+
+ Reviewed by Dean Jackson.
+
+ We introduce the VolumeSupport class which brings support for modifying the media
+ volume by interacting with the mute volume slider in the media controls and correctly
+ reflecting the media's volume should it be changed via the media API.
+
+ Tests: media/modern-media-controls/volume-support/volume-support-click.html
+ media/modern-media-controls/volume-support/volume-support-drag.html
+ media/modern-media-controls/volume-support/volume-support-media-api-mute.html
+ media/modern-media-controls/volume-support/volume-support-media-api.html
+
+ * Modules/modern-media-controls/js-files:
+ * Modules/modern-media-controls/media/media-controller.js:
+ (MediaController):
+ * Modules/modern-media-controls/media/volume-support.js: Added.
+ (VolumeSupport.prototype.get control):
+ (VolumeSupport.prototype.get mediaEvents):
+ (VolumeSupport.prototype.controlValueWillStartChanging):
+ (VolumeSupport.prototype.controlValueDidChange):
+ (VolumeSupport.prototype.syncControl):
+ (VolumeSupport):
+ * WebCore.xcodeproj/project.pbxproj:
+
2016-10-28 Yusuke Suzuki <utatane....@gmail.com>
[DOMJIT] Rename CallDOM to CallDOMGetter
Modified: trunk/Source/WebCore/Modules/modern-media-controls/js-files (208079 => 208080)
--- trunk/Source/WebCore/Modules/modern-media-controls/js-files 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/Source/WebCore/Modules/modern-media-controls/js-files 2016-10-28 23:35:14 UTC (rev 208080)
@@ -35,5 +35,6 @@
media/scrubbing-support.js
media/skip-back-support.js
media/start-support.js
+media/volume-support.js
media/media-controller.js
main.js
Modified: trunk/Source/WebCore/Modules/modern-media-controls/media/media-controller.js (208079 => 208080)
--- trunk/Source/WebCore/Modules/modern-media-controls/media/media-controller.js 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/Source/WebCore/Modules/modern-media-controls/media/media-controller.js 2016-10-28 23:35:14 UTC (rev 208080)
@@ -45,6 +45,7 @@
new ScrubbingSupport(this);
new SkipBackSupport(this);
new StartSupport(this);
+ new VolumeSupport(this);
this._updateControlsSize();
media.addEventListener("resize", this);
Copied: trunk/Source/WebCore/Modules/modern-media-controls/media/volume-support.js (from rev 208078, trunk/Source/WebCore/Modules/modern-media-controls/media/media-controller.js) (0 => 208080)
--- trunk/Source/WebCore/Modules/modern-media-controls/media/volume-support.js (rev 0)
+++ trunk/Source/WebCore/Modules/modern-media-controls/media/volume-support.js 2016-10-28 23:35:14 UTC (rev 208080)
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+class VolumeSupport extends MediaControllerSupport
+{
+
+ // Protected
+
+ get control()
+ {
+ return this.mediaController.controls.volumeSlider;
+ }
+
+ get mediaEvents()
+ {
+ return ["volumechange"];
+ }
+
+ controlValueWillStartChanging(control)
+ {
+ this.mediaController.media.muted = false;
+ }
+
+ controlValueDidChange(control)
+ {
+ this.mediaController.media.volume = control.value;
+ }
+
+ syncControl()
+ {
+ const media = this.mediaController.media;
+ this.control.value = media.muted ? 0 : media.volume;
+ }
+
+}
Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (208079 => 208080)
--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2016-10-28 23:28:16 UTC (rev 208079)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2016-10-28 23:35:14 UTC (rev 208080)
@@ -9890,6 +9890,7 @@
7177E2461DB80D2F00919A0B /* media-controller-support.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode._javascript_; path = "media-controller-support.js"; sourceTree = "<group>"; };
7177E2471DB80D2F00919A0B /* mute-support.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode._javascript_; path = "mute-support.js"; sourceTree = "<group>"; };
7177E2481DB80D2F00919A0B /* start-support.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode._javascript_; path = "start-support.js"; sourceTree = "<group>"; };
+ 717F90571DC40ED60006F520 /* volume-support.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode._javascript_; path = "volume-support.js"; sourceTree = "<group>"; };
71A57DEF154BE25C0009D120 /* SVGPathUtilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathUtilities.cpp; sourceTree = "<group>"; };
71A57DF0154BE25C0009D120 /* SVGPathUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathUtilities.h; sourceTree = "<group>"; };
71B1E123164048CC00B1880A /* InspectorLayerTreeAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorLayerTreeAgent.cpp; sourceTree = "<group>"; };
@@ -17835,7 +17836,6 @@
71D02D911DB55C4E00DD5CF5 /* media */ = {
isa = PBXGroup;
children = (
- 7157E3D11DC1EE4B0094550E /* scrubbing-support.js */,
71004B9A1DC1109300A52A38 /* elapsed-time-support.js */,
7177E2461DB80D2F00919A0B /* media-controller-support.js */,
71D02D921DB55C4E00DD5CF5 /* media-controller.js */,
@@ -17842,8 +17842,10 @@
7177E2471DB80D2F00919A0B /* mute-support.js */,
71004B9D1DC1398800A52A38 /* playback-support.js */,
71004B9B1DC1109300A52A38 /* remaining-time-support.js */,
+ 7157E3D11DC1EE4B0094550E /* scrubbing-support.js */,
71D2554F1DB900020004D76B /* skip-back-support.js */,
7177E2481DB80D2F00919A0B /* start-support.js */,
+ 717F90571DC40ED60006F520 /* volume-support.js */,
);
path = media;
sourceTree = "<group>";