Changeset 207835 in webkit


Ignore:
Timestamp:
Oct 25, 2016 12:22:54 PM (8 years ago)
Author:
commit-queue@webkit.org
Message:

[Modern Media Controls] Media Controller: skip back support
https://bugs.webkit.org/show_bug.cgi?id=163725
<rdar://problem/27989480>

Patch by Antoine Quint <Antoine Quint> on 2016-10-25
Reviewed by Dean Jackson.

Source/WebCore:

We introduce the SkipBackSupport class which brings support for skipping back
30 seconds into the media by clicking on the skip back button in the media controls.

Test: http/tests/media/modern-media-controls/skip-back-support/skip-back-support-button-click.html

  • Modules/modern-media-controls/js-files:
  • Modules/modern-media-controls/media/media-controller.js:

(MediaController):

  • Modules/modern-media-controls/media/skip-back-support.js: Copied from Source/WebCore/Modules/modern-media-controls/media/media-controller.js.

(SkipBackSupport.prototype.get control):
(SkipBackSupport.prototype.buttonWasClicked):
(SkipBackSupport):

  • WebCore.xcodeproj/project.pbxproj:

Tools:

  • Scripts/webkitpy/layout_tests/servers/aliases.json: Adding a new alias such that we may

access the modern-media-controls source files through the web server.

LayoutTests:

Added a new test for the SkipBackButton class to ensure that we correctly seek back by 30 seconds when pressed.
Updated the other tests to reflect the addition of the SkipBackSupport class.

  • http/tests/media/modern-media-controls/skip-back-support/skip-back-support-button-click-expected.txt: Added.
  • http/tests/media/modern-media-controls/skip-back-support/skip-back-support-button-click.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/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
19 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r207834 r207835  
     12016-10-25  Antoine Quint  <graouts@apple.com>
     2
     3        [Modern Media Controls] Media Controller: skip back support
     4        https://bugs.webkit.org/show_bug.cgi?id=163725
     5        <rdar://problem/27989480>
     6
     7        Reviewed by Dean Jackson.
     8
     9        Added a new test for the SkipBackButton class to ensure that we correctly seek back by 30 seconds when pressed.
     10        Updated the other tests to reflect the addition of the SkipBackSupport class.
     11
     12        * http/tests/media/modern-media-controls/skip-back-support/skip-back-support-button-click-expected.txt: Added.
     13        * http/tests/media/modern-media-controls/skip-back-support/skip-back-support-button-click.html: Added.
     14        * media/modern-media-controls/media-controller/media-controller-constructor.html:
     15        * media/modern-media-controls/media-controller/media-controller-resize.html:
     16        * media/modern-media-controls/mute-support/mute-support-button-click.html:
     17        * media/modern-media-controls/mute-support/mute-support-media-api.html:
     18        * media/modern-media-controls/mute-support/mute-support-muted.html:
     19        * media/modern-media-controls/start-support/start-support-audio.html:
     20        * media/modern-media-controls/start-support/start-support-autoplay.html:
     21        * media/modern-media-controls/start-support/start-support-click-to-start.html:
     22        * media/modern-media-controls/start-support/start-support-error.html:
     23        * media/modern-media-controls/start-support/start-support-fullscreen.html:
     24        * media/modern-media-controls/start-support/start-support-manual-play.html:
     25        * media/modern-media-controls/start-support/start-support-no-source.html:
     26
    1272016-10-25  Commit Queue  <commit-queue@webkit.org>
    228
  • trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-constructor.html

    r207587 r207835  
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
    2929<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3031<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
  • trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-resize.html

    r207587 r207835  
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
    2929<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3031<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
  • trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-button-click.html

    r207587 r207835  
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
    2929<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3031<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
  • trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-media-api.html

    r207587 r207835  
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
    2929<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3031<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
  • trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-muted.html

    r207587 r207835  
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
    2929<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3031<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
  • trunk/LayoutTests/media/modern-media-controls/start-support/start-support-audio.html

    r207587 r207835  
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
    2929<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3031<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
  • trunk/LayoutTests/media/modern-media-controls/start-support/start-support-autoplay.html

    r207587 r207835  
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
    2929<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3031<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
  • trunk/LayoutTests/media/modern-media-controls/start-support/start-support-click-to-start.html

    r207587 r207835  
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
    2929<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3031<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
  • trunk/LayoutTests/media/modern-media-controls/start-support/start-support-error.html

    r207587 r207835  
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
    2929<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3031<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
  • trunk/LayoutTests/media/modern-media-controls/start-support/start-support-fullscreen.html

    r207587 r207835  
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
    2929<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3031<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
  • trunk/LayoutTests/media/modern-media-controls/start-support/start-support-manual-play.html

    r207587 r207835  
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
    2929<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3031<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
  • trunk/LayoutTests/media/modern-media-controls/start-support/start-support-no-source.html

    r207587 r207835  
    2828<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller-support.js" type="text/javascript"></script>
    2929<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js" type="text/javascript"></script>
    3031<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
  • trunk/Source/WebCore/ChangeLog

    r207834 r207835  
     12016-10-25  Antoine Quint  <graouts@apple.com>
     2
     3        [Modern Media Controls] Media Controller: skip back support
     4        https://bugs.webkit.org/show_bug.cgi?id=163725
     5        <rdar://problem/27989480>
     6
     7        Reviewed by Dean Jackson.
     8
     9        We introduce the SkipBackSupport class which brings support for skipping back
     10        30 seconds into the media by clicking on the skip back button in the media controls.
     11
     12        Test: http/tests/media/modern-media-controls/skip-back-support/skip-back-support-button-click.html
     13
     14        * Modules/modern-media-controls/js-files:
     15        * Modules/modern-media-controls/media/media-controller.js:
     16        (MediaController):
     17        * Modules/modern-media-controls/media/skip-back-support.js: Copied from Source/WebCore/Modules/modern-media-controls/media/media-controller.js.
     18        (SkipBackSupport.prototype.get control):
     19        (SkipBackSupport.prototype.buttonWasClicked):
     20        (SkipBackSupport):
     21        * WebCore.xcodeproj/project.pbxproj:
     22
    1232016-10-25  Commit Queue  <commit-queue@webkit.org>
    224
  • trunk/Source/WebCore/Modules/modern-media-controls/js-files

    r207758 r207835  
    2929controls/pip-placard.js
    3030media/media-controller-support.js
     31media/mute-support.js
     32media/skip-back-support.js
    3133media/start-support.js
    32 media/mute-support.js
    3334media/media-controller.js
    3435main.js
  • trunk/Source/WebCore/Modules/modern-media-controls/media/media-controller.js

    r207587 r207835  
    3939        shadowRoot.appendChild(this.controls.element);       
    4040
     41        new MuteSupport(this);
     42        new SkipBackSupport(this);
    4143        new StartSupport(this);
    42         new MuteSupport(this);
    4344
    4445        this._updateControlsSize();
  • trunk/Source/WebCore/Modules/modern-media-controls/media/skip-back-support.js

    r207834 r207835  
    2424 */
    2525
    26 class MediaController
     26const SkipBackSeconds = 30;
     27
     28class SkipBackSupport extends MediaControllerSupport
    2729{
    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 StartSupport(this);
    42         new MuteSupport(this);
    43 
    44         this._updateControlsSize();
    45         media.addEventListener("resize", this);
    46     }
    4730
    4831    // Protected
    4932
    50     set pageScaleFactor(pageScaleFactor)
     33    get control()
    5134    {
    52         // FIXME: To be implemented.
     35        return this.mediaController.controls.skipBackButton;
    5336    }
    5437
    55     set usesLTRUserInterfaceLayoutDirection(flag)
     38    buttonWasClicked(control)
    5639    {
    57         // FIXME: To be implemented.
    58     }
    59 
    60     handleEvent(event)
    61     {
    62         if (event.type === "resize" && event.currentTarget === this.media)
    63             this._updateControlsSize();
    64     }
    65 
    66     // Private
    67 
    68     _updateControlsSize()
    69     {
    70         this.controls.width = this.media.offsetWidth;
    71         this.controls.height = this.media.offsetHeight;
     40        const media = this.mediaController.media;
     41        media.currentTime = Math.max(media.currentTime - SkipBackSeconds, media.seekable.start(0));
    7242    }
    7343
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r207809 r207835  
    98679867                71D02D901DB55C4E00DD5CF5 /* main.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = main.js; sourceTree = "<group>"; };
    98689868                71D02D921DB55C4E00DD5CF5 /* media-controller.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "media-controller.js"; sourceTree = "<group>"; };
     9869                71D2554F1DB900020004D76B /* skip-back-support.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "skip-back-support.js"; sourceTree = "<group>"; };
    98699870                71D6AA711DA4EAF700B23969 /* airplay-placard@1x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "airplay-placard@1x.png"; sourceTree = "<group>"; };
    98709871                71D6AA721DA4EAF700B23969 /* airplay-placard@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "airplay-placard@2x.png"; sourceTree = "<group>"; };
     
    99419942                71E623CE151F72A60036E2F4 /* SVGAnimatedIntegerOptionalInteger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedIntegerOptionalInteger.cpp; sourceTree = "<group>"; };
    99429943                71E623CF151F72A60036E2F4 /* SVGAnimatedIntegerOptionalInteger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedIntegerOptionalInteger.h; sourceTree = "<group>"; };
     9944                71E6B2CF1DBE5D9A00C0A13E /* js-files */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "js-files"; sourceTree = "<group>"; };
    99439945                71FB967A1383D64600AC8A4C /* SVGAnimatedEnumerationPropertyTearOff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedEnumerationPropertyTearOff.h; sourceTree = "<group>"; };
    99449946                724ED3291A3A7E5400F5F13C /* EXTBlendMinMax.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EXTBlendMinMax.cpp; sourceTree = "<group>"; };
     
    1777017772                                71D02D921DB55C4E00DD5CF5 /* media-controller.js */,
    1777117773                                7177E2471DB80D2F00919A0B /* mute-support.js */,
     17774                                71D2554F1DB900020004D76B /* skip-back-support.js */,
    1777217775                                7177E2481DB80D2F00919A0B /* start-support.js */,
    1777317776                        );
     
    1777817781                        isa = PBXGroup;
    1777917782                        children = (
     17783                                71E6B2CF1DBE5D9A00C0A13E /* js-files */,
    1778017784                                71D02D901DB55C4E00DD5CF5 /* main.js */,
    1778117785                                716FA0D71DB26591007323CC /* controls */,
  • trunk/Tools/ChangeLog

    r207820 r207835  
     12016-10-25  Antoine Quint  <graouts@apple.com>
     2
     3        [Modern Media Controls] Media Controller: skip back support
     4        https://bugs.webkit.org/show_bug.cgi?id=163725
     5        <rdar://problem/27989480>
     6
     7        Reviewed by Dean Jackson.
     8
     9        * Scripts/webkitpy/layout_tests/servers/aliases.json: Adding a new alias such that we may
     10        access the modern-media-controls source files through the web server.
     11
    1122016-10-19  Jer Noble  <jer.noble@apple.com>
    213
  • trunk/Tools/Scripts/webkitpy/layout_tests/servers/aliases.json

    r203400 r207835  
    22    ["/js-test-resources", "resources"],
    33    ["/media-resources", "media"],
     4    ["/modern-media-controls", "../Source/WebCore/Modules/modern-media-controls"],
    45    ["/resources/testharness.css", "resources/testharness.css"],
    56    ["/resources/testharness.js", "resources/testharness.js"],
Note: See TracChangeset for help on using the changeset viewer.