<!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
<rdar://problem/30153323>
Patch by Aaron Chu <aaron_chu@apple.com> on 2017-03-25
Reviewed by Antoine Quint.
Source/WebCore:
Added a "label" 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 <aaron_chu@apple.com>
+
+ AX: Media controls are unlabeled
+ https://bugs.webkit.org/show_bug.cgi?id=169947
+ <rdar://problem/30153323>
+
+ 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 <cgarcia@igalia.com>
</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 "button"
</span><span class="cx"> PASS airplayButton.element.classList.contains("icon") is true
</span><span class="cx"> PASS airplayButton.element.classList.contains("airplay") is true
</span><del>-PASS airplayButton.iconName is "airplay"
</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 ""
</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 "AirPlay"
</ins><span class="cx"> _frameDidFire() - end
</span><span class="cx"> PASS airplayButton.element.style.webkitMaskImage.includes("macOS/airplay@") 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("airplayButton.element.localName", "button");
</span><span class="cx"> shouldBeTrue('airplayButton.element.classList.contains("icon")');
</span><span class="cx"> shouldBeTrue('airplayButton.element.classList.contains("airplay")');
</span><del>-shouldBeEqualToString("airplayButton.iconName", `${Icons.Airplay}`);
</del><ins>+shouldBe("airplayButton.iconName", "Icons.Airplay");
</ins><span class="cx"> shouldBe("airplayButton.width", "0");
</span><span class="cx"> shouldBe("airplayButton.height", "0");
</span><del>-shouldBe("airplayButton._image", "iconService.imageForIconNameAndLayoutTraits(Icons.Airplay, LayoutTraits.macOS)");
</del><ins>+shouldBe("airplayButton._image", "iconService.imageForIconNameAndLayoutTraits(Icons.Airplay.name, LayoutTraits.macOS)");
</ins><span class="cx"> shouldNotBeEqualToString("airplayButton._image.src", "");
</span><span class="cx"> shouldBeFalse("airplayButton._image.complete");
</span><span class="cx">
</span><span class="lines">@@ -42,6 +42,7 @@
</span><span class="cx"> debug("frameDidFire()");
</span><span class="cx"> shouldBeFalse("dirtyNodes.has(airplayButton)");
</span><span class="cx"> shouldBeFalse("airplayButton.needsLayout");
</span><ins>+ shouldBeEqualToString("airplayButton.element.getAttribute('aria-label')", "AirPlay");
</ins><span class="cx"> }
</span><span class="cx"> shouldBecomeEqual('airplayButton.element.style.webkitMaskImage.includes("macOS/airplay@")', "true", finishJSTest);
</span><span class="cx"> // shouldBecomeEqual('airplayButton.element.style.webkitMaskImage.includes("macOS/airplay@")', "true", () => {
</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 "button"
</span><span class="cx"> PASS forwardButton.element.classList.contains("icon") is true
</span><span class="cx"> PASS forwardButton.element.classList.contains("forward") is true
</span><del>-PASS forwardButton.iconName is "forward"
</del><ins>+PASS forwardButton.iconName is Icons.Forward
</ins><span class="cx"> PASS forwardButton.element.style.webkitMaskImage.includes("macOS/forward@") 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("forwardButton.element.localName", "button");
</span><span class="cx"> shouldBeTrue('forwardButton.element.classList.contains("icon")');
</span><span class="cx"> shouldBeTrue('forwardButton.element.classList.contains("forward")');
</span><del>-shouldBeEqualToString("forwardButton.iconName", `${Icons.Forward}`);
</del><ins>+shouldBe("forwardButton.iconName", "Icons.Forward");
</ins><span class="cx">
</span><span class="cx"> shouldBecomeEqual('forwardButton.element.style.webkitMaskImage.includes("macOS/forward@")', "true", 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 "button"
</span><span class="cx"> PASS enterFullscreenButton.element.classList.contains("icon") is true
</span><span class="cx"> PASS enterFullscreenButton.element.classList.contains("fullscreen") is true
</span><del>-PASS enterFullscreenButton.iconName is "enter-fullscreen"
-PASS exitFullscreenButton.iconName is "exit-fullscreen"
</del><ins>+PASS enterFullscreenButton.iconName is Icons.EnterFullscreen
+PASS exitFullscreenButton.iconName is Icons.ExitFullscreen
</ins><span class="cx"> PASS enterFullscreenButton.element.style.webkitMaskImage.includes("macOS/enter-fullscreen@") is true
</span><span class="cx"> PASS iOSEnterFullscreenButton.element.style.webkitMaskImage.includes("iOS/enter-fullscreen@") is true
</span><span class="cx"> PASS exitFullscreenButton.element.style.webkitMaskImage.includes("macOS/exit-fullscreen@") 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("enterFullscreenButton.element.localName", "button");
</span><span class="cx"> shouldBeTrue('enterFullscreenButton.element.classList.contains("icon")');
</span><span class="cx"> shouldBeTrue('enterFullscreenButton.element.classList.contains("fullscreen")');
</span><del>-shouldBeEqualToString("enterFullscreenButton.iconName", `${Icons.EnterFullscreen}`);
</del><ins>+shouldBe("enterFullscreenButton.iconName", "Icons.EnterFullscreen");
</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("exitFullscreenButton.iconName", `${Icons.ExitFullscreen}`);
</del><ins>+shouldBe("exitFullscreenButton.iconName", "Icons.ExitFullscreen");
</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 "22px"
</span><span class="cx"> PASS iconButton.element.style.height is "24px"
</span><span class="cx"> PASS iconButton.element.style.webkitMaskSize is "22px 24px"
</span><ins>+PASS iconButton.element.getAttribute('aria-label') is "Pause"
</ins><span class="cx">
</span><span class="cx"> Setting start icon
</span><span class="cx"> PASS iconButton.element.style.webkitMaskImage.includes("macOS/start") is true
</span><span class="lines">@@ -24,6 +25,7 @@
</span><span class="cx"> PASS iconButton.element.style.width is "70px"
</span><span class="cx"> PASS iconButton.element.style.height is "70px"
</span><span class="cx"> PASS iconButton.element.style.webkitMaskSize is "70px 70px"
</span><ins>+PASS iconButton.element.getAttribute('aria-label') is "Start"
</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("iconButton.element.style.height", "24px");
</span><span class="cx"> shouldBeEqualToString("iconButton.element.style.webkitMaskSize", "22px 24px");
</span><span class="cx">
</span><ins>+ shouldBeEqualToString("iconButton.element.getAttribute('aria-label')", `${Icons.Pause.label}`);
</ins><span class="cx"> debug("");
</span><span class="cx"> debug("Setting start icon");
</span><span class="cx"> iconButton.iconName = Icons.Start;
</span><span class="lines">@@ -49,6 +50,7 @@
</span><span class="cx"> shouldBeEqualToString("iconButton.element.style.width", "70px");
</span><span class="cx"> shouldBeEqualToString("iconButton.element.style.height", "70px");
</span><span class="cx"> shouldBeEqualToString("iconButton.element.style.webkitMaskSize", "70px 70px");
</span><ins>+ shouldBeEqualToString("iconButton.element.getAttribute('aria-label')", `${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("macOS/pause@") is true
-PASS iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.iOS).src.includes("iOS/pause@") is true
-PASS iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.macOS | LayoutTraits.Fullscreen).src.includes("macOS/pause-fullscreen@") is true
</del><ins>+PASS iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.macOS).src.includes("macOS/pause@") is true
+PASS iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.iOS).src.includes("iOS/pause@") is true
+PASS iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.macOS | LayoutTraits.Fullscreen).src.includes("macOS/pause-fullscreen@") 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"> <script src="../../../resources/js-test-pre.js"></script>
</span><del>-<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/layout-node.js" type="text/javascript"></script>
-<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/layout-item.js" type="text/javascript"></script>
-<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/icon-service.js" type="text/javascript"></script>
</del><ins>+<script src="../resources/media-controls-loader.js" type="text/javascript"></script>
</ins><span class="cx"> <body>
</span><span class="cx"> <script type="text/javascript">
</span><span class="cx">
</span><span class="lines">@@ -10,18 +8,18 @@
</span><span class="cx"> iconService.directoryPath = "../../../../Source/WebCore/Modules/modern-media-controls/images";
</span><span class="cx">
</span><span class="cx"> debug("Checking path to images is computed according to traits");
</span><del>-shouldBeTrue('iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.macOS).src.includes("macOS/pause@")');
-shouldBeTrue('iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.iOS).src.includes("iOS/pause@")');
-shouldBeTrue('iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.macOS | LayoutTraits.Fullscreen).src.includes("macOS/pause-fullscreen@")');
</del><ins>+shouldBeTrue('iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.macOS).src.includes("macOS/pause@")');
+shouldBeTrue('iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.iOS).src.includes("iOS/pause@")');
+shouldBeTrue('iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.macOS | LayoutTraits.Fullscreen).src.includes("macOS/pause-fullscreen@")');
</ins><span class="cx">
</span><span class="cx"> debug("");
</span><span class="cx"> debug("Checking fullscreen or compact layout traits are ignored on iOS");
</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("");
</span><span class="cx"> debug("Checking requested images are cached");
</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"> </script>
</span><span class="cx"> <script src="../../../resources/js-test-post.js"></script>
</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 "button"
</span><span class="cx"> PASS muteButton.element.classList.contains("icon") is true
</span><span class="cx"> PASS muteButton.element.classList.contains("mute") is true
</span><del>-PASS muteButton.iconName is "volume"
</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 "volume-mute"
</del><ins>+PASS mutedButton.iconName is Icons.VolumeMuted
</ins><span class="cx"> PASS muteButton.element.style.webkitMaskImage.includes("macOS/volume@") became true
</span><span class="cx"> PASS mutedButton.element.style.webkitMaskImage.includes("macOS/volume-mute@") 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("muteButton.element.localName", "button");
</span><span class="cx"> shouldBeTrue('muteButton.element.classList.contains("icon")');
</span><span class="cx"> shouldBeTrue('muteButton.element.classList.contains("mute")');
</span><del>-shouldBeEqualToString("muteButton.iconName", `${Icons.Volume}`);
</del><ins>+shouldBe("muteButton.iconName", "Icons.Volume");
</ins><span class="cx"> shouldBeFalse("muteButton.muted");
</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("mutedButton.muted");
</span><del>-shouldBeEqualToString("mutedButton.iconName", `${Icons.VolumeMuted}`);
</del><ins>+shouldBe("mutedButton.iconName", "Icons.VolumeMuted");
</ins><span class="cx">
</span><span class="cx"> shouldBecomeEqual('muteButton.element.style.webkitMaskImage.includes("macOS/volume@")', "true", () => {
</span><span class="cx"> shouldBecomeEqual('mutedButton.element.style.webkitMaskImage.includes("macOS/volume-mute@")', "true", 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 "button"
</span><span class="cx"> PASS pipButton.element.classList.contains("icon") is true
</span><span class="cx"> PASS pipButton.element.classList.contains("pip") is true
</span><del>-PASS pipButton.iconName is "pip-in"
</del><ins>+PASS pipButton.iconName is Icons.EnterPiP
</ins><span class="cx"> PASS pipButton.element.style.webkitMaskImage.includes("macOS/pip-in@") became true
</span><span class="cx"> PASS iOSPiPButton.element.style.webkitMaskImage.includes("iOS/pip-in@") 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("pipButton.element.localName", "button");
</span><span class="cx"> shouldBeTrue('pipButton.element.classList.contains("icon")');
</span><span class="cx"> shouldBeTrue('pipButton.element.classList.contains("pip")');
</span><del>-shouldBeEqualToString("pipButton.iconName", `${Icons.EnterPiP}`);
</del><ins>+shouldBe("pipButton.iconName", "Icons.EnterPiP");
</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 "button"
</span><span class="cx"> PASS playButton.element.classList.contains("icon") is true
</span><span class="cx"> PASS playButton.element.classList.contains("play-pause") is true
</span><del>-PASS playButton.iconName is "play"
</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 "pause"
</del><ins>+PASS pauseButton.iconName is Icons.Pause
</ins><span class="cx"> PASS playButton.element.style.webkitMaskImage.includes("macOS/play@") became true
</span><span class="cx"> PASS pauseButton.element.style.webkitMaskImage.includes("macOS/pause@") became true
</span><span class="cx"> PASS iOSPlayButton.element.style.webkitMaskImage.includes("iOS/play@") 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("playButton.element.localName", "button");
</span><span class="cx"> shouldBeTrue('playButton.element.classList.contains("icon")');
</span><span class="cx"> shouldBeTrue('playButton.element.classList.contains("play-pause")');
</span><del>-shouldBeEqualToString("playButton.iconName", `${Icons.Play}`);
</del><ins>+shouldBe("playButton.iconName", "Icons.Play");
</ins><span class="cx"> shouldBeFalse("playButton.playing");
</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("pauseButton.playing");
</span><del>-shouldBeEqualToString("pauseButton.iconName", `${Icons.Pause}`);
</del><ins>+shouldBe("pauseButton.iconName", "Icons.Pause");
</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 "button"
</span><span class="cx"> PASS rewindButton.element.classList.contains("icon") is true
</span><span class="cx"> PASS rewindButton.element.classList.contains("rewind") is true
</span><del>-PASS rewindButton.iconName is "rewind"
</del><ins>+PASS rewindButton.iconName is Icons.Rewind
</ins><span class="cx"> PASS rewindButton.element.style.webkitMaskImage.includes("macOS/rewind@") 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("rewindButton.element.localName", "button");
</span><span class="cx"> shouldBeTrue('rewindButton.element.classList.contains("icon")');
</span><span class="cx"> shouldBeTrue('rewindButton.element.classList.contains("rewind")');
</span><del>-shouldBeEqualToString("rewindButton.iconName", `${Icons.Rewind}`);
</del><ins>+shouldBe("rewindButton.iconName", "Icons.Rewind");
</ins><span class="cx">
</span><span class="cx"> shouldBecomeEqual('rewindButton.element.style.webkitMaskImage.includes("macOS/rewind@")', "true", 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 "button"
</span><span class="cx"> PASS skipBackButton.element.classList.contains("icon") is true
</span><span class="cx"> PASS skipBackButton.element.classList.contains("skip-back") is true
</span><del>-PASS skipBackButton.iconName is "interval-skip-back"
</del><ins>+PASS skipBackButton.iconName is Icons.SkipBack
</ins><span class="cx"> PASS skipBackButton.element.style.webkitMaskImage.includes("macOS/interval-skip-back@") became true
</span><span class="cx"> PASS iOSSkipBackButton.element.style.webkitMaskImage.includes("iOS/interval-skip-back@") 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("skipBackButton.element.localName", "button");
</span><span class="cx"> shouldBeTrue('skipBackButton.element.classList.contains("icon")');
</span><span class="cx"> shouldBeTrue('skipBackButton.element.classList.contains("skip-back")');
</span><del>-shouldBeEqualToString("skipBackButton.iconName", `${Icons.SkipBack}`);
</del><ins>+shouldBe("skipBackButton.iconName", "Icons.SkipBack");
</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 "img"
</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 "Start"
</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("iOSStartButton.element.lastElementChild.src.includes('iOS/start@')");
</span><span class="cx">
</span><span class="cx">
</span><ins>+shouldBeEqualToString("startButton.element.getAttribute('aria-label')", "Start");
</ins><span class="cx"> </script>
</span><span class="cx"> <script src="../../../resources/js-test-post.js"></script>
</span><span class="cx"> </body>
</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 "button"
</span><span class="cx"> PASS tracksButton.element.classList.contains("icon") is true
</span><span class="cx"> PASS tracksButton.element.classList.contains("tracks") is true
</span><del>-PASS tracksButton.iconName is "media-selection"
</del><ins>+PASS tracksButton.iconName is Icons.Tracks
</ins><span class="cx"> PASS tracksButton.element.style.webkitMaskImage.includes("macOS/media-selection@") became true
</span><span class="cx"> PASS fullscreenTracksButton.element.style.webkitMaskImage.includes("macOS/media-selection-fullscreen@") 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("tracksButton.element.localName", "button");
</span><span class="cx"> shouldBeTrue('tracksButton.element.classList.contains("icon")');
</span><span class="cx"> shouldBeTrue('tracksButton.element.classList.contains("tracks")');
</span><del>-shouldBeEqualToString("tracksButton.iconName", `${Icons.Tracks}`);
</del><ins>+shouldBe("tracksButton.iconName", "Icons.Tracks");
</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 <aaron_chu@apple.com>
+
+ AX: Media controls are unlabeled
+ https://bugs.webkit.org/show_bug.cgi?id=169947
+ <rdar://problem/30153323>
+
+ Reviewed by Antoine Quint.
+
+ Added a "label" 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 <cgarcia@igalia.com>
</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"> "AirPlay": "AirPlay",
</span><span class="cx"> "Audio": "Audio",
</span><ins>+ "Enter Fullscreen": "Enter Fullscreen",
+ "Enter Picture in Picture": "Enter Picture in Picture",
+ "Exit Full Screen": "Exit Full Screen",
</ins><span class="cx"> "Error": "Error",
</span><ins>+ "Forward": "Forward",
+ "Invalid": "Invalid",
+ "Skip Back 30 seconds": "Skip Back 30 seconds",
</ins><span class="cx"> "Live Broadcast": "Live Broadcast",
</span><span class="cx"> "Loading": "Loading",
</span><ins>+ "Media Selection": "Media Selection",
+ "Mute": "Mute",
+ "Pause": "Pause",
+ "Picture in Picture": "Picture in Picture",
+ "Play": "Play",
+ "Rewind": "Rewind",
+ "Scale to Fill": "Scale to Fill",
+ "Scale to Fit": "Scale to Fit",
</ins><span class="cx"> "Subtitles": "Subtitles",
</span><ins>+ "Start": "Start",
</ins><span class="cx"> "This video is playing in Picture in Picture": "This video is playing in Picture in Picture",
</span><del>- "This video is playing on your Apple TV": "This video is playing on your Apple TV"
</del><ins>+ "This video is playing on your Apple TV": "This video is playing on your Apple TV",
+ "Unmute": "Unmute",
+ "Volume": "Volume",
+ "Volume Down": "Volume Down",
+ "Volume Up": "Volume Up"
</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("aria-label", 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 === "load")
</span><span class="cx"> this._imageDidLoad();
</span><span class="cx"> else if (event.type === "error")
</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("load", 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 : "airplay",
- AirplayPlacard : "airplay-placard",
- EnterFullscreen : "enter-fullscreen",
- EnterPiP : "pip-in",
- ExitFullscreen : "exit-fullscreen",
- Forward : "forward",
- InvalidPlacard : "invalid-placard",
- Pause : "pause",
- PiPPlacard : "pip-placard",
- Play : "play",
- Rewind : "rewind",
- ScaleToFill : "scale-to-fill",
- ScaleToFit : "scale-to-fit",
- SkipBack : "interval-skip-back",
- Start : "start",
- Tracks : "media-selection",
- Volume : "volume",
- VolumeDown : "volume-down",
- VolumeMuted : "volume-mute",
- VolumeUp : "volume-up"
</del><ins>+ Airplay : { name: "airplay", label: UIString("AirPlay") },
+ AirplayPlacard : { name: "airplay-placard", label: UIString("AirPlay") },
+ EnterFullscreen : { name: "enter-fullscreen", label: UIString("Enter Full Screen") },
+ EnterPiP : { name: "pip-in", label: UIString("Enter Picture in Picture") },
+ ExitFullscreen : { name: "exit-fullscreen", label: UIString("Exit Full Screen") },
+ Forward : { name: "forward", label: UIString("Forward") },
+ InvalidPlacard : { name: "invalid-placard", label: UIString("Invalid") },
+ Pause : { name: "pause", label: UIString("Pause") },
+ PiPPlacard : { name: "pip-placard", label: UIString("Picture in Picture") },
+ Play : { name: "play", label: UIString("Play") },
+ Rewind : { name: "rewind", label: UIString("Rewind") },
+ ScaleToFill : { name: "scale-to-fill", label: UIString("Scale to Fill") },
+ ScaleToFit : { name: "scale-to-fit", label: UIString("Scale to Fit") },
+ SkipBack : { name: "interval-skip-back", label: UIString("Skip Back 30 seconds") },
+ Start : { name: "start", label: UIString("Start") },
+ Tracks : { name: "media-selection", label: UIString("Media Selection") },
+ Volume : { name: "volume", label: UIString("Mute") },
+ VolumeDown : { name: "volume-down", label: UIString("Volume Down") },
+ VolumeMuted : {name: "volume-mute", label: UIString("Unmute") },
+ VolumeUp : { name: "volume-up", label: UIString("Volume Up") }
</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 = "background";
</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("aria-label", 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>