Changeset 207587 in webkit


Ignore:
Timestamp:
Oct 19, 2016 11:43:59 PM (8 years ago)
Author:
commit-queue@webkit.org
Message:

[Modern Media Controls] Media Controller: mute support
https://bugs.webkit.org/show_bug.cgi?id=163677
<rdar://problem/28851582>

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

Source/WebCore:

We introduce the MuteSupport class which brings support for muting the media
by clicking on the mute button in the media controls and correctly reflecting
the media's muted state should the media be muted via the media API.

Tests: 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

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

(MediaController):

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

(MuteSupport.prototype.get control):
(MuteSupport.prototype.get mediaEvents):
(MuteSupport.prototype.buttonWasClicked):
(MuteSupport.prototype.syncControl):
(MuteSupport):

  • WebCore.xcodeproj/project.pbxproj:
  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::mediaControlsScript):

LayoutTests:

New tests for the MuteSupport class and adding the new resource to other MediaController tests.

  • 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-expected.txt: Added.
  • media/modern-media-controls/mute-support/mute-support-button-click.html: Added.
  • media/modern-media-controls/mute-support/mute-support-media-api-expected.txt: Added.
  • media/modern-media-controls/mute-support/mute-support-media-api.html: Added.
  • media/modern-media-controls/mute-support/mute-support-muted-expected.txt: Added.
  • media/modern-media-controls/mute-support/mute-support-muted.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
14 edited
4 copied

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r207584 r207587  
     12016-10-19  Antoine Quint  <graouts@apple.com>
     2
     3        [Modern Media Controls] Media Controller: mute support
     4        https://bugs.webkit.org/show_bug.cgi?id=163677
     5        <rdar://problem/28851582>
     6
     7        Reviewed by Dean Jackson.
     8
     9        New tests for the MuteSupport class and adding the new resource to other MediaController tests.
     10
     11        * media/modern-media-controls/media-controller/media-controller-constructor.html:
     12        * media/modern-media-controls/media-controller/media-controller-resize.html:
     13        * media/modern-media-controls/mute-support/mute-support-button-click-expected.txt: Added.
     14        * media/modern-media-controls/mute-support/mute-support-button-click.html: Added.
     15        * media/modern-media-controls/mute-support/mute-support-media-api-expected.txt: Added.
     16        * media/modern-media-controls/mute-support/mute-support-media-api.html: Added.
     17        * media/modern-media-controls/mute-support/mute-support-muted-expected.txt: Added.
     18        * media/modern-media-controls/mute-support/mute-support-muted.html: Added.
     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-19  Jer Noble  <jer.noble@apple.com>
    228
  • trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-constructor.html

    r207554 r207587  
    2626<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-media-controls.js" type="text/javascript"></script>
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
     28<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/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    2831<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
    29 <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/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/main.js" type="text/javascript"></script>
    3233<body>
  • trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-resize.html

    r207554 r207587  
    2626<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-media-controls.js" type="text/javascript"></script>
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
     28<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/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    2831<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
    29 <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/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/main.js" type="text/javascript"></script>
    3233<body>
  • trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-button-click.html

    r207586 r207587  
    2626<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-media-controls.js" type="text/javascript"></script>
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
     28<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/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    2831<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
    29 <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/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/main.js" type="text/javascript"></script>
    3233<body>
     
    3738window.jsTestIsAsync = true;
    3839
    39 description("Testing the <code>StartSupport</code> behavior with manual play.");
     40description("Testing the <code>MuteSupport</code> behavior by clicking on the mute button.");
    4041
    4142iconService.directoryPath = "../../../../Source/WebCore/Modules/modern-media-controls/images";
     
    4546const mediaController = createControls(shadowRoot, media, null);
    4647
    47 media.addEventListener("play", function() {
    48     debug("Media is playing");
    49     shouldBeFalse("mediaController.controls.showsStartButton");
     48shouldBeFalse("mediaController.controls.muteButton.muted");
    5049
    51     media.addEventListener("pause", function() {
    52         debug("");
    53         debug("Media is paused");
    54         shouldBeFalse("mediaController.controls.showsStartButton");
     50let numberOfEvents = 0;
     51media.addEventListener("volumechange", function() {
     52    debug("");
     53    debug("volumechange event was dispatched");
     54
     55    numberOfEvents++;
     56
     57    if (numberOfEvents == 1) {
     58        shouldBeTrue("media.muted");
     59        shouldBeTrue("mediaController.controls.muteButton.muted");
     60        clickMuteButton();
     61    } else if (numberOfEvents == 2) {
     62        shouldBeFalse("media.muted");
     63        shouldBeFalse("mediaController.controls.muteButton.muted");
    5564        debug("");
    5665        shadowRoot.host.remove();
    5766        media.remove();
    5867        finishJSTest();
    59     });
    60 
    61     media.autoplay = false;
    62     media.pause();
     68    }
    6369});
    6470
    65 media.play();
     71function clickMuteButton()
     72{
     73    debug("");
     74    debug("Dispatching click event to the mute button");
     75    mediaController.controls.muteButton.element.click();
     76}
     77
     78clickMuteButton();
    6679
    6780</script>
  • trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-media-api.html

    r207586 r207587  
    2626<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-media-controls.js" type="text/javascript"></script>
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
     28<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/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    2831<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
    29 <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/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/main.js" type="text/javascript"></script>
    3233<body>
     
    3738window.jsTestIsAsync = true;
    3839
    39 description("Testing the <code>StartSupport</code> behavior with manual play.");
     40description("Testing the <code>MuteSupport</code> behavior by using the media API.");
    4041
    4142iconService.directoryPath = "../../../../Source/WebCore/Modules/modern-media-controls/images";
     
    4546const mediaController = createControls(shadowRoot, media, null);
    4647
    47 media.addEventListener("play", function() {
    48     debug("Media is playing");
    49     shouldBeFalse("mediaController.controls.showsStartButton");
     48shouldBeFalse("mediaController.controls.muteButton.muted");
    5049
    51     media.addEventListener("pause", function() {
    52         debug("");
    53         debug("Media is paused");
    54         shouldBeFalse("mediaController.controls.showsStartButton");
     50let numberOfEvents = 0;
     51media.addEventListener("volumechange", function() {
     52    debug("");
     53    debug("volumechange event was dispatched");
     54
     55    numberOfEvents++;
     56
     57    if (numberOfEvents == 1) {
     58        shouldBeTrue("media.muted");
     59        shouldBeTrue("mediaController.controls.muteButton.muted");
     60        media.muted = false;
     61    } else if (numberOfEvents == 2) {
     62        shouldBeFalse("media.muted");
     63        shouldBeFalse("mediaController.controls.muteButton.muted");
    5564        debug("");
    5665        shadowRoot.host.remove();
    5766        media.remove();
    5867        finishJSTest();
    59     });
    60 
    61     media.autoplay = false;
    62     media.pause();
     68    }
    6369});
    6470
    65 media.play();
     71media.muted = true;
    6672
    6773</script>
  • trunk/LayoutTests/media/modern-media-controls/mute-support/mute-support-muted.html

    r207586 r207587  
    2626<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-media-controls.js" type="text/javascript"></script>
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
     28<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/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    2831<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
    29 <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/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/main.js" type="text/javascript"></script>
    3233<body>
    33 <video src="../../content/test.mp4" style="width: 320px; height: 240px;" autoplay></video>
     34<video src="../../content/test.mp4" style="width: 320px; height: 240px;" muted></video>
    3435<div id="shadow"></div>
    3536<script type="text/javascript">
    3637
    37 window.jsTestIsAsync = true;
    38 
    39 description("Testing the <code>StartSupport</code> behavior with autoplay.");
     38description("Testing the <code>MuteSupport</code> behavior by using the muted HTML attribute.");
    4039
    4140iconService.directoryPath = "../../../../Source/WebCore/Modules/modern-media-controls/images";
     
    4544const mediaController = createControls(shadowRoot, media, null);
    4645
    47 media.addEventListener("play", function() {
    48     debug("Media is playing");
    49     shouldBeFalse("mediaController.controls.showsStartButton");
    50     debug("");
    51     shadowRoot.host.remove();
    52     media.remove();
    53     finishJSTest();
    54 });
     46shouldBeTrue("mediaController.controls.muteButton.muted");
     47
     48debug("");
     49shadowRoot.host.remove();
     50media.remove();
    5551
    5652</script>
  • trunk/LayoutTests/media/modern-media-controls/start-support/start-support-audio.html

    r207554 r207587  
    2626<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-media-controls.js" type="text/javascript"></script>
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
     28<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/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    2831<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
    29 <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/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/main.js" type="text/javascript"></script>
    3233<body>
  • trunk/LayoutTests/media/modern-media-controls/start-support/start-support-autoplay.html

    r207554 r207587  
    2626<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-media-controls.js" type="text/javascript"></script>
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
     28<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/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    2831<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
    29 <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/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/main.js" type="text/javascript"></script>
    3233<body>
  • trunk/LayoutTests/media/modern-media-controls/start-support/start-support-click-to-start.html

    r207554 r207587  
    2626<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-media-controls.js" type="text/javascript"></script>
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
     28<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/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    2831<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
    29 <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/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/main.js" type="text/javascript"></script>
    3233<body>
  • trunk/LayoutTests/media/modern-media-controls/start-support/start-support-error.html

    r207554 r207587  
    2626<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-media-controls.js" type="text/javascript"></script>
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
     28<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/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    2831<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
    29 <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/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/main.js" type="text/javascript"></script>
    3233<body>
  • trunk/LayoutTests/media/modern-media-controls/start-support/start-support-fullscreen.html

    r207554 r207587  
    2626<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-media-controls.js" type="text/javascript"></script>
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
     28<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/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    2831<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
    29 <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/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/main.js" type="text/javascript"></script>
    3233<body>
  • trunk/LayoutTests/media/modern-media-controls/start-support/start-support-manual-play.html

    r207554 r207587  
    2626<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-media-controls.js" type="text/javascript"></script>
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
     28<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/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    2831<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
    29 <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/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/main.js" type="text/javascript"></script>
    3233<body>
  • trunk/LayoutTests/media/modern-media-controls/start-support/start-support-no-source.html

    r207554 r207587  
    2626<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-media-controls.js" type="text/javascript"></script>
    2727<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.js" type="text/javascript"></script>
     28<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/mute-support.js" type="text/javascript"></script>
     30<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/start-support.js" type="text/javascript"></script>
    2831<script src="../../../../Source/WebCore/Modules/modern-media-controls/media/media-controller.js" type="text/javascript"></script>
    29 <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/start-support.js" type="text/javascript"></script>
    3132<script src="../../../../Source/WebCore/Modules/modern-media-controls/main.js" type="text/javascript"></script>
    3233<body>
  • trunk/Source/WebCore/ChangeLog

    r207585 r207587  
     12016-10-19  Antoine Quint  <graouts@apple.com>
     2
     3        [Modern Media Controls] Media Controller: mute support
     4        https://bugs.webkit.org/show_bug.cgi?id=163677
     5        <rdar://problem/28851582>
     6
     7        Reviewed by Dean Jackson.
     8
     9        We introduce the MuteSupport class which brings support for muting the media
     10        by clicking on the mute button in the media controls and correctly reflecting
     11        the media's muted state should the media be muted via the media API.
     12
     13        Tests: media/modern-media-controls/mute-support/mute-support-button-click.html
     14               media/modern-media-controls/mute-support/mute-support-media-api.html
     15               media/modern-media-controls/mute-support/mute-support-muted.html
     16
     17        * Modules/modern-media-controls/media/media-controller.js:
     18        (MediaController):
     19        * Modules/modern-media-controls/media/mute-support.js: Copied from Source/WebCore/Modules/modern-media-controls/media/media-controller.js.
     20        (MuteSupport.prototype.get control):
     21        (MuteSupport.prototype.get mediaEvents):
     22        (MuteSupport.prototype.buttonWasClicked):
     23        (MuteSupport.prototype.syncControl):
     24        (MuteSupport):
     25        * WebCore.xcodeproj/project.pbxproj:
     26        * rendering/RenderThemeMac.mm:
     27        (WebCore::RenderThemeMac::mediaControlsScript):
     28
    1292016-10-19  Alex Christensen  <achristensen@webkit.org>
    230
  • trunk/Source/WebCore/Modules/modern-media-controls/media/media-controller.js

    r207554 r207587  
    4040
    4141        new StartSupport(this);
     42        new MuteSupport(this);
    4243
    4344        this._updateControlsSize();
  • trunk/Source/WebCore/Modules/modern-media-controls/media/mute-support.js

    r207586 r207587  
    2424 */
    2525
    26 class MediaController
     26class MuteSupport 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 StartSupport(this);
    42 
    43         this._updateControlsSize();
    44         media.addEventListener("resize", this);
    45     }
    4628
    4729    // Protected
    4830
    49     set pageScaleFactor(pageScaleFactor)
     31    get control()
    5032    {
    51         // FIXME: To be implemented.
     33        return this.mediaController.controls.muteButton;
    5234    }
    5335
    54     set usesLTRUserInterfaceLayoutDirection(flag)
     36    get mediaEvents()
    5537    {
    56         // FIXME: To be implemented.
     38        return ["volumechange"];
    5739    }
    5840
    59     handleEvent(event)
     41    buttonWasClicked(control)
    6042    {
    61         if (event.type === "resize" && event.currentTarget === this.media)
    62             this._updateControlsSize();
     43        const media = this.mediaController.media;
     44        media.muted = !media.muted;
    6345    }
    6446
    65     // Private
    66 
    67     _updateControlsSize()
     47    syncControl()
    6848    {
    69         this.controls.width = this.media.offsetWidth;
    70         this.controls.height = this.media.offsetHeight;
     49        this.control.muted = this.mediaController.media.muted;
    7150    }
    7251
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r207585 r207587  
    98149814                716FA0FF1DB26591007323CC /* volume-slider.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = "volume-slider.css"; sourceTree = "<group>"; };
    98159815                716FA1001DB26591007323CC /* volume-slider.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "volume-slider.js"; sourceTree = "<group>"; };
     9816                7177E2461DB80D2F00919A0B /* media-controller-support.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "media-controller-support.js"; sourceTree = "<group>"; };
     9817                7177E2471DB80D2F00919A0B /* mute-support.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "mute-support.js"; sourceTree = "<group>"; };
     9818                7177E2481DB80D2F00919A0B /* start-support.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "start-support.js"; sourceTree = "<group>"; };
    98169819                71A57DEF154BE25C0009D120 /* SVGPathUtilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathUtilities.cpp; sourceTree = "<group>"; };
    98179820                71A57DF0154BE25C0009D120 /* SVGPathUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathUtilities.h; sourceTree = "<group>"; };
     
    1771317716                        isa = PBXGroup;
    1771417717                        children = (
     17718                                7177E2461DB80D2F00919A0B /* media-controller-support.js */,
    1771517719                                71D02D921DB55C4E00DD5CF5 /* media-controller.js */,
     17720                                7177E2471DB80D2F00919A0B /* mute-support.js */,
     17721                                7177E2481DB80D2F00919A0B /* start-support.js */,
    1771617722                        );
    1771717723                        path = media;
  • trunk/Source/WebCore/rendering/RenderThemeMac.mm

    r207436 r207587  
    261261            for (NSString *path in controlsPaths)
    262262                scriptBuilder.append([NSString stringWithContentsOfFile:[bundle pathForResource:path ofType:@"js" inDirectory:@"modern-media-controls/controls"] encoding:NSUTF8StringEncoding error:nil]);
    263             scriptBuilder.append([NSString stringWithContentsOfFile:[bundle pathForResource:@"media-controller" ofType:@"js" inDirectory:@"modern-media-controls/media"] encoding:NSUTF8StringEncoding error:nil]);
     263            NSArray *mediaPaths = @[@"media-controller-support", @"mute-support", @"start-support", @"media-controller"];
     264            for (NSString *path in mediaPaths)
     265                scriptBuilder.append([NSString stringWithContentsOfFile:[bundle pathForResource:path ofType:@"js" inDirectory:@"modern-media-controls/media"] encoding:NSUTF8StringEncoding error:nil]);
    264266            scriptBuilder.append([NSString stringWithContentsOfFile:[bundle pathForResource:@"main" ofType:@"js" inDirectory:@"modern-media-controls"] encoding:NSUTF8StringEncoding error:nil]);
    265267        } else {
Note: See TracChangeset for help on using the changeset viewer.