Changeset 207905 in webkit


Ignore:
Timestamp:
Oct 26, 2016 12:07:59 PM (7 years ago)
Author:
commit-queue@webkit.org
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 <Antoine Quint> 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:
Location:
trunk
Files:
4 added
18 edited
4 copied

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r207904 r207905  
     12016-10-26  Antoine Quint  <graouts@apple.com>
     2
     3        [Modern Media Controls] Media Controller: elapsed and remaining time support
     4        https://bugs.webkit.org/show_bug.cgi?id=163679
     5        <rdar://problem/28851675>
     6
     7        Reviewed by Dean Jackson.
     8
     9        New tests for the ElapsedTimeSupport and RemainingTimeSupport classes and adding the
     10        new resources to other MediaController tests.
     11
     12        * http/tests/media/modern-media-controls/skip-back-support/skip-back-support-button-click.html:
     13        * media/modern-media-controls/elapsed-time-support/elapsed-time-support-expected.txt: Added.
     14        * media/modern-media-controls/elapsed-time-support/elapsed-time-support.html: Added.
     15        * media/modern-media-controls/media-controller/media-controller-constructor.html:
     16        * media/modern-media-controls/media-controller/media-controller-resize.html:
     17        * media/modern-media-controls/mute-support/mute-support-button-click.html:
     18        * media/modern-media-controls/mute-support/mute-support-media-api.html:
     19        * media/modern-media-controls/mute-support/mute-support-muted.html:
     20        * media/modern-media-controls/remaining-time-support/remaining-time-support-expected.txt: Added.
     21        * media/modern-media-controls/remaining-time-support/remaining-time-support.html: Added.
     22        * media/modern-media-controls/start-support/start-support-audio.html:
     23        * media/modern-media-controls/start-support/start-support-autoplay.html:
     24        * media/modern-media-controls/start-support/start-support-click-to-start.html:
     25        * media/modern-media-controls/start-support/start-support-error.html:
     26        * media/modern-media-controls/start-support/start-support-fullscreen.html:
     27        * media/modern-media-controls/start-support/start-support-manual-play.html:
     28        * media/modern-media-controls/start-support/start-support-no-source.html:
     29
    1302016-10-26  Michael Catanzaro  <mcatanzaro@igalia.com>
    231
  • trunk/LayoutTests/http/tests/media/modern-media-controls/skip-back-support/skip-back-support-button-click.html

    r207902 r207905  
    2727<script src="/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
    2828<script src="/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
     29<script src="/modern-media-controls/media/elapsed-time-support.js" type="text/javascript"></script>
    2930<script src="/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     31<script src="/modern-media-controls/media/remaining-time-support.js" type="text/javascript"></script>
    3032<script src="/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3133<script src="/modern-media-controls/media/start-support.js" type="text/javascript"></script>
  • trunk/LayoutTests/media/modern-media-controls/elapsed-time-support/elapsed-time-support.html

    r207904 r207905  
    77<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/icon-service.js" type="text/javascript"></script>
    88<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/start-button.js" type="text/javascript"></script>
     9<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/status-label.js" type="text/javascript"></script>
    910<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/icon-button.js" type="text/javascript"></script>
    1011<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/play-pause-button.js" type="text/javascript"></script>
     
    2728<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
    2829<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/elapsed-time-support.js" type="text/javascript"></script>
    2931<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     32<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/remaining-time-support.js" type="text/javascript"></script>
    3033<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3134<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
     
    3942window.jsTestIsAsync = true;
    4043
    41 description("Testing the <code>MediaController</code> click-to-start behavior.");
     44description("Testing the <code>ElapsedTimeSupport</code> behavior.");
    4245
    4346iconService.directoryPath = "../../../../Source/WebCore/Modules/modern-media-controls/images";
     
    4750const mediaController = createControls(shadowRoot, media, null);
    4851
    49 media.addEventListener("loadedmetadata", function() {
    50     shouldBeTrue("mediaController.controls.showsStartButton");
    51     debug("");
    52     debug("Dispatching click event to the start button");
    53     mediaController.controls.startButton.element.click();
    54 });
     52media.addEventListener("timeupdate", function() {
     53    debug("timeupdate event was dispatched");
     54    shouldBe("mediaController.controls.timeControl.elapsedTimeLabel.value", "media.currentTime");
    5555
    56 media.addEventListener("play", function() {
    57     debug("Media is playing");
    58     shouldBeFalse("mediaController.controls.showsStartButton");
    5956    debug("");
    6057    shadowRoot.host.remove();
     
    6360});
    6461
     62media.addEventListener("loadedmetadata", event => media.currentTime = 2);
    6563
    6664</script>
  • trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-constructor.html

    r207835 r207905  
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
     29<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/elapsed-time-support.js" type="text/javascript"></script>
    2930<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     31<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/remaining-time-support.js" type="text/javascript"></script>
    3032<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3133<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
  • trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-resize.html

    r207835 r207905  
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
     29<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/elapsed-time-support.js" type="text/javascript"></script>
    2930<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     31<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/remaining-time-support.js" type="text/javascript"></script>
    3032<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3133<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
  • trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-button-click.html

    r207835 r207905  
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
     29<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/elapsed-time-support.js" type="text/javascript"></script>
    2930<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     31<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/remaining-time-support.js" type="text/javascript"></script>
    3032<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3133<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
  • trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-media-api.html

    r207835 r207905  
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
     29<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/elapsed-time-support.js" type="text/javascript"></script>
    2930<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     31<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/remaining-time-support.js" type="text/javascript"></script>
    3032<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3133<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
  • trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-muted.html

    r207835 r207905  
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
     29<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/elapsed-time-support.js" type="text/javascript"></script>
    2930<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     31<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/remaining-time-support.js" type="text/javascript"></script>
    3032<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3133<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
  • trunk/LayoutTests/media/modern-media-controls/remaining-time-support/remaining-time-support.html

    r207904 r207905  
    77<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/icon-service.js" type="text/javascript"></script>
    88<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/start-button.js" type="text/javascript"></script>
     9<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/status-label.js" type="text/javascript"></script>
    910<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/icon-button.js" type="text/javascript"></script>
    1011<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/play-pause-button.js" type="text/javascript"></script>
     
    2728<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
    2829<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/elapsed-time-support.js" type="text/javascript"></script>
    2931<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     32<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/remaining-time-support.js" type="text/javascript"></script>
    3033<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3134<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
     
    3942window.jsTestIsAsync = true;
    4043
    41 description("Testing the <code>MediaController</code> click-to-start behavior.");
     44description("Testing the <code>RemainingTimeSupport</code> behavior.");
    4245
    4346iconService.directoryPath = "../../../../Source/WebCore/Modules/modern-media-controls/images";
     
    4750const mediaController = createControls(shadowRoot, media, null);
    4851
    49 media.addEventListener("loadedmetadata", function() {
    50     shouldBeTrue("mediaController.controls.showsStartButton");
     52media.addEventListener("timeupdate", (event) => {
    5153    debug("");
    52     debug("Dispatching click event to the start button");
    53     mediaController.controls.startButton.element.click();
    54 });
     54    debug("timeupdate event was dispatched");
     55    shouldBe("mediaController.controls.timeControl.remainingTimeLabel.value", "media.currentTime - media.duration");
    5556
    56 media.addEventListener("play", function() {
    57     debug("Media is playing");
    58     shouldBeFalse("mediaController.controls.showsStartButton");
    5957    debug("");
    6058    shadowRoot.host.remove();
     
    6361});
    6462
     63media.addEventListener("durationchange", event => {
     64    debug("durationchange event was dispatched");
     65    shouldBe("mediaController.controls.timeControl.remainingTimeLabel.value", "-media.duration");
     66    media.currentTime = 2;
     67});
    6568
    6669</script>
  • trunk/LayoutTests/media/modern-media-controls/start-support/start-support-audio.html

    r207835 r207905  
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
     29<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/elapsed-time-support.js" type="text/javascript"></script>
    2930<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     31<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/remaining-time-support.js" type="text/javascript"></script>
    3032<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3133<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
  • trunk/LayoutTests/media/modern-media-controls/start-support/start-support-autoplay.html

    r207835 r207905  
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
     29<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/elapsed-time-support.js" type="text/javascript"></script>
    2930<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     31<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/remaining-time-support.js" type="text/javascript"></script>
    3032<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3133<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
  • trunk/LayoutTests/media/modern-media-controls/start-support/start-support-click-to-start.html

    r207835 r207905  
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
     29<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/elapsed-time-support.js" type="text/javascript"></script>
    2930<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     31<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/remaining-time-support.js" type="text/javascript"></script>
    3032<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3133<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
  • trunk/LayoutTests/media/modern-media-controls/start-support/start-support-error.html

    r207835 r207905  
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
     29<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/elapsed-time-support.js" type="text/javascript"></script>
    2930<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     31<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/remaining-time-support.js" type="text/javascript"></script>
    3032<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3133<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
  • trunk/LayoutTests/media/modern-media-controls/start-support/start-support-fullscreen.html

    r207835 r207905  
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
     29<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/elapsed-time-support.js" type="text/javascript"></script>
    2930<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     31<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/remaining-time-support.js" type="text/javascript"></script>
    3032<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3133<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
  • trunk/LayoutTests/media/modern-media-controls/start-support/start-support-manual-play.html

    r207835 r207905  
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
     29<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/elapsed-time-support.js" type="text/javascript"></script>
    2930<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     31<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/remaining-time-support.js" type="text/javascript"></script>
    3032<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3133<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
  • trunk/LayoutTests/media/modern-media-controls/start-support/start-support-no-source.html

    r207835 r207905  
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
     29<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/elapsed-time-support.js" type="text/javascript"></script>
    2930<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     31<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/remaining-time-support.js" type="text/javascript"></script>
    3032<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3133<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
  • trunk/Source/WebCore/ChangeLog

    r207903 r207905  
     12016-10-26  Antoine Quint  <graouts@apple.com>
     2
     3        [Modern Media Controls] Media Controller: elapsed and remaining time support
     4        https://bugs.webkit.org/show_bug.cgi?id=163679
     5        <rdar://problem/28851675>
     6
     7        Reviewed by Dean Jackson.
     8
     9        We introduce the ElapsedTimeSupport and RemainingTimeSupport classes which bring
     10        support for displaying the elapsed and remaining time in the time control.
     11
     12        Tests: media/modern-media-controls/elapsed-time-support/elapsed-time-support.html
     13               media/modern-media-controls/remaining-time-support/remaining-time-support.html
     14
     15        * Modules/modern-media-controls/js-files:
     16        * Modules/modern-media-controls/media/elapsed-time-support.js: Added.
     17        (ElapsedTimeSupport.prototype.get control):
     18        (ElapsedTimeSupport.prototype.get mediaEvents):
     19        (ElapsedTimeSupport.prototype.syncControl):
     20        (ElapsedTimeSupport):
     21        * Modules/modern-media-controls/media/media-controller.js:
     22        (MediaController):
     23        * Modules/modern-media-controls/media/remaining-time-support.js: Added.
     24        (RemainingTimeSupport.prototype.get control):
     25        (RemainingTimeSupport.prototype.get mediaEvents):
     26        (RemainingTimeSupport.prototype.syncControl):
     27        (RemainingTimeSupport):
     28        * WebCore.xcodeproj/project.pbxproj:
     29
    1302016-10-26  Dave Hyatt  <hyatt@apple.com>
    231
  • trunk/Source/WebCore/Modules/modern-media-controls/js-files

    r207835 r207905  
    2929controls/pip-placard.js
    3030media/media-controller-support.js
     31media/elapsed-time-support.js
    3132media/mute-support.js
     33media/remaining-time-support.js
    3234media/skip-back-support.js
    3335media/start-support.js
  • trunk/Source/WebCore/Modules/modern-media-controls/media/elapsed-time-support.js

    r207904 r207905  
    2424 */
    2525
    26 class MediaController
     26class ElapsedTimeSupport extends MediaControllerSupport
    2727{
    28 
    29     constructor(shadowRoot, media, host)
    30     {
    31         this.shadowRoot = shadowRoot;
    32         this.media = media;
    33         this.host = host;
    34 
    35         // FIXME: This should get set dynamically based on the current environment.
    36         this.layoutTraits = LayoutTraits.macOS;
    37 
    38         this.controls = new MacOSInlineMediaControls
    39         shadowRoot.appendChild(this.controls.element);       
    40 
    41         new MuteSupport(this);
    42         new SkipBackSupport(this);
    43         new StartSupport(this);
    44 
    45         this._updateControlsSize();
    46         media.addEventListener("resize", this);
    47     }
    4828
    4929    // Protected
    5030
    51     set pageScaleFactor(pageScaleFactor)
     31    get control()
    5232    {
    53         // FIXME: To be implemented.
     33        return this.mediaController.controls.timeControl.elapsedTimeLabel;
    5434    }
    5535
    56     set usesLTRUserInterfaceLayoutDirection(flag)
     36    get mediaEvents()
    5737    {
    58         // FIXME: To be implemented.
     38        return ["timeupdate"];
    5939    }
    6040
    61     handleEvent(event)
     41    syncControl()
    6242    {
    63         if (event.type === "resize" && event.currentTarget === this.media)
    64             this._updateControlsSize();
    65     }
    66 
    67     // Private
    68 
    69     _updateControlsSize()
    70     {
    71         this.controls.width = this.media.offsetWidth;
    72         this.controls.height = this.media.offsetHeight;
     43        this.control.value = this.mediaController.media.currentTime;
    7344    }
    7445
  • trunk/Source/WebCore/Modules/modern-media-controls/media/media-controller.js

    r207835 r207905  
    3939        shadowRoot.appendChild(this.controls.element);       
    4040
     41        new ElapsedTimeSupport(this);
    4142        new MuteSupport(this);
     43        new RemainingTimeSupport(this);
    4244        new SkipBackSupport(this);
    4345        new StartSupport(this);
  • trunk/Source/WebCore/Modules/modern-media-controls/media/remaining-time-support.js

    r207904 r207905  
    2424 */
    2525
    26 class MediaController
     26class RemainingTimeSupport extends MediaControllerSupport
    2727{
    28 
    29     constructor(shadowRoot, media, host)
    30     {
    31         this.shadowRoot = shadowRoot;
    32         this.media = media;
    33         this.host = host;
    34 
    35         // FIXME: This should get set dynamically based on the current environment.
    36         this.layoutTraits = LayoutTraits.macOS;
    37 
    38         this.controls = new MacOSInlineMediaControls
    39         shadowRoot.appendChild(this.controls.element);       
    40 
    41         new MuteSupport(this);
    42         new SkipBackSupport(this);
    43         new StartSupport(this);
    44 
    45         this._updateControlsSize();
    46         media.addEventListener("resize", this);
    47     }
    4828
    4929    // Protected
    5030
    51     set pageScaleFactor(pageScaleFactor)
     31    get control()
    5232    {
    53         // FIXME: To be implemented.
     33        return this.mediaController.controls.timeControl.remainingTimeLabel;
    5434    }
    5535
    56     set usesLTRUserInterfaceLayoutDirection(flag)
     36    get mediaEvents()
    5737    {
    58         // FIXME: To be implemented.
     38        return ["timeupdate", "durationchange"];
    5939    }
    6040
    61     handleEvent(event)
     41    syncControl()
    6242    {
    63         if (event.type === "resize" && event.currentTarget === this.media)
    64             this._updateControlsSize();
    65     }
     43        const media = this.mediaController.media;
     44        if (isNaN(media.duration))
     45            return;
    6646
    67     // Private
    68 
    69     _updateControlsSize()
    70     {
    71         this.controls.width = this.media.offsetWidth;
    72         this.controls.height = this.media.offsetHeight;
     47        this.control.value = media.currentTime - media.duration;
    7348    }
    7449
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r207903 r207905  
    98069806                6F995A301A70833700A735F4 /* JSWebGLVertexArrayObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLVertexArrayObject.h; sourceTree = "<group>"; };
    98079807                6FAD4A561A9D0FAE009F7D3C /* OpenGLESSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OpenGLESSPI.h; sourceTree = "<group>"; };
     9808                71004B9A1DC1109300A52A38 /* elapsed-time-support.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "elapsed-time-support.js"; sourceTree = "<group>"; };
     9809                71004B9B1DC1109300A52A38 /* remaining-time-support.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "remaining-time-support.js"; sourceTree = "<group>"; };
    98089810                7117445614BC34E200EE5FC8 /* SVGTextMetricsBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTextMetricsBuilder.cpp; sourceTree = "<group>"; };
    98099811                7117445714BC34E200EE5FC8 /* SVGTextMetricsBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGTextMetricsBuilder.h; sourceTree = "<group>"; };
     
    1777217774                        isa = PBXGroup;
    1777317775                        children = (
     17776                                71004B9A1DC1109300A52A38 /* elapsed-time-support.js */,
    1777417777                                7177E2461DB80D2F00919A0B /* media-controller-support.js */,
    1777517778                                71D02D921DB55C4E00DD5CF5 /* media-controller.js */,
    1777617779                                7177E2471DB80D2F00919A0B /* mute-support.js */,
     17780                                71004B9B1DC1109300A52A38 /* remaining-time-support.js */,
    1777717781                                71D2554F1DB900020004D76B /* skip-back-support.js */,
    1777817782                                7177E2481DB80D2F00919A0B /* start-support.js */,
Note: See TracChangeset for help on using the changeset viewer.