Title: [207905] trunk
Revision
207905
Author
[email protected]
Date
2016-10-26 12:07:59 -0700 (Wed, 26 Oct 2016)

Log Message

[Modern Media Controls] Media Controller: elapsed and remaining time support
https://bugs.webkit.org/show_bug.cgi?id=163679
<rdar://problem/28851675>

Patch by Antoine Quint <[email protected]> on 2016-10-26
Reviewed by Dean Jackson.

Source/WebCore:

We introduce the ElapsedTimeSupport and RemainingTimeSupport classes which bring
support for displaying the elapsed and remaining time in the time control.

Tests: media/modern-media-controls/elapsed-time-support/elapsed-time-support.html
       media/modern-media-controls/remaining-time-support/remaining-time-support.html

* Modules/modern-media-controls/js-files:
* Modules/modern-media-controls/media/elapsed-time-support.js: Added.
(ElapsedTimeSupport.prototype.get control):
(ElapsedTimeSupport.prototype.get mediaEvents):
(ElapsedTimeSupport.prototype.syncControl):
(ElapsedTimeSupport):
* Modules/modern-media-controls/media/media-controller.js:
(MediaController):
* Modules/modern-media-controls/media/remaining-time-support.js: Added.
(RemainingTimeSupport.prototype.get control):
(RemainingTimeSupport.prototype.get mediaEvents):
(RemainingTimeSupport.prototype.syncControl):
(RemainingTimeSupport):
* WebCore.xcodeproj/project.pbxproj:

LayoutTests:

New tests for the ElapsedTimeSupport and RemainingTimeSupport classes and adding the
new resources 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-expected.txt: Added.
* media/modern-media-controls/elapsed-time-support/elapsed-time-support.html: Added.
* 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/remaining-time-support/remaining-time-support-expected.txt: Added.
* media/modern-media-controls/remaining-time-support/remaining-time-support.html: Added.
* 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:

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (207904 => 207905)


--- trunk/LayoutTests/ChangeLog	2016-10-26 17:45:31 UTC (rev 207904)
+++ trunk/LayoutTests/ChangeLog	2016-10-26 19:07:59 UTC (rev 207905)
@@ -1,3 +1,32 @@
+2016-10-26  Antoine Quint  <[email protected]>
+
+        [Modern Media Controls] Media Controller: elapsed and remaining time support
+        https://bugs.webkit.org/show_bug.cgi?id=163679
+        <rdar://problem/28851675>
+
+        Reviewed by Dean Jackson.
+
+        New tests for the ElapsedTimeSupport and RemainingTimeSupport classes and adding the
+        new resources 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-expected.txt: Added.
+        * media/modern-media-controls/elapsed-time-support/elapsed-time-support.html: Added.
+        * 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/remaining-time-support/remaining-time-support-expected.txt: Added.
+        * media/modern-media-controls/remaining-time-support/remaining-time-support.html: Added.
+        * 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:
+
 2016-10-26  Michael Catanzaro  <[email protected]>
 
         Unreviewed GTK test gardening

Modified: trunk/LayoutTests/http/tests/media/modern-media-controls/skip-back-support/skip-back-support-button-click.html (207904 => 207905)


--- trunk/LayoutTests/http/tests/media/modern-media-controls/skip-back-support/skip-back-support-button-click.html	2016-10-26 17:45:31 UTC (rev 207904)
+++ trunk/LayoutTests/http/tests/media/modern-media-controls/skip-back-support/skip-back-support-button-click.html	2016-10-26 19:07:59 UTC (rev 207905)
@@ -26,7 +26,9 @@
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>

Added: trunk/LayoutTests/media/modern-media-controls/elapsed-time-support/elapsed-time-support-expected.txt (0 => 207905)


--- trunk/LayoutTests/media/modern-media-controls/elapsed-time-support/elapsed-time-support-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/media/modern-media-controls/elapsed-time-support/elapsed-time-support-expected.txt	2016-10-26 19:07:59 UTC (rev 207905)
@@ -0,0 +1,12 @@
+Testing the ElapsedTimeSupport behavior.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+timeupdate event was dispatched
+PASS mediaController.controls.timeControl.elapsedTimeLabel.value is media.currentTime
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Copied: trunk/LayoutTests/media/modern-media-controls/elapsed-time-support/elapsed-time-support.html (from rev 207904, trunk/LayoutTests/media/modern-media-controls/start-support/start-support-click-to-start.html) (0 => 207905)


--- trunk/LayoutTests/media/modern-media-controls/elapsed-time-support/elapsed-time-support.html	                        (rev 0)
+++ trunk/LayoutTests/media/modern-media-controls/elapsed-time-support/elapsed-time-support.html	2016-10-26 19:07:59 UTC (rev 207905)
@@ -0,0 +1,66 @@
+<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>
+<body>
+<video src="" style="width: 320px; height: 240px;"></video>
+<div id="shadow"></div>
+<script type="text/_javascript_">
+
+window.jsTestIsAsync = true;
+
+description("Testing the <code>ElapsedTimeSupport</code> behavior.");
+
+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);
+
+media.addEventListener("timeupdate", function() {
+    debug("timeupdate event was dispatched");
+    shouldBe("mediaController.controls.timeControl.elapsedTimeLabel.value", "media.currentTime");
+
+    debug("");
+    shadowRoot.host.remove();
+    media.remove();
+    finishJSTest();
+});
+
+media.addEventListener("loadedmetadata", event => media.currentTime = 2);
+
+</script>
+<script src=""
+</body>

Modified: trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-constructor.html (207904 => 207905)


--- trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-constructor.html	2016-10-26 17:45:31 UTC (rev 207904)
+++ trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-constructor.html	2016-10-26 19:07:59 UTC (rev 207905)
@@ -26,7 +26,9 @@
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>

Modified: trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-resize.html (207904 => 207905)


--- trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-resize.html	2016-10-26 17:45:31 UTC (rev 207904)
+++ trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-resize.html	2016-10-26 19:07:59 UTC (rev 207905)
@@ -26,7 +26,9 @@
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>

Modified: trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-button-click.html (207904 => 207905)


--- trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-button-click.html	2016-10-26 17:45:31 UTC (rev 207904)
+++ trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-button-click.html	2016-10-26 19:07:59 UTC (rev 207905)
@@ -26,7 +26,9 @@
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>

Modified: trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-media-api.html (207904 => 207905)


--- trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-media-api.html	2016-10-26 17:45:31 UTC (rev 207904)
+++ trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-media-api.html	2016-10-26 19:07:59 UTC (rev 207905)
@@ -26,7 +26,9 @@
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>

Modified: trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-muted.html (207904 => 207905)


--- trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-muted.html	2016-10-26 17:45:31 UTC (rev 207904)
+++ trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-muted.html	2016-10-26 19:07:59 UTC (rev 207905)
@@ -26,7 +26,9 @@
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>

Added: trunk/LayoutTests/media/modern-media-controls/remaining-time-support/remaining-time-support-expected.txt (0 => 207905)


--- trunk/LayoutTests/media/modern-media-controls/remaining-time-support/remaining-time-support-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/media/modern-media-controls/remaining-time-support/remaining-time-support-expected.txt	2016-10-26 19:07:59 UTC (rev 207905)
@@ -0,0 +1,15 @@
+Testing the RemainingTimeSupport behavior.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+durationchange event was dispatched
+PASS mediaController.controls.timeControl.remainingTimeLabel.value is -media.duration
+
+timeupdate event was dispatched
+PASS mediaController.controls.timeControl.remainingTimeLabel.value is media.currentTime - media.duration
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Copied: trunk/LayoutTests/media/modern-media-controls/remaining-time-support/remaining-time-support.html (from rev 207904, trunk/LayoutTests/media/modern-media-controls/start-support/start-support-click-to-start.html) (0 => 207905)


--- trunk/LayoutTests/media/modern-media-controls/remaining-time-support/remaining-time-support.html	                        (rev 0)
+++ trunk/LayoutTests/media/modern-media-controls/remaining-time-support/remaining-time-support.html	2016-10-26 19:07:59 UTC (rev 207905)
@@ -0,0 +1,71 @@
+<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>
+<body>
+<video src="" style="width: 320px; height: 240px;"></video>
+<div id="shadow"></div>
+<script type="text/_javascript_">
+
+window.jsTestIsAsync = true;
+
+description("Testing the <code>RemainingTimeSupport</code> behavior.");
+
+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);
+
+media.addEventListener("timeupdate", (event) => {
+    debug("");
+    debug("timeupdate event was dispatched");
+    shouldBe("mediaController.controls.timeControl.remainingTimeLabel.value", "media.currentTime - media.duration");
+
+    debug("");
+    shadowRoot.host.remove();
+    media.remove();
+    finishJSTest();
+});
+
+media.addEventListener("durationchange", event => {
+    debug("durationchange event was dispatched");
+    shouldBe("mediaController.controls.timeControl.remainingTimeLabel.value", "-media.duration");
+    media.currentTime = 2;
+});
+
+</script>
+<script src=""
+</body>

Modified: trunk/LayoutTests/media/modern-media-controls/start-support/start-support-audio.html (207904 => 207905)


--- trunk/LayoutTests/media/modern-media-controls/start-support/start-support-audio.html	2016-10-26 17:45:31 UTC (rev 207904)
+++ trunk/LayoutTests/media/modern-media-controls/start-support/start-support-audio.html	2016-10-26 19:07:59 UTC (rev 207905)
@@ -26,7 +26,9 @@
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>

Modified: trunk/LayoutTests/media/modern-media-controls/start-support/start-support-autoplay.html (207904 => 207905)


--- trunk/LayoutTests/media/modern-media-controls/start-support/start-support-autoplay.html	2016-10-26 17:45:31 UTC (rev 207904)
+++ trunk/LayoutTests/media/modern-media-controls/start-support/start-support-autoplay.html	2016-10-26 19:07:59 UTC (rev 207905)
@@ -26,7 +26,9 @@
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>

Modified: trunk/LayoutTests/media/modern-media-controls/start-support/start-support-click-to-start.html (207904 => 207905)


--- trunk/LayoutTests/media/modern-media-controls/start-support/start-support-click-to-start.html	2016-10-26 17:45:31 UTC (rev 207904)
+++ trunk/LayoutTests/media/modern-media-controls/start-support/start-support-click-to-start.html	2016-10-26 19:07:59 UTC (rev 207905)
@@ -26,7 +26,9 @@
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>

Modified: trunk/LayoutTests/media/modern-media-controls/start-support/start-support-error.html (207904 => 207905)


--- trunk/LayoutTests/media/modern-media-controls/start-support/start-support-error.html	2016-10-26 17:45:31 UTC (rev 207904)
+++ trunk/LayoutTests/media/modern-media-controls/start-support/start-support-error.html	2016-10-26 19:07:59 UTC (rev 207905)
@@ -26,7 +26,9 @@
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>

Modified: trunk/LayoutTests/media/modern-media-controls/start-support/start-support-fullscreen.html (207904 => 207905)


--- trunk/LayoutTests/media/modern-media-controls/start-support/start-support-fullscreen.html	2016-10-26 17:45:31 UTC (rev 207904)
+++ trunk/LayoutTests/media/modern-media-controls/start-support/start-support-fullscreen.html	2016-10-26 19:07:59 UTC (rev 207905)
@@ -26,7 +26,9 @@
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>

Modified: trunk/LayoutTests/media/modern-media-controls/start-support/start-support-manual-play.html (207904 => 207905)


--- trunk/LayoutTests/media/modern-media-controls/start-support/start-support-manual-play.html	2016-10-26 17:45:31 UTC (rev 207904)
+++ trunk/LayoutTests/media/modern-media-controls/start-support/start-support-manual-play.html	2016-10-26 19:07:59 UTC (rev 207905)
@@ -26,7 +26,9 @@
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>

Modified: trunk/LayoutTests/media/modern-media-controls/start-support/start-support-no-source.html (207904 => 207905)


--- trunk/LayoutTests/media/modern-media-controls/start-support/start-support-no-source.html	2016-10-26 17:45:31 UTC (rev 207904)
+++ trunk/LayoutTests/media/modern-media-controls/start-support/start-support-no-source.html	2016-10-26 19:07:59 UTC (rev 207905)
@@ -26,7 +26,9 @@
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>
 <script src="" type="text/_javascript_"></script>

Modified: trunk/Source/WebCore/ChangeLog (207904 => 207905)


--- trunk/Source/WebCore/ChangeLog	2016-10-26 17:45:31 UTC (rev 207904)
+++ trunk/Source/WebCore/ChangeLog	2016-10-26 19:07:59 UTC (rev 207905)
@@ -1,3 +1,32 @@
+2016-10-26  Antoine Quint  <[email protected]>
+
+        [Modern Media Controls] Media Controller: elapsed and remaining time support
+        https://bugs.webkit.org/show_bug.cgi?id=163679
+        <rdar://problem/28851675>
+
+        Reviewed by Dean Jackson.
+
+        We introduce the ElapsedTimeSupport and RemainingTimeSupport classes which bring
+        support for displaying the elapsed and remaining time in the time control.
+
+        Tests: media/modern-media-controls/elapsed-time-support/elapsed-time-support.html
+               media/modern-media-controls/remaining-time-support/remaining-time-support.html
+
+        * Modules/modern-media-controls/js-files:
+        * Modules/modern-media-controls/media/elapsed-time-support.js: Added.
+        (ElapsedTimeSupport.prototype.get control):
+        (ElapsedTimeSupport.prototype.get mediaEvents):
+        (ElapsedTimeSupport.prototype.syncControl):
+        (ElapsedTimeSupport):
+        * Modules/modern-media-controls/media/media-controller.js:
+        (MediaController):
+        * Modules/modern-media-controls/media/remaining-time-support.js: Added.
+        (RemainingTimeSupport.prototype.get control):
+        (RemainingTimeSupport.prototype.get mediaEvents):
+        (RemainingTimeSupport.prototype.syncControl):
+        (RemainingTimeSupport):
+        * WebCore.xcodeproj/project.pbxproj:
+
 2016-10-26  Dave Hyatt  <[email protected]>
 
         [CSS Parser] Unify CSSCustomPropertyValue and CSSCustomPropertyDeclaration

Modified: trunk/Source/WebCore/Modules/modern-media-controls/js-files (207904 => 207905)


--- trunk/Source/WebCore/Modules/modern-media-controls/js-files	2016-10-26 17:45:31 UTC (rev 207904)
+++ trunk/Source/WebCore/Modules/modern-media-controls/js-files	2016-10-26 19:07:59 UTC (rev 207905)
@@ -28,7 +28,9 @@
 controls/airplay-placard.js
 controls/pip-placard.js
 media/media-controller-support.js
+media/elapsed-time-support.js
 media/mute-support.js
+media/remaining-time-support.js
 media/skip-back-support.js
 media/start-support.js
 media/media-controller.js

Copied: trunk/Source/WebCore/Modules/modern-media-controls/media/elapsed-time-support.js (from rev 207904, trunk/Source/WebCore/Modules/modern-media-controls/media/media-controller.js) (0 => 207905)


--- trunk/Source/WebCore/Modules/modern-media-controls/media/elapsed-time-support.js	                        (rev 0)
+++ trunk/Source/WebCore/Modules/modern-media-controls/media/elapsed-time-support.js	2016-10-26 19:07:59 UTC (rev 207905)
@@ -0,0 +1,46 @@
+/*
+ * 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 ElapsedTimeSupport extends MediaControllerSupport
+{
+
+    // Protected
+
+    get control()
+    {
+        return this.mediaController.controls.timeControl.elapsedTimeLabel;
+    }
+
+    get mediaEvents()
+    {
+        return ["timeupdate"];
+    }
+
+    syncControl()
+    {
+        this.control.value = this.mediaController.media.currentTime;
+    }
+
+}

Modified: trunk/Source/WebCore/Modules/modern-media-controls/media/media-controller.js (207904 => 207905)


--- trunk/Source/WebCore/Modules/modern-media-controls/media/media-controller.js	2016-10-26 17:45:31 UTC (rev 207904)
+++ trunk/Source/WebCore/Modules/modern-media-controls/media/media-controller.js	2016-10-26 19:07:59 UTC (rev 207905)
@@ -38,7 +38,9 @@
         this.controls = new MacOSInlineMediaControls
         shadowRoot.appendChild(this.controls.element);        
 
+        new ElapsedTimeSupport(this);
         new MuteSupport(this);
+        new RemainingTimeSupport(this);
         new SkipBackSupport(this);
         new StartSupport(this);
 

Copied: trunk/Source/WebCore/Modules/modern-media-controls/media/remaining-time-support.js (from rev 207904, trunk/Source/WebCore/Modules/modern-media-controls/media/media-controller.js) (0 => 207905)


--- trunk/Source/WebCore/Modules/modern-media-controls/media/remaining-time-support.js	                        (rev 0)
+++ trunk/Source/WebCore/Modules/modern-media-controls/media/remaining-time-support.js	2016-10-26 19:07:59 UTC (rev 207905)
@@ -0,0 +1,50 @@
+/*
+ * 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 RemainingTimeSupport extends MediaControllerSupport
+{
+
+    // Protected
+
+    get control()
+    {
+        return this.mediaController.controls.timeControl.remainingTimeLabel;
+    }
+
+    get mediaEvents()
+    {
+        return ["timeupdate", "durationchange"];
+    }
+
+    syncControl()
+    {
+        const media = this.mediaController.media;
+        if (isNaN(media.duration))
+            return;
+
+        this.control.value = media.currentTime - media.duration;
+    }
+
+}

Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (207904 => 207905)


--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2016-10-26 17:45:31 UTC (rev 207904)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2016-10-26 19:07:59 UTC (rev 207905)
@@ -9805,6 +9805,8 @@
 		6F995A2F1A70833700A735F4 /* JSWebGLVertexArrayObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLVertexArrayObject.cpp; sourceTree = "<group>"; };
 		6F995A301A70833700A735F4 /* JSWebGLVertexArrayObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLVertexArrayObject.h; sourceTree = "<group>"; };
 		6FAD4A561A9D0FAE009F7D3C /* OpenGLESSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OpenGLESSPI.h; sourceTree = "<group>"; };
+		71004B9A1DC1109300A52A38 /* elapsed-time-support.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode._javascript_; path = "elapsed-time-support.js"; sourceTree = "<group>"; };
+		71004B9B1DC1109300A52A38 /* remaining-time-support.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode._javascript_; path = "remaining-time-support.js"; sourceTree = "<group>"; };
 		7117445614BC34E200EE5FC8 /* SVGTextMetricsBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTextMetricsBuilder.cpp; sourceTree = "<group>"; };
 		7117445714BC34E200EE5FC8 /* SVGTextMetricsBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGTextMetricsBuilder.h; sourceTree = "<group>"; };
 		7118FED215685CC60030B79A /* JSSVGViewSpec.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGViewSpec.cpp; sourceTree = "<group>"; };
@@ -17771,9 +17773,11 @@
 		71D02D911DB55C4E00DD5CF5 /* media */ = {
 			isa = PBXGroup;
 			children = (
+				71004B9A1DC1109300A52A38 /* elapsed-time-support.js */,
 				7177E2461DB80D2F00919A0B /* media-controller-support.js */,
 				71D02D921DB55C4E00DD5CF5 /* media-controller.js */,
 				7177E2471DB80D2F00919A0B /* mute-support.js */,
+				71004B9B1DC1109300A52A38 /* remaining-time-support.js */,
 				71D2554F1DB900020004D76B /* skip-back-support.js */,
 				7177E2481DB80D2F00919A0B /* start-support.js */,
 			);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to