Title: [208080] trunk
Revision
208080
Author
commit-qu...@webkit.org
Date
2016-10-28 16:35:14 -0700 (Fri, 28 Oct 2016)

Log Message

[Modern Media Controls] Media Controller: volume control support
https://bugs.webkit.org/show_bug.cgi?id=163727

Patch by Antoine Quint <grao...@apple.com> on 2016-10-28
Reviewed by Dean Jackson.

Source/WebCore:

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:

LayoutTests:

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:

Modified Paths

Added Paths

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>";
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to