<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[214400] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/214400">214400</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2017-03-25 10:45:22 -0700 (Sat, 25 Mar 2017)</dd>
</dl>

<h3>Log Message</h3>
<pre>AX: Media controls are unlabeled
https://bugs.webkit.org/show_bug.cgi?id=169947
&lt;rdar://problem/30153323&gt;

Patch by Aaron Chu &lt;aaron_chu@apple.com&gt; on 2017-03-25
Reviewed by Antoine Quint.

Source/WebCore:

Added a &quot;label&quot; property for Icons, which are used to set
the aria-label for the controls in modern media controls.

Test: Addition to all existing modern media controls tests.

* English.lproj/modern-media-controls-localized-strings.js:
* Modules/modern-media-controls/controls/icon-button.js:
(IconButton.prototype.set iconName):
(IconButton.prototype.handleEvent):
(IconButton.prototype._loadImage):
* Modules/modern-media-controls/controls/icon-service.js:
* Modules/modern-media-controls/controls/start-button.js:
(StartButton):
* Modules/modern-media-controls/js-files:

LayoutTests:

* media/modern-media-controls/airplay-button/airplay-button-expected.txt:
* media/modern-media-controls/airplay-button/airplay-button.html:
* media/modern-media-controls/forward-button/forward-button-expected.txt:
* media/modern-media-controls/forward-button/forward-button.html:
* media/modern-media-controls/fullscreen-button/fullscreen-button-expected.txt:
* media/modern-media-controls/fullscreen-button/fullscreen-button.html:
* media/modern-media-controls/icon-button/icon-button-expected.txt:
* media/modern-media-controls/icon-button/icon-button.html:
* media/modern-media-controls/icon-service/icon-service-expected.txt:
* media/modern-media-controls/icon-service/icon-service.html:
* media/modern-media-controls/mute-button/mute-button-expected.txt:
* media/modern-media-controls/mute-button/mute-button.html:
* media/modern-media-controls/pip-button/pip-button-expected.txt:
* media/modern-media-controls/pip-button/pip-button.html:
* media/modern-media-controls/play-pause-button/play-pause-button-expected.txt:
* media/modern-media-controls/play-pause-button/play-pause-button.html:
* media/modern-media-controls/rewind-button/rewind-button-expected.txt:
* media/modern-media-controls/rewind-button/rewind-button.html:
* media/modern-media-controls/skip-back-button/skip-back-button-expected.txt:
* media/modern-media-controls/skip-back-button/skip-back-button.html:
* media/modern-media-controls/start-button/start-button-expected.txt:
* media/modern-media-controls/start-button/start-button.html:
* media/modern-media-controls/tracks-button/tracks-button-expected.txt:
* media/modern-media-controls/tracks-button/tracks-button.html:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolsairplaybuttonairplaybuttonexpectedtxt">trunk/LayoutTests/media/modern-media-controls/airplay-button/airplay-button-expected.txt</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolsairplaybuttonairplaybuttonhtml">trunk/LayoutTests/media/modern-media-controls/airplay-button/airplay-button.html</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolsforwardbuttonforwardbuttonexpectedtxt">trunk/LayoutTests/media/modern-media-controls/forward-button/forward-button-expected.txt</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolsforwardbuttonforwardbuttonhtml">trunk/LayoutTests/media/modern-media-controls/forward-button/forward-button.html</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolsfullscreenbuttonfullscreenbuttonexpectedtxt">trunk/LayoutTests/media/modern-media-controls/fullscreen-button/fullscreen-button-expected.txt</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolsfullscreenbuttonfullscreenbuttonhtml">trunk/LayoutTests/media/modern-media-controls/fullscreen-button/fullscreen-button.html</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolsiconbuttoniconbuttonexpectedtxt">trunk/LayoutTests/media/modern-media-controls/icon-button/icon-button-expected.txt</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolsiconbuttoniconbuttonhtml">trunk/LayoutTests/media/modern-media-controls/icon-button/icon-button.html</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolsiconserviceiconserviceexpectedtxt">trunk/LayoutTests/media/modern-media-controls/icon-service/icon-service-expected.txt</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolsiconserviceiconservicehtml">trunk/LayoutTests/media/modern-media-controls/icon-service/icon-service.html</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolsmutebuttonmutebuttonexpectedtxt">trunk/LayoutTests/media/modern-media-controls/mute-button/mute-button-expected.txt</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolsmutebuttonmutebuttonhtml">trunk/LayoutTests/media/modern-media-controls/mute-button/mute-button.html</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolspipbuttonpipbuttonexpectedtxt">trunk/LayoutTests/media/modern-media-controls/pip-button/pip-button-expected.txt</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolspipbuttonpipbuttonhtml">trunk/LayoutTests/media/modern-media-controls/pip-button/pip-button.html</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolsplaypausebuttonplaypausebuttonexpectedtxt">trunk/LayoutTests/media/modern-media-controls/play-pause-button/play-pause-button-expected.txt</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolsplaypausebuttonplaypausebuttonhtml">trunk/LayoutTests/media/modern-media-controls/play-pause-button/play-pause-button.html</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolsrewindbuttonrewindbuttonexpectedtxt">trunk/LayoutTests/media/modern-media-controls/rewind-button/rewind-button-expected.txt</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolsrewindbuttonrewindbuttonhtml">trunk/LayoutTests/media/modern-media-controls/rewind-button/rewind-button.html</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolsskipbackbuttonskipbackbuttonexpectedtxt">trunk/LayoutTests/media/modern-media-controls/skip-back-button/skip-back-button-expected.txt</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolsskipbackbuttonskipbackbuttonhtml">trunk/LayoutTests/media/modern-media-controls/skip-back-button/skip-back-button.html</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolsstartbuttonstartbuttonexpectedtxt">trunk/LayoutTests/media/modern-media-controls/start-button/start-button-expected.txt</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolsstartbuttonstartbuttonhtml">trunk/LayoutTests/media/modern-media-controls/start-button/start-button.html</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolstracksbuttontracksbuttonexpectedtxt">trunk/LayoutTests/media/modern-media-controls/tracks-button/tracks-button-expected.txt</a></li>
<li><a href="#trunkLayoutTestsmediamodernmediacontrolstracksbuttontracksbuttonhtml">trunk/LayoutTests/media/modern-media-controls/tracks-button/tracks-button.html</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreEnglishlprojmodernmediacontrolslocalizedstringsjs">trunk/Source/WebCore/English.lproj/modern-media-controls-localized-strings.js</a></li>
<li><a href="#trunkSourceWebCoreModulesmodernmediacontrolscontrolsiconbuttonjs">trunk/Source/WebCore/Modules/modern-media-controls/controls/icon-button.js</a></li>
<li><a href="#trunkSourceWebCoreModulesmodernmediacontrolscontrolsiconservicejs">trunk/Source/WebCore/Modules/modern-media-controls/controls/icon-service.js</a></li>
<li><a href="#trunkSourceWebCoreModulesmodernmediacontrolscontrolsstartbuttonjs">trunk/Source/WebCore/Modules/modern-media-controls/controls/start-button.js</a></li>
<li><a href="#trunkSourceWebCoreModulesmodernmediacontrolsjsfiles">trunk/Source/WebCore/Modules/modern-media-controls/js-files</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/ChangeLog        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -1,3 +1,36 @@
</span><ins>+2017-03-25  Aaron Chu  &lt;aaron_chu@apple.com&gt;
+
+        AX: Media controls are unlabeled
+        https://bugs.webkit.org/show_bug.cgi?id=169947
+        &lt;rdar://problem/30153323&gt;
+
+        Reviewed by Antoine Quint.
+
+        * media/modern-media-controls/airplay-button/airplay-button-expected.txt:
+        * media/modern-media-controls/airplay-button/airplay-button.html:
+        * media/modern-media-controls/forward-button/forward-button-expected.txt:
+        * media/modern-media-controls/forward-button/forward-button.html:
+        * media/modern-media-controls/fullscreen-button/fullscreen-button-expected.txt:
+        * media/modern-media-controls/fullscreen-button/fullscreen-button.html:
+        * media/modern-media-controls/icon-button/icon-button-expected.txt:
+        * media/modern-media-controls/icon-button/icon-button.html:
+        * media/modern-media-controls/icon-service/icon-service-expected.txt:
+        * media/modern-media-controls/icon-service/icon-service.html:
+        * media/modern-media-controls/mute-button/mute-button-expected.txt:
+        * media/modern-media-controls/mute-button/mute-button.html:
+        * media/modern-media-controls/pip-button/pip-button-expected.txt:
+        * media/modern-media-controls/pip-button/pip-button.html:
+        * media/modern-media-controls/play-pause-button/play-pause-button-expected.txt:
+        * media/modern-media-controls/play-pause-button/play-pause-button.html:
+        * media/modern-media-controls/rewind-button/rewind-button-expected.txt:
+        * media/modern-media-controls/rewind-button/rewind-button.html:
+        * media/modern-media-controls/skip-back-button/skip-back-button-expected.txt:
+        * media/modern-media-controls/skip-back-button/skip-back-button.html:
+        * media/modern-media-controls/start-button/start-button-expected.txt:
+        * media/modern-media-controls/start-button/start-button.html:
+        * media/modern-media-controls/tracks-button/tracks-button-expected.txt:
+        * media/modern-media-controls/tracks-button/tracks-button.html:
+
</ins><span class="cx"> 2017-03-25  Carlos Garcia Campos  &lt;cgarcia@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed GTK+ gardening. Update expectations of several tests.
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolsairplaybuttonairplaybuttonexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/airplay-button/airplay-button-expected.txt (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/airplay-button/airplay-button-expected.txt        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/airplay-button/airplay-button-expected.txt        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -21,10 +21,10 @@
</span><span class="cx"> PASS airplayButton.element.localName is &quot;button&quot;
</span><span class="cx"> PASS airplayButton.element.classList.contains(&quot;icon&quot;) is true
</span><span class="cx"> PASS airplayButton.element.classList.contains(&quot;airplay&quot;) is true
</span><del>-PASS airplayButton.iconName is &quot;airplay&quot;
</del><ins>+PASS airplayButton.iconName is Icons.Airplay
</ins><span class="cx"> FAIL airplayButton.width should be 0. Was 25.
</span><span class="cx"> FAIL airplayButton.height should be 0. Was 22.
</span><del>-PASS airplayButton._image is iconService.imageForIconNameAndLayoutTraits(Icons.Airplay, LayoutTraits.macOS)
</del><ins>+PASS airplayButton._image is iconService.imageForIconNameAndLayoutTraits(Icons.Airplay.name, LayoutTraits.macOS)
</ins><span class="cx"> PASS airplayButton._image.src is not &quot;&quot;
</span><span class="cx"> FAIL airplayButton._image.complete should be false. Was true.
</span><span class="cx"> PASS airplayButton.width is not 0
</span><span class="lines">@@ -46,6 +46,7 @@
</span><span class="cx"> frameDidFire()
</span><span class="cx"> PASS dirtyNodes.has(airplayButton) is false
</span><span class="cx"> PASS airplayButton.needsLayout is false
</span><ins>+PASS airplayButton.element.getAttribute('aria-label') is &quot;AirPlay&quot;
</ins><span class="cx"> _frameDidFire() - end
</span><span class="cx"> PASS airplayButton.element.style.webkitMaskImage.includes(&quot;macOS/airplay@&quot;) became true
</span><span class="cx"> PASS successfullyParsed is true
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolsairplaybuttonairplaybuttonhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/airplay-button/airplay-button.html (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/airplay-button/airplay-button.html        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/airplay-button/airplay-button.html        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -15,10 +15,10 @@
</span><span class="cx"> shouldBeEqualToString(&quot;airplayButton.element.localName&quot;, &quot;button&quot;);
</span><span class="cx"> shouldBeTrue('airplayButton.element.classList.contains(&quot;icon&quot;)');
</span><span class="cx"> shouldBeTrue('airplayButton.element.classList.contains(&quot;airplay&quot;)');
</span><del>-shouldBeEqualToString(&quot;airplayButton.iconName&quot;, `${Icons.Airplay}`);
</del><ins>+shouldBe(&quot;airplayButton.iconName&quot;, &quot;Icons.Airplay&quot;);
</ins><span class="cx"> shouldBe(&quot;airplayButton.width&quot;, &quot;0&quot;);
</span><span class="cx"> shouldBe(&quot;airplayButton.height&quot;, &quot;0&quot;);
</span><del>-shouldBe(&quot;airplayButton._image&quot;, &quot;iconService.imageForIconNameAndLayoutTraits(Icons.Airplay, LayoutTraits.macOS)&quot;);
</del><ins>+shouldBe(&quot;airplayButton._image&quot;, &quot;iconService.imageForIconNameAndLayoutTraits(Icons.Airplay.name, LayoutTraits.macOS)&quot;);
</ins><span class="cx"> shouldNotBeEqualToString(&quot;airplayButton._image.src&quot;, &quot;&quot;);
</span><span class="cx"> shouldBeFalse(&quot;airplayButton._image.complete&quot;);
</span><span class="cx"> 
</span><span class="lines">@@ -42,6 +42,7 @@
</span><span class="cx">         debug(&quot;frameDidFire()&quot;);
</span><span class="cx">         shouldBeFalse(&quot;dirtyNodes.has(airplayButton)&quot;);
</span><span class="cx">         shouldBeFalse(&quot;airplayButton.needsLayout&quot;);
</span><ins>+        shouldBeEqualToString(&quot;airplayButton.element.getAttribute('aria-label')&quot;, &quot;AirPlay&quot;);
</ins><span class="cx">     }
</span><span class="cx">     shouldBecomeEqual('airplayButton.element.style.webkitMaskImage.includes(&quot;macOS/airplay@&quot;)', &quot;true&quot;, finishJSTest);
</span><span class="cx">     // shouldBecomeEqual('airplayButton.element.style.webkitMaskImage.includes(&quot;macOS/airplay@&quot;)', &quot;true&quot;, () =&gt; {
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolsforwardbuttonforwardbuttonexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/forward-button/forward-button-expected.txt (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/forward-button/forward-button-expected.txt        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/forward-button/forward-button-expected.txt        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -6,7 +6,7 @@
</span><span class="cx"> PASS forwardButton.element.localName is &quot;button&quot;
</span><span class="cx"> PASS forwardButton.element.classList.contains(&quot;icon&quot;) is true
</span><span class="cx"> PASS forwardButton.element.classList.contains(&quot;forward&quot;) is true
</span><del>-PASS forwardButton.iconName is &quot;forward&quot;
</del><ins>+PASS forwardButton.iconName is Icons.Forward
</ins><span class="cx"> PASS forwardButton.element.style.webkitMaskImage.includes(&quot;macOS/forward@&quot;) became true
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolsforwardbuttonforwardbuttonhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/forward-button/forward-button.html (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/forward-button/forward-button.html        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/forward-button/forward-button.html        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -13,7 +13,7 @@
</span><span class="cx"> shouldBeEqualToString(&quot;forwardButton.element.localName&quot;, &quot;button&quot;);
</span><span class="cx"> shouldBeTrue('forwardButton.element.classList.contains(&quot;icon&quot;)');
</span><span class="cx"> shouldBeTrue('forwardButton.element.classList.contains(&quot;forward&quot;)');
</span><del>-shouldBeEqualToString(&quot;forwardButton.iconName&quot;, `${Icons.Forward}`);
</del><ins>+shouldBe(&quot;forwardButton.iconName&quot;, &quot;Icons.Forward&quot;);
</ins><span class="cx"> 
</span><span class="cx"> shouldBecomeEqual('forwardButton.element.style.webkitMaskImage.includes(&quot;macOS/forward@&quot;)', &quot;true&quot;, finishMediaControlsTest);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolsfullscreenbuttonfullscreenbuttonexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/fullscreen-button/fullscreen-button-expected.txt (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/fullscreen-button/fullscreen-button-expected.txt        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/fullscreen-button/fullscreen-button-expected.txt        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -6,8 +6,8 @@
</span><span class="cx"> PASS enterFullscreenButton.element.localName is &quot;button&quot;
</span><span class="cx"> PASS enterFullscreenButton.element.classList.contains(&quot;icon&quot;) is true
</span><span class="cx"> PASS enterFullscreenButton.element.classList.contains(&quot;fullscreen&quot;) is true
</span><del>-PASS enterFullscreenButton.iconName is &quot;enter-fullscreen&quot;
-PASS exitFullscreenButton.iconName is &quot;exit-fullscreen&quot;
</del><ins>+PASS enterFullscreenButton.iconName is Icons.EnterFullscreen
+PASS exitFullscreenButton.iconName is Icons.ExitFullscreen
</ins><span class="cx"> PASS enterFullscreenButton.element.style.webkitMaskImage.includes(&quot;macOS/enter-fullscreen@&quot;) is true
</span><span class="cx"> PASS iOSEnterFullscreenButton.element.style.webkitMaskImage.includes(&quot;iOS/enter-fullscreen@&quot;) is true
</span><span class="cx"> PASS exitFullscreenButton.element.style.webkitMaskImage.includes(&quot;macOS/exit-fullscreen@&quot;) is true
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolsfullscreenbuttonfullscreenbuttonhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/fullscreen-button/fullscreen-button.html (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/fullscreen-button/fullscreen-button.html        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/fullscreen-button/fullscreen-button.html        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -13,12 +13,12 @@
</span><span class="cx"> shouldBeEqualToString(&quot;enterFullscreenButton.element.localName&quot;, &quot;button&quot;);
</span><span class="cx"> shouldBeTrue('enterFullscreenButton.element.classList.contains(&quot;icon&quot;)');
</span><span class="cx"> shouldBeTrue('enterFullscreenButton.element.classList.contains(&quot;fullscreen&quot;)');
</span><del>-shouldBeEqualToString(&quot;enterFullscreenButton.iconName&quot;, `${Icons.EnterFullscreen}`);
</del><ins>+shouldBe(&quot;enterFullscreenButton.iconName&quot;, &quot;Icons.EnterFullscreen&quot;);
</ins><span class="cx"> 
</span><span class="cx"> const iOSEnterFullscreenButton = new FullscreenButton({ layoutTraits: LayoutTraits.iOS });
</span><span class="cx"> 
</span><span class="cx"> const exitFullscreenButton = new FullscreenButton({ layoutTraits: LayoutTraits.macOS | LayoutTraits.Fullscreen });
</span><del>-shouldBeEqualToString(&quot;exitFullscreenButton.iconName&quot;, `${Icons.ExitFullscreen}`);
</del><ins>+shouldBe(&quot;exitFullscreenButton.iconName&quot;, &quot;Icons.ExitFullscreen&quot;);
</ins><span class="cx"> 
</span><span class="cx"> scheduler.frameDidFire = function()
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolsiconbuttoniconbuttonexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/icon-button/icon-button-expected.txt (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/icon-button/icon-button-expected.txt        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/icon-button/icon-button-expected.txt        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -18,6 +18,7 @@
</span><span class="cx"> PASS iconButton.element.style.width is &quot;22px&quot;
</span><span class="cx"> PASS iconButton.element.style.height is &quot;24px&quot;
</span><span class="cx"> PASS iconButton.element.style.webkitMaskSize is &quot;22px 24px&quot;
</span><ins>+PASS iconButton.element.getAttribute('aria-label') is &quot;Pause&quot;
</ins><span class="cx"> 
</span><span class="cx"> Setting start icon
</span><span class="cx"> PASS iconButton.element.style.webkitMaskImage.includes(&quot;macOS/start&quot;) is true
</span><span class="lines">@@ -24,6 +25,7 @@
</span><span class="cx"> PASS iconButton.element.style.width is &quot;70px&quot;
</span><span class="cx"> PASS iconButton.element.style.height is &quot;70px&quot;
</span><span class="cx"> PASS iconButton.element.style.webkitMaskSize is &quot;70px 70px&quot;
</span><ins>+PASS iconButton.element.getAttribute('aria-label') is &quot;Start&quot;
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolsiconbuttoniconbuttonhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/icon-button/icon-button.html (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/icon-button/icon-button.html        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/icon-button/icon-button.html        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -41,6 +41,7 @@
</span><span class="cx">         shouldBeEqualToString(&quot;iconButton.element.style.height&quot;, &quot;24px&quot;);
</span><span class="cx">         shouldBeEqualToString(&quot;iconButton.element.style.webkitMaskSize&quot;, &quot;22px 24px&quot;);
</span><span class="cx"> 
</span><ins>+        shouldBeEqualToString(&quot;iconButton.element.getAttribute('aria-label')&quot;, `${Icons.Pause.label}`);
</ins><span class="cx">         debug(&quot;&quot;);
</span><span class="cx">         debug(&quot;Setting start icon&quot;);
</span><span class="cx">         iconButton.iconName = Icons.Start;
</span><span class="lines">@@ -49,6 +50,7 @@
</span><span class="cx">         shouldBeEqualToString(&quot;iconButton.element.style.width&quot;, &quot;70px&quot;);
</span><span class="cx">         shouldBeEqualToString(&quot;iconButton.element.style.height&quot;, &quot;70px&quot;);
</span><span class="cx">         shouldBeEqualToString(&quot;iconButton.element.style.webkitMaskSize&quot;, &quot;70px 70px&quot;);
</span><ins>+        shouldBeEqualToString(&quot;iconButton.element.getAttribute('aria-label')&quot;, `${Icons.Start.label}`);
</ins><span class="cx"> 
</span><span class="cx">         finishMediaControlsTest();
</span><span class="cx">     } 
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolsiconserviceiconserviceexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/icon-service/icon-service-expected.txt (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/icon-service/icon-service-expected.txt        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/icon-service/icon-service-expected.txt        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -4,16 +4,16 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> Checking path to images is computed according to traits
</span><del>-PASS iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.macOS).src.includes(&quot;macOS/pause@&quot;) is true
-PASS iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.iOS).src.includes(&quot;iOS/pause@&quot;) is true
-PASS iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.macOS | LayoutTraits.Fullscreen).src.includes(&quot;macOS/pause-fullscreen@&quot;) is true
</del><ins>+PASS iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.macOS).src.includes(&quot;macOS/pause@&quot;) is true
+PASS iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.iOS).src.includes(&quot;iOS/pause@&quot;) is true
+PASS iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.macOS | LayoutTraits.Fullscreen).src.includes(&quot;macOS/pause-fullscreen@&quot;) is true
</ins><span class="cx"> 
</span><span class="cx"> Checking fullscreen or compact layout traits are ignored on iOS
</span><del>-PASS iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.iOS | LayoutTraits.Fullscreen) === iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.iOS) is true
-PASS iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.iOS | LayoutTraits.Compact) === iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.iOS) is true
</del><ins>+PASS iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.iOS | LayoutTraits.Fullscreen) === iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.iOS) is true
+PASS iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.iOS | LayoutTraits.Compact) === iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.iOS) is true
</ins><span class="cx"> 
</span><span class="cx"> Checking requested images are cached
</span><del>-PASS iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.macOS) === iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.macOS) is true
</del><ins>+PASS iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.macOS) === iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.macOS) is true
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolsiconserviceiconservicehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/icon-service/icon-service.html (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/icon-service/icon-service.html        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/icon-service/icon-service.html        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -1,7 +1,5 @@
</span><span class="cx"> &lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;../../../../Source/WebCore/Modules/modern-media-controls/controls/layout-node.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;../../../../Source/WebCore/Modules/modern-media-controls/controls/layout-item.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;../../../../Source/WebCore/Modules/modern-media-controls/controls/icon-service.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;../resources/media-controls-loader.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script type=&quot;text/javascript&quot;&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -10,18 +8,18 @@
</span><span class="cx"> iconService.directoryPath = &quot;../../../../Source/WebCore/Modules/modern-media-controls/images&quot;;
</span><span class="cx"> 
</span><span class="cx"> debug(&quot;Checking path to images is computed according to traits&quot;);
</span><del>-shouldBeTrue('iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.macOS).src.includes(&quot;macOS/pause@&quot;)');
-shouldBeTrue('iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.iOS).src.includes(&quot;iOS/pause@&quot;)');
-shouldBeTrue('iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.macOS | LayoutTraits.Fullscreen).src.includes(&quot;macOS/pause-fullscreen@&quot;)');
</del><ins>+shouldBeTrue('iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.macOS).src.includes(&quot;macOS/pause@&quot;)');
+shouldBeTrue('iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.iOS).src.includes(&quot;iOS/pause@&quot;)');
+shouldBeTrue('iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.macOS | LayoutTraits.Fullscreen).src.includes(&quot;macOS/pause-fullscreen@&quot;)');
</ins><span class="cx"> 
</span><span class="cx"> debug(&quot;&quot;);
</span><span class="cx"> debug(&quot;Checking fullscreen or compact layout traits are ignored on iOS&quot;);
</span><del>-shouldBeTrue('iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.iOS | LayoutTraits.Fullscreen) === iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.iOS)');
-shouldBeTrue('iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.iOS | LayoutTraits.Compact) === iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.iOS)');
</del><ins>+shouldBeTrue('iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.iOS | LayoutTraits.Fullscreen) === iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.iOS)');
+shouldBeTrue('iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.iOS | LayoutTraits.Compact) === iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.iOS)');
</ins><span class="cx"> 
</span><span class="cx"> debug(&quot;&quot;);
</span><span class="cx"> debug(&quot;Checking requested images are cached&quot;);
</span><del>-shouldBeTrue('iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.macOS) === iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.macOS)');
</del><ins>+shouldBeTrue('iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.macOS) === iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.macOS)');
</ins><span class="cx"> 
</span><span class="cx"> &lt;/script&gt;
</span><span class="cx"> &lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolsmutebuttonmutebuttonexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/mute-button/mute-button-expected.txt (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/mute-button/mute-button-expected.txt        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/mute-button/mute-button-expected.txt        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -6,10 +6,10 @@
</span><span class="cx"> PASS muteButton.element.localName is &quot;button&quot;
</span><span class="cx"> PASS muteButton.element.classList.contains(&quot;icon&quot;) is true
</span><span class="cx"> PASS muteButton.element.classList.contains(&quot;mute&quot;) is true
</span><del>-PASS muteButton.iconName is &quot;volume&quot;
</del><ins>+PASS muteButton.iconName is Icons.Volume
</ins><span class="cx"> PASS muteButton.muted is false
</span><span class="cx"> PASS mutedButton.muted is true
</span><del>-PASS mutedButton.iconName is &quot;volume-mute&quot;
</del><ins>+PASS mutedButton.iconName is Icons.VolumeMuted
</ins><span class="cx"> PASS muteButton.element.style.webkitMaskImage.includes(&quot;macOS/volume@&quot;) became true
</span><span class="cx"> PASS mutedButton.element.style.webkitMaskImage.includes(&quot;macOS/volume-mute@&quot;) became true
</span><span class="cx"> PASS successfullyParsed is true
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolsmutebuttonmutebuttonhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/mute-button/mute-button.html (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/mute-button/mute-button.html        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/mute-button/mute-button.html        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -13,13 +13,13 @@
</span><span class="cx"> shouldBeEqualToString(&quot;muteButton.element.localName&quot;, &quot;button&quot;);
</span><span class="cx"> shouldBeTrue('muteButton.element.classList.contains(&quot;icon&quot;)');
</span><span class="cx"> shouldBeTrue('muteButton.element.classList.contains(&quot;mute&quot;)');
</span><del>-shouldBeEqualToString(&quot;muteButton.iconName&quot;, `${Icons.Volume}`);
</del><ins>+shouldBe(&quot;muteButton.iconName&quot;, &quot;Icons.Volume&quot;);
</ins><span class="cx"> shouldBeFalse(&quot;muteButton.muted&quot;);
</span><span class="cx"> 
</span><span class="cx"> const mutedButton = new MuteButton({ layoutTraits: LayoutTraits.macOS });
</span><span class="cx"> mutedButton.muted = true;
</span><span class="cx"> shouldBeTrue(&quot;mutedButton.muted&quot;);
</span><del>-shouldBeEqualToString(&quot;mutedButton.iconName&quot;, `${Icons.VolumeMuted}`);
</del><ins>+shouldBe(&quot;mutedButton.iconName&quot;, &quot;Icons.VolumeMuted&quot;);
</ins><span class="cx"> 
</span><span class="cx"> shouldBecomeEqual('muteButton.element.style.webkitMaskImage.includes(&quot;macOS/volume@&quot;)', &quot;true&quot;, () =&gt; {
</span><span class="cx">     shouldBecomeEqual('mutedButton.element.style.webkitMaskImage.includes(&quot;macOS/volume-mute@&quot;)', &quot;true&quot;, finishJSTest);
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolspipbuttonpipbuttonexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/pip-button/pip-button-expected.txt (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/pip-button/pip-button-expected.txt        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/pip-button/pip-button-expected.txt        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -6,7 +6,7 @@
</span><span class="cx"> PASS pipButton.element.localName is &quot;button&quot;
</span><span class="cx"> PASS pipButton.element.classList.contains(&quot;icon&quot;) is true
</span><span class="cx"> PASS pipButton.element.classList.contains(&quot;pip&quot;) is true
</span><del>-PASS pipButton.iconName is &quot;pip-in&quot;
</del><ins>+PASS pipButton.iconName is Icons.EnterPiP
</ins><span class="cx"> PASS pipButton.element.style.webkitMaskImage.includes(&quot;macOS/pip-in@&quot;) became true
</span><span class="cx"> PASS iOSPiPButton.element.style.webkitMaskImage.includes(&quot;iOS/pip-in@&quot;) became true
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolspipbuttonpipbuttonhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/pip-button/pip-button.html (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/pip-button/pip-button.html        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/pip-button/pip-button.html        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -13,7 +13,7 @@
</span><span class="cx"> shouldBeEqualToString(&quot;pipButton.element.localName&quot;, &quot;button&quot;);
</span><span class="cx"> shouldBeTrue('pipButton.element.classList.contains(&quot;icon&quot;)');
</span><span class="cx"> shouldBeTrue('pipButton.element.classList.contains(&quot;pip&quot;)');
</span><del>-shouldBeEqualToString(&quot;pipButton.iconName&quot;, `${Icons.EnterPiP}`);
</del><ins>+shouldBe(&quot;pipButton.iconName&quot;, &quot;Icons.EnterPiP&quot;);
</ins><span class="cx"> 
</span><span class="cx"> const iOSPiPButton = new PiPButton({ layoutTraits: LayoutTraits.iOS });
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolsplaypausebuttonplaypausebuttonexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/play-pause-button/play-pause-button-expected.txt (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/play-pause-button/play-pause-button-expected.txt        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/play-pause-button/play-pause-button-expected.txt        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -6,10 +6,10 @@
</span><span class="cx"> PASS playButton.element.localName is &quot;button&quot;
</span><span class="cx"> PASS playButton.element.classList.contains(&quot;icon&quot;) is true
</span><span class="cx"> PASS playButton.element.classList.contains(&quot;play-pause&quot;) is true
</span><del>-PASS playButton.iconName is &quot;play&quot;
</del><ins>+PASS playButton.iconName is Icons.Play
</ins><span class="cx"> PASS playButton.playing is false
</span><span class="cx"> PASS pauseButton.playing is true
</span><del>-PASS pauseButton.iconName is &quot;pause&quot;
</del><ins>+PASS pauseButton.iconName is Icons.Pause
</ins><span class="cx"> PASS playButton.element.style.webkitMaskImage.includes(&quot;macOS/play@&quot;) became true
</span><span class="cx"> PASS pauseButton.element.style.webkitMaskImage.includes(&quot;macOS/pause@&quot;) became true
</span><span class="cx"> PASS iOSPlayButton.element.style.webkitMaskImage.includes(&quot;iOS/play@&quot;) became true
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolsplaypausebuttonplaypausebuttonhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/play-pause-button/play-pause-button.html (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/play-pause-button/play-pause-button.html        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/play-pause-button/play-pause-button.html        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -13,7 +13,7 @@
</span><span class="cx"> shouldBeEqualToString(&quot;playButton.element.localName&quot;, &quot;button&quot;);
</span><span class="cx"> shouldBeTrue('playButton.element.classList.contains(&quot;icon&quot;)');
</span><span class="cx"> shouldBeTrue('playButton.element.classList.contains(&quot;play-pause&quot;)');
</span><del>-shouldBeEqualToString(&quot;playButton.iconName&quot;, `${Icons.Play}`);
</del><ins>+shouldBe(&quot;playButton.iconName&quot;, &quot;Icons.Play&quot;);
</ins><span class="cx"> shouldBeFalse(&quot;playButton.playing&quot;);
</span><span class="cx"> 
</span><span class="cx"> const fullscreenPlayButton = new PlayPauseButton({ layoutTraits: LayoutTraits.macOS | LayoutTraits.Fullscreen });
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> const pauseButton = new PlayPauseButton({ layoutTraits: LayoutTraits.macOS });
</span><span class="cx"> pauseButton.playing = true;
</span><span class="cx"> shouldBeTrue(&quot;pauseButton.playing&quot;);
</span><del>-shouldBeEqualToString(&quot;pauseButton.iconName&quot;, `${Icons.Pause}`);
</del><ins>+shouldBe(&quot;pauseButton.iconName&quot;, &quot;Icons.Pause&quot;);
</ins><span class="cx"> 
</span><span class="cx"> const fullscreenPauseButton = new PlayPauseButton({ layoutTraits: LayoutTraits.macOS | LayoutTraits.Fullscreen });
</span><span class="cx"> fullscreenPauseButton.playing = true;
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolsrewindbuttonrewindbuttonexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/rewind-button/rewind-button-expected.txt (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/rewind-button/rewind-button-expected.txt        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/rewind-button/rewind-button-expected.txt        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -6,7 +6,7 @@
</span><span class="cx"> PASS rewindButton.element.localName is &quot;button&quot;
</span><span class="cx"> PASS rewindButton.element.classList.contains(&quot;icon&quot;) is true
</span><span class="cx"> PASS rewindButton.element.classList.contains(&quot;rewind&quot;) is true
</span><del>-PASS rewindButton.iconName is &quot;rewind&quot;
</del><ins>+PASS rewindButton.iconName is Icons.Rewind
</ins><span class="cx"> PASS rewindButton.element.style.webkitMaskImage.includes(&quot;macOS/rewind@&quot;) became true
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolsrewindbuttonrewindbuttonhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/rewind-button/rewind-button.html (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/rewind-button/rewind-button.html        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/rewind-button/rewind-button.html        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -15,7 +15,7 @@
</span><span class="cx"> shouldBeEqualToString(&quot;rewindButton.element.localName&quot;, &quot;button&quot;);
</span><span class="cx"> shouldBeTrue('rewindButton.element.classList.contains(&quot;icon&quot;)');
</span><span class="cx"> shouldBeTrue('rewindButton.element.classList.contains(&quot;rewind&quot;)');
</span><del>-shouldBeEqualToString(&quot;rewindButton.iconName&quot;, `${Icons.Rewind}`);
</del><ins>+shouldBe(&quot;rewindButton.iconName&quot;, &quot;Icons.Rewind&quot;);
</ins><span class="cx"> 
</span><span class="cx"> shouldBecomeEqual('rewindButton.element.style.webkitMaskImage.includes(&quot;macOS/rewind@&quot;)', &quot;true&quot;, finishJSTest);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolsskipbackbuttonskipbackbuttonexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/skip-back-button/skip-back-button-expected.txt (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/skip-back-button/skip-back-button-expected.txt        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/skip-back-button/skip-back-button-expected.txt        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -6,7 +6,7 @@
</span><span class="cx"> PASS skipBackButton.element.localName is &quot;button&quot;
</span><span class="cx"> PASS skipBackButton.element.classList.contains(&quot;icon&quot;) is true
</span><span class="cx"> PASS skipBackButton.element.classList.contains(&quot;skip-back&quot;) is true
</span><del>-PASS skipBackButton.iconName is &quot;interval-skip-back&quot;
</del><ins>+PASS skipBackButton.iconName is Icons.SkipBack
</ins><span class="cx"> PASS skipBackButton.element.style.webkitMaskImage.includes(&quot;macOS/interval-skip-back@&quot;) became true
</span><span class="cx"> PASS iOSSkipBackButton.element.style.webkitMaskImage.includes(&quot;iOS/interval-skip-back@&quot;) became true
</span><span class="cx"> PASS successfullyParsed is true
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolsskipbackbuttonskipbackbuttonhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/skip-back-button/skip-back-button.html (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/skip-back-button/skip-back-button.html        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/skip-back-button/skip-back-button.html        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -13,7 +13,7 @@
</span><span class="cx"> shouldBeEqualToString(&quot;skipBackButton.element.localName&quot;, &quot;button&quot;);
</span><span class="cx"> shouldBeTrue('skipBackButton.element.classList.contains(&quot;icon&quot;)');
</span><span class="cx"> shouldBeTrue('skipBackButton.element.classList.contains(&quot;skip-back&quot;)');
</span><del>-shouldBeEqualToString(&quot;skipBackButton.iconName&quot;, `${Icons.SkipBack}`);
</del><ins>+shouldBe(&quot;skipBackButton.iconName&quot;, &quot;Icons.SkipBack&quot;);
</ins><span class="cx"> 
</span><span class="cx"> const iOSSkipBackButton = new SkipBackButton({ layoutTraits: LayoutTraits.iOS });
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolsstartbuttonstartbuttonexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/start-button/start-button-expected.txt (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/start-button/start-button-expected.txt        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/start-button/start-button-expected.txt        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -11,6 +11,7 @@
</span><span class="cx"> PASS startButton.element.lastElementChild.localName is &quot;img&quot;
</span><span class="cx"> PASS startButton.element.lastElementChild.src.includes('macOS/start@') is true
</span><span class="cx"> PASS iOSStartButton.element.lastElementChild.src.includes('iOS/start@') is true
</span><ins>+PASS startButton.element.getAttribute('aria-label') is &quot;Start&quot;
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolsstartbuttonstartbuttonhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/start-button/start-button.html (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/start-button/start-button.html        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/start-button/start-button.html        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -19,6 +19,7 @@
</span><span class="cx"> shouldBeTrue(&quot;iOSStartButton.element.lastElementChild.src.includes('iOS/start@')&quot;);
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+shouldBeEqualToString(&quot;startButton.element.getAttribute('aria-label')&quot;, &quot;Start&quot;);
</ins><span class="cx"> &lt;/script&gt;
</span><span class="cx"> &lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;/body&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolstracksbuttontracksbuttonexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/tracks-button/tracks-button-expected.txt (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/tracks-button/tracks-button-expected.txt        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/tracks-button/tracks-button-expected.txt        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -6,7 +6,7 @@
</span><span class="cx"> PASS tracksButton.element.localName is &quot;button&quot;
</span><span class="cx"> PASS tracksButton.element.classList.contains(&quot;icon&quot;) is true
</span><span class="cx"> PASS tracksButton.element.classList.contains(&quot;tracks&quot;) is true
</span><del>-PASS tracksButton.iconName is &quot;media-selection&quot;
</del><ins>+PASS tracksButton.iconName is Icons.Tracks
</ins><span class="cx"> PASS tracksButton.element.style.webkitMaskImage.includes(&quot;macOS/media-selection@&quot;) became true
</span><span class="cx"> PASS fullscreenTracksButton.element.style.webkitMaskImage.includes(&quot;macOS/media-selection-fullscreen@&quot;) became true
</span><span class="cx"> PASS successfullyParsed is true
</span></span></pre></div>
<a id="trunkLayoutTestsmediamodernmediacontrolstracksbuttontracksbuttonhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/modern-media-controls/tracks-button/tracks-button.html (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/modern-media-controls/tracks-button/tracks-button.html        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/media/modern-media-controls/tracks-button/tracks-button.html        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -13,7 +13,7 @@
</span><span class="cx"> shouldBeEqualToString(&quot;tracksButton.element.localName&quot;, &quot;button&quot;);
</span><span class="cx"> shouldBeTrue('tracksButton.element.classList.contains(&quot;icon&quot;)');
</span><span class="cx"> shouldBeTrue('tracksButton.element.classList.contains(&quot;tracks&quot;)');
</span><del>-shouldBeEqualToString(&quot;tracksButton.iconName&quot;, `${Icons.Tracks}`);
</del><ins>+shouldBe(&quot;tracksButton.iconName&quot;, &quot;Icons.Tracks&quot;);
</ins><span class="cx"> 
</span><span class="cx"> const fullscreenTracksButton = new TracksButton({ layoutTraits: LayoutTraits.macOS | LayoutTraits.Fullscreen });
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/Source/WebCore/ChangeLog        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -1,3 +1,26 @@
</span><ins>+2017-03-25  Aaron Chu  &lt;aaron_chu@apple.com&gt;
+
+        AX: Media controls are unlabeled
+        https://bugs.webkit.org/show_bug.cgi?id=169947
+        &lt;rdar://problem/30153323&gt;
+
+        Reviewed by Antoine Quint.
+
+        Added a &quot;label&quot; property for Icons, which are used to set
+        the aria-label for the controls in modern media controls.
+
+        Test: Addition to all existing modern media controls tests.
+
+        * English.lproj/modern-media-controls-localized-strings.js:
+        * Modules/modern-media-controls/controls/icon-button.js:
+        (IconButton.prototype.set iconName):
+        (IconButton.prototype.handleEvent):
+        (IconButton.prototype._loadImage):
+        * Modules/modern-media-controls/controls/icon-service.js:
+        * Modules/modern-media-controls/controls/start-button.js:
+        (StartButton):
+        * Modules/modern-media-controls/js-files:
+
</ins><span class="cx"> 2017-03-25  Carlos Garcia Campos  &lt;cgarcia@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [XDG] MIMETypeRegistry::getMIMETypeForExtension should return a null/empty string when mime type is unknown
</span></span></pre></div>
<a id="trunkSourceWebCoreEnglishlprojmodernmediacontrolslocalizedstringsjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/English.lproj/modern-media-controls-localized-strings.js (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/English.lproj/modern-media-controls-localized-strings.js        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/Source/WebCore/English.lproj/modern-media-controls-localized-strings.js        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -1,10 +1,29 @@
</span><span class="cx"> const UIStrings = {
</span><span class="cx">     &quot;AirPlay&quot;: &quot;AirPlay&quot;,
</span><span class="cx">     &quot;Audio&quot;: &quot;Audio&quot;,
</span><ins>+    &quot;Enter Fullscreen&quot;: &quot;Enter Fullscreen&quot;,
+    &quot;Enter Picture in Picture&quot;: &quot;Enter Picture in Picture&quot;,
+    &quot;Exit Full Screen&quot;: &quot;Exit Full Screen&quot;,
</ins><span class="cx">     &quot;Error&quot;: &quot;Error&quot;,
</span><ins>+    &quot;Forward&quot;: &quot;Forward&quot;,
+    &quot;Invalid&quot;: &quot;Invalid&quot;,
+    &quot;Skip Back 30 seconds&quot;: &quot;Skip Back 30 seconds&quot;,
</ins><span class="cx">     &quot;Live Broadcast&quot;: &quot;Live Broadcast&quot;,
</span><span class="cx">     &quot;Loading&quot;: &quot;Loading&quot;,
</span><ins>+    &quot;Media Selection&quot;: &quot;Media Selection&quot;,
+    &quot;Mute&quot;: &quot;Mute&quot;,
+    &quot;Pause&quot;: &quot;Pause&quot;,
+    &quot;Picture in Picture&quot;: &quot;Picture in Picture&quot;,
+    &quot;Play&quot;: &quot;Play&quot;,
+    &quot;Rewind&quot;: &quot;Rewind&quot;,
+    &quot;Scale to Fill&quot;: &quot;Scale to Fill&quot;,
+    &quot;Scale to Fit&quot;: &quot;Scale to Fit&quot;,
</ins><span class="cx">     &quot;Subtitles&quot;: &quot;Subtitles&quot;,
</span><ins>+    &quot;Start&quot;: &quot;Start&quot;,
</ins><span class="cx">     &quot;This video is playing in Picture in Picture&quot;: &quot;This video is playing in Picture in Picture&quot;,
</span><del>-    &quot;This video is playing on your Apple TV&quot;: &quot;This video is playing on your Apple TV&quot;
</del><ins>+    &quot;This video is playing on your Apple TV&quot;: &quot;This video is playing on your Apple TV&quot;,
+    &quot;Unmute&quot;: &quot;Unmute&quot;,
+    &quot;Volume&quot;: &quot;Volume&quot;,
+    &quot;Volume Down&quot;: &quot;Volume Down&quot;,
+    &quot;Volume Up&quot;: &quot;Volume Up&quot;
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmodernmediacontrolscontrolsiconbuttonjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/modern-media-controls/controls/icon-button.js (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/modern-media-controls/controls/icon-button.js        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/Source/WebCore/Modules/modern-media-controls/controls/icon-button.js        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -55,6 +55,7 @@
</span><span class="cx">             return;
</span><span class="cx"> 
</span><span class="cx">         this._loadImage(iconName);
</span><ins>+        this.element.setAttribute(&quot;aria-label&quot;, iconName.label);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     get on()
</span><span class="lines">@@ -80,7 +81,7 @@
</span><span class="cx">             if (event.type === &quot;load&quot;)
</span><span class="cx">                 this._imageDidLoad();
</span><span class="cx">             else if (event.type === &quot;error&quot;)
</span><del>-                console.error(`IconButton failed to load, iconName = ${this._iconName}, layoutTraits = ${this._iconLayoutTraits}, src = ${this._image.src}`);
</del><ins>+                console.error(`IconButton failed to load, iconName = ${this._iconName.name}, layoutTraits = ${this._iconLayoutTraits}, src = ${this._image.src}`);
</ins><span class="cx">         } else
</span><span class="cx">             super.handleEvent(event);
</span><span class="cx">     }
</span><span class="lines">@@ -101,8 +102,9 @@
</span><span class="cx">             this._image.removeEventListener(&quot;load&quot;, this);
</span><span class="cx"> 
</span><span class="cx">         this._iconLayoutTraits = this.layoutTraits;
</span><del>-        this._image = iconService.imageForIconNameAndLayoutTraits(iconName, this._iconLayoutTraits);
</del><span class="cx"> 
</span><ins>+        this._image = iconService.imageForIconNameAndLayoutTraits(iconName.name, this._iconLayoutTraits);
+
</ins><span class="cx">         this._iconName = iconName;
</span><span class="cx"> 
</span><span class="cx">         if (this._image.complete)
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmodernmediacontrolscontrolsiconservicejs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/modern-media-controls/controls/icon-service.js (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/modern-media-controls/controls/icon-service.js        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/Source/WebCore/Modules/modern-media-controls/controls/icon-service.js        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -24,30 +24,30 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> const Icons = {
</span><del>-    Airplay         : &quot;airplay&quot;,
-    AirplayPlacard  : &quot;airplay-placard&quot;,
-    EnterFullscreen : &quot;enter-fullscreen&quot;,
-    EnterPiP        : &quot;pip-in&quot;,
-    ExitFullscreen  : &quot;exit-fullscreen&quot;,
-    Forward         : &quot;forward&quot;,
-    InvalidPlacard  : &quot;invalid-placard&quot;,
-    Pause           : &quot;pause&quot;,
-    PiPPlacard      : &quot;pip-placard&quot;,
-    Play            : &quot;play&quot;,
-    Rewind          : &quot;rewind&quot;,
-    ScaleToFill     : &quot;scale-to-fill&quot;,
-    ScaleToFit      : &quot;scale-to-fit&quot;,
-    SkipBack        : &quot;interval-skip-back&quot;,
-    Start           : &quot;start&quot;,
-    Tracks          : &quot;media-selection&quot;,
-    Volume          : &quot;volume&quot;,
-    VolumeDown      : &quot;volume-down&quot;,
-    VolumeMuted     : &quot;volume-mute&quot;,
-    VolumeUp        : &quot;volume-up&quot;
</del><ins>+    Airplay         : { name: &quot;airplay&quot;, label: UIString(&quot;AirPlay&quot;) },
+    AirplayPlacard  : { name: &quot;airplay-placard&quot;, label: UIString(&quot;AirPlay&quot;) },
+    EnterFullscreen : { name: &quot;enter-fullscreen&quot;, label: UIString(&quot;Enter Full Screen&quot;) },
+    EnterPiP        : { name: &quot;pip-in&quot;, label: UIString(&quot;Enter Picture in Picture&quot;) },
+    ExitFullscreen  : { name: &quot;exit-fullscreen&quot;, label: UIString(&quot;Exit Full Screen&quot;) },
+    Forward         : { name: &quot;forward&quot;, label: UIString(&quot;Forward&quot;) },
+    InvalidPlacard  : { name: &quot;invalid-placard&quot;, label: UIString(&quot;Invalid&quot;) },
+    Pause           : { name: &quot;pause&quot;, label: UIString(&quot;Pause&quot;) },
+    PiPPlacard      : { name: &quot;pip-placard&quot;, label: UIString(&quot;Picture in Picture&quot;) },
+    Play            : { name: &quot;play&quot;, label: UIString(&quot;Play&quot;) },
+    Rewind          : { name: &quot;rewind&quot;, label: UIString(&quot;Rewind&quot;) },
+    ScaleToFill     : { name: &quot;scale-to-fill&quot;, label: UIString(&quot;Scale to Fill&quot;) },
+    ScaleToFit      : { name: &quot;scale-to-fit&quot;, label: UIString(&quot;Scale to Fit&quot;) },
+    SkipBack        : { name: &quot;interval-skip-back&quot;, label: UIString(&quot;Skip Back 30 seconds&quot;) },
+    Start           : { name: &quot;start&quot;, label: UIString(&quot;Start&quot;) },
+    Tracks          : { name: &quot;media-selection&quot;, label: UIString(&quot;Media Selection&quot;) },
+    Volume          : { name: &quot;volume&quot;, label: UIString(&quot;Mute&quot;) },
+    VolumeDown      : { name: &quot;volume-down&quot;, label: UIString(&quot;Volume Down&quot;) },
+    VolumeMuted     : {name: &quot;volume-mute&quot;, label: UIString(&quot;Unmute&quot;) },
+    VolumeUp        : { name: &quot;volume-up&quot;, label: UIString(&quot;Volume Up&quot;) }
</ins><span class="cx"> };
</span><span class="cx"> 
</span><del>-const IconsWithFullscreenVariants = [Icons.Airplay, Icons.Tracks, Icons.Pause, Icons.EnterPiP, Icons.Play, Icons.VolumeDown, Icons.VolumeUp];
-const IconsWithCompactVariants = [Icons.Play, Icons.Pause, Icons.SkipBack, Icons.Volume, Icons.VolumeMuted, Icons.Airplay, Icons.EnterPiP, Icons.Tracks, Icons.EnterFullscreen];
</del><ins>+const IconsWithFullscreenVariants = [Icons.Airplay.name, Icons.Tracks.name, Icons.Pause.name, Icons.EnterPiP.name, Icons.Play.name, Icons.VolumeDown.name, Icons.VolumeUp.name];
+const IconsWithCompactVariants = [Icons.Play.name, Icons.Pause.name, Icons.SkipBack.name, Icons.Volume.name, Icons.VolumeMuted.name, Icons.Airplay.name, Icons.EnterPiP.name, Icons.Tracks.name, Icons.EnterFullscreen.name];
</ins><span class="cx"> 
</span><span class="cx"> const iconService = new class IconService {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmodernmediacontrolscontrolsstartbuttonjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/modern-media-controls/controls/start-button.js (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/modern-media-controls/controls/start-button.js        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/Source/WebCore/Modules/modern-media-controls/controls/start-button.js        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -36,7 +36,8 @@
</span><span class="cx">         background.className = &quot;background&quot;;
</span><span class="cx"> 
</span><span class="cx">         const image = this.element.appendChild(new Image);
</span><del>-        image.src = iconService.imageForIconNameAndLayoutTraits(Icons.Start, this.layoutTraits).src;
</del><ins>+        image.src = iconService.imageForIconNameAndLayoutTraits(Icons.Start.name, this.layoutTraits).src;
+        this.element.setAttribute(&quot;aria-label&quot;, Icons.Start.label);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmodernmediacontrolsjsfiles"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/modern-media-controls/js-files (214399 => 214400)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/modern-media-controls/js-files        2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/Source/WebCore/Modules/modern-media-controls/js-files        2017-03-25 17:45:22 UTC (rev 214400)
</span><span class="lines">@@ -1,3 +1,4 @@
</span><ins>+main.js
</ins><span class="cx"> gesture-recognizers/gesture-recognizer.js
</span><span class="cx"> gesture-recognizers/tap.js
</span><span class="cx"> gesture-recognizers/pinch.js
</span><span class="lines">@@ -61,4 +62,4 @@
</span><span class="cx"> media/volume-support.js
</span><span class="cx"> media/volume-up-support.js
</span><span class="cx"> media/media-controller.js
</span><del>-main.js
</del><ins>+
</ins></span></pre>
</div>
</div>

</body>
</html>