Diff
Modified: trunk/LayoutTests/ChangeLog (214399 => 214400)
--- trunk/LayoutTests/ChangeLog 2017-03-25 14:44:26 UTC (rev 214399)
+++ trunk/LayoutTests/ChangeLog 2017-03-25 17:45:22 UTC (rev 214400)
@@ -1,3 +1,36 @@
+2017-03-25 Aaron Chu <aaron_...@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:
+
2017-03-25 Carlos Garcia Campos <cgar...@igalia.com>
Unreviewed GTK+ gardening. Update expectations of several tests.
Modified: trunk/LayoutTests/media/modern-media-controls/airplay-button/airplay-button-expected.txt (214399 => 214400)
--- 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)
@@ -21,10 +21,10 @@
PASS airplayButton.element.localName is "button"
PASS airplayButton.element.classList.contains("icon") is true
PASS airplayButton.element.classList.contains("airplay") is true
-PASS airplayButton.iconName is "airplay"
+PASS airplayButton.iconName is Icons.Airplay
FAIL airplayButton.width should be 0. Was 25.
FAIL airplayButton.height should be 0. Was 22.
-PASS airplayButton._image is iconService.imageForIconNameAndLayoutTraits(Icons.Airplay, LayoutTraits.macOS)
+PASS airplayButton._image is iconService.imageForIconNameAndLayoutTraits(Icons.Airplay.name, LayoutTraits.macOS)
PASS airplayButton._image.src is not ""
FAIL airplayButton._image.complete should be false. Was true.
PASS airplayButton.width is not 0
@@ -46,6 +46,7 @@
frameDidFire()
PASS dirtyNodes.has(airplayButton) is false
PASS airplayButton.needsLayout is false
+PASS airplayButton.element.getAttribute('aria-label') is "AirPlay"
_frameDidFire() - end
PASS airplayButton.element.style.webkitMaskImage.includes("macOS/airplay@") became true
PASS successfullyParsed is true
Modified: trunk/LayoutTests/media/modern-media-controls/airplay-button/airplay-button.html (214399 => 214400)
--- 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)
@@ -15,10 +15,10 @@
shouldBeEqualToString("airplayButton.element.localName", "button");
shouldBeTrue('airplayButton.element.classList.contains("icon")');
shouldBeTrue('airplayButton.element.classList.contains("airplay")');
-shouldBeEqualToString("airplayButton.iconName", `${Icons.Airplay}`);
+shouldBe("airplayButton.iconName", "Icons.Airplay");
shouldBe("airplayButton.width", "0");
shouldBe("airplayButton.height", "0");
-shouldBe("airplayButton._image", "iconService.imageForIconNameAndLayoutTraits(Icons.Airplay, LayoutTraits.macOS)");
+shouldBe("airplayButton._image", "iconService.imageForIconNameAndLayoutTraits(Icons.Airplay.name, LayoutTraits.macOS)");
shouldNotBeEqualToString("airplayButton._image.src", "");
shouldBeFalse("airplayButton._image.complete");
@@ -42,6 +42,7 @@
debug("frameDidFire()");
shouldBeFalse("dirtyNodes.has(airplayButton)");
shouldBeFalse("airplayButton.needsLayout");
+ shouldBeEqualToString("airplayButton.element.getAttribute('aria-label')", "AirPlay");
}
shouldBecomeEqual('airplayButton.element.style.webkitMaskImage.includes("macOS/airplay@")', "true", finishJSTest);
// shouldBecomeEqual('airplayButton.element.style.webkitMaskImage.includes("macOS/airplay@")', "true", () => {
Modified: trunk/LayoutTests/media/modern-media-controls/forward-button/forward-button-expected.txt (214399 => 214400)
--- 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)
@@ -6,7 +6,7 @@
PASS forwardButton.element.localName is "button"
PASS forwardButton.element.classList.contains("icon") is true
PASS forwardButton.element.classList.contains("forward") is true
-PASS forwardButton.iconName is "forward"
+PASS forwardButton.iconName is Icons.Forward
PASS forwardButton.element.style.webkitMaskImage.includes("macOS/forward@") became true
PASS successfullyParsed is true
Modified: trunk/LayoutTests/media/modern-media-controls/forward-button/forward-button.html (214399 => 214400)
--- 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)
@@ -13,7 +13,7 @@
shouldBeEqualToString("forwardButton.element.localName", "button");
shouldBeTrue('forwardButton.element.classList.contains("icon")');
shouldBeTrue('forwardButton.element.classList.contains("forward")');
-shouldBeEqualToString("forwardButton.iconName", `${Icons.Forward}`);
+shouldBe("forwardButton.iconName", "Icons.Forward");
shouldBecomeEqual('forwardButton.element.style.webkitMaskImage.includes("macOS/forward@")', "true", finishMediaControlsTest);
Modified: trunk/LayoutTests/media/modern-media-controls/fullscreen-button/fullscreen-button-expected.txt (214399 => 214400)
--- 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)
@@ -6,8 +6,8 @@
PASS enterFullscreenButton.element.localName is "button"
PASS enterFullscreenButton.element.classList.contains("icon") is true
PASS enterFullscreenButton.element.classList.contains("fullscreen") is true
-PASS enterFullscreenButton.iconName is "enter-fullscreen"
-PASS exitFullscreenButton.iconName is "exit-fullscreen"
+PASS enterFullscreenButton.iconName is Icons.EnterFullscreen
+PASS exitFullscreenButton.iconName is Icons.ExitFullscreen
PASS enterFullscreenButton.element.style.webkitMaskImage.includes("macOS/enter-fullscreen@") is true
PASS iOSEnterFullscreenButton.element.style.webkitMaskImage.includes("iOS/enter-fullscreen@") is true
PASS exitFullscreenButton.element.style.webkitMaskImage.includes("macOS/exit-fullscreen@") is true
Modified: trunk/LayoutTests/media/modern-media-controls/fullscreen-button/fullscreen-button.html (214399 => 214400)
--- 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)
@@ -13,12 +13,12 @@
shouldBeEqualToString("enterFullscreenButton.element.localName", "button");
shouldBeTrue('enterFullscreenButton.element.classList.contains("icon")');
shouldBeTrue('enterFullscreenButton.element.classList.contains("fullscreen")');
-shouldBeEqualToString("enterFullscreenButton.iconName", `${Icons.EnterFullscreen}`);
+shouldBe("enterFullscreenButton.iconName", "Icons.EnterFullscreen");
const iOSEnterFullscreenButton = new FullscreenButton({ layoutTraits: LayoutTraits.iOS });
const exitFullscreenButton = new FullscreenButton({ layoutTraits: LayoutTraits.macOS | LayoutTraits.Fullscreen });
-shouldBeEqualToString("exitFullscreenButton.iconName", `${Icons.ExitFullscreen}`);
+shouldBe("exitFullscreenButton.iconName", "Icons.ExitFullscreen");
scheduler.frameDidFire = function()
{
Modified: trunk/LayoutTests/media/modern-media-controls/icon-button/icon-button-expected.txt (214399 => 214400)
--- 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)
@@ -18,6 +18,7 @@
PASS iconButton.element.style.width is "22px"
PASS iconButton.element.style.height is "24px"
PASS iconButton.element.style.webkitMaskSize is "22px 24px"
+PASS iconButton.element.getAttribute('aria-label') is "Pause"
Setting start icon
PASS iconButton.element.style.webkitMaskImage.includes("macOS/start") is true
@@ -24,6 +25,7 @@
PASS iconButton.element.style.width is "70px"
PASS iconButton.element.style.height is "70px"
PASS iconButton.element.style.webkitMaskSize is "70px 70px"
+PASS iconButton.element.getAttribute('aria-label') is "Start"
PASS successfullyParsed is true
TEST COMPLETE
Modified: trunk/LayoutTests/media/modern-media-controls/icon-button/icon-button.html (214399 => 214400)
--- 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)
@@ -41,6 +41,7 @@
shouldBeEqualToString("iconButton.element.style.height", "24px");
shouldBeEqualToString("iconButton.element.style.webkitMaskSize", "22px 24px");
+ shouldBeEqualToString("iconButton.element.getAttribute('aria-label')", `${Icons.Pause.label}`);
debug("");
debug("Setting start icon");
iconButton.iconName = Icons.Start;
@@ -49,6 +50,7 @@
shouldBeEqualToString("iconButton.element.style.width", "70px");
shouldBeEqualToString("iconButton.element.style.height", "70px");
shouldBeEqualToString("iconButton.element.style.webkitMaskSize", "70px 70px");
+ shouldBeEqualToString("iconButton.element.getAttribute('aria-label')", `${Icons.Start.label}`);
finishMediaControlsTest();
}
Modified: trunk/LayoutTests/media/modern-media-controls/icon-service/icon-service-expected.txt (214399 => 214400)
--- 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)
@@ -4,16 +4,16 @@
Checking path to images is computed according to traits
-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
+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
Checking fullscreen or compact layout traits are ignored on iOS
-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
+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
Checking requested images are cached
-PASS iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.macOS) === iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.macOS) is true
+PASS iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.macOS) === iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.macOS) is true
PASS successfullyParsed is true
TEST COMPLETE
Modified: trunk/LayoutTests/media/modern-media-controls/icon-service/icon-service.html (214399 => 214400)
--- 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)
@@ -1,7 +1,5 @@
<script src=""
-<script src="" type="text/_javascript_"></script>
-<script src="" type="text/_javascript_"></script>
-<script src="" type="text/_javascript_"></script>
+<script src="" type="text/_javascript_"></script>
<body>
<script type="text/_javascript_">
@@ -10,18 +8,18 @@
iconService.directoryPath = "../../../../Source/WebCore/Modules/modern-media-controls/images";
debug("Checking path to images is computed according to traits");
-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@")');
+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@")');
debug("");
debug("Checking fullscreen or compact layout traits are ignored on iOS");
-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)');
+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)');
debug("");
debug("Checking requested images are cached");
-shouldBeTrue('iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.macOS) === iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.macOS)');
+shouldBeTrue('iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.macOS) === iconService.imageForIconNameAndLayoutTraits(Icons.Pause.name, LayoutTraits.macOS)');
</script>
<script src=""
Modified: trunk/LayoutTests/media/modern-media-controls/mute-button/mute-button-expected.txt (214399 => 214400)
--- 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)
@@ -6,10 +6,10 @@
PASS muteButton.element.localName is "button"
PASS muteButton.element.classList.contains("icon") is true
PASS muteButton.element.classList.contains("mute") is true
-PASS muteButton.iconName is "volume"
+PASS muteButton.iconName is Icons.Volume
PASS muteButton.muted is false
PASS mutedButton.muted is true
-PASS mutedButton.iconName is "volume-mute"
+PASS mutedButton.iconName is Icons.VolumeMuted
PASS muteButton.element.style.webkitMaskImage.includes("macOS/volume@") became true
PASS mutedButton.element.style.webkitMaskImage.includes("macOS/volume-mute@") became true
PASS successfullyParsed is true
Modified: trunk/LayoutTests/media/modern-media-controls/mute-button/mute-button.html (214399 => 214400)
--- 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)
@@ -13,13 +13,13 @@
shouldBeEqualToString("muteButton.element.localName", "button");
shouldBeTrue('muteButton.element.classList.contains("icon")');
shouldBeTrue('muteButton.element.classList.contains("mute")');
-shouldBeEqualToString("muteButton.iconName", `${Icons.Volume}`);
+shouldBe("muteButton.iconName", "Icons.Volume");
shouldBeFalse("muteButton.muted");
const mutedButton = new MuteButton({ layoutTraits: LayoutTraits.macOS });
mutedButton.muted = true;
shouldBeTrue("mutedButton.muted");
-shouldBeEqualToString("mutedButton.iconName", `${Icons.VolumeMuted}`);
+shouldBe("mutedButton.iconName", "Icons.VolumeMuted");
shouldBecomeEqual('muteButton.element.style.webkitMaskImage.includes("macOS/volume@")', "true", () => {
shouldBecomeEqual('mutedButton.element.style.webkitMaskImage.includes("macOS/volume-mute@")', "true", finishJSTest);
Modified: trunk/LayoutTests/media/modern-media-controls/pip-button/pip-button-expected.txt (214399 => 214400)
--- 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)
@@ -6,7 +6,7 @@
PASS pipButton.element.localName is "button"
PASS pipButton.element.classList.contains("icon") is true
PASS pipButton.element.classList.contains("pip") is true
-PASS pipButton.iconName is "pip-in"
+PASS pipButton.iconName is Icons.EnterPiP
PASS pipButton.element.style.webkitMaskImage.includes("macOS/pip-in@") became true
PASS iOSPiPButton.element.style.webkitMaskImage.includes("iOS/pip-in@") became true
Modified: trunk/LayoutTests/media/modern-media-controls/pip-button/pip-button.html (214399 => 214400)
--- 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)
@@ -13,7 +13,7 @@
shouldBeEqualToString("pipButton.element.localName", "button");
shouldBeTrue('pipButton.element.classList.contains("icon")');
shouldBeTrue('pipButton.element.classList.contains("pip")');
-shouldBeEqualToString("pipButton.iconName", `${Icons.EnterPiP}`);
+shouldBe("pipButton.iconName", "Icons.EnterPiP");
const iOSPiPButton = new PiPButton({ layoutTraits: LayoutTraits.iOS });
Modified: trunk/LayoutTests/media/modern-media-controls/play-pause-button/play-pause-button-expected.txt (214399 => 214400)
--- 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)
@@ -6,10 +6,10 @@
PASS playButton.element.localName is "button"
PASS playButton.element.classList.contains("icon") is true
PASS playButton.element.classList.contains("play-pause") is true
-PASS playButton.iconName is "play"
+PASS playButton.iconName is Icons.Play
PASS playButton.playing is false
PASS pauseButton.playing is true
-PASS pauseButton.iconName is "pause"
+PASS pauseButton.iconName is Icons.Pause
PASS playButton.element.style.webkitMaskImage.includes("macOS/play@") became true
PASS pauseButton.element.style.webkitMaskImage.includes("macOS/pause@") became true
PASS iOSPlayButton.element.style.webkitMaskImage.includes("iOS/play@") became true
Modified: trunk/LayoutTests/media/modern-media-controls/play-pause-button/play-pause-button.html (214399 => 214400)
--- 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)
@@ -13,7 +13,7 @@
shouldBeEqualToString("playButton.element.localName", "button");
shouldBeTrue('playButton.element.classList.contains("icon")');
shouldBeTrue('playButton.element.classList.contains("play-pause")');
-shouldBeEqualToString("playButton.iconName", `${Icons.Play}`);
+shouldBe("playButton.iconName", "Icons.Play");
shouldBeFalse("playButton.playing");
const fullscreenPlayButton = new PlayPauseButton({ layoutTraits: LayoutTraits.macOS | LayoutTraits.Fullscreen });
@@ -22,7 +22,7 @@
const pauseButton = new PlayPauseButton({ layoutTraits: LayoutTraits.macOS });
pauseButton.playing = true;
shouldBeTrue("pauseButton.playing");
-shouldBeEqualToString("pauseButton.iconName", `${Icons.Pause}`);
+shouldBe("pauseButton.iconName", "Icons.Pause");
const fullscreenPauseButton = new PlayPauseButton({ layoutTraits: LayoutTraits.macOS | LayoutTraits.Fullscreen });
fullscreenPauseButton.playing = true;
Modified: trunk/LayoutTests/media/modern-media-controls/rewind-button/rewind-button-expected.txt (214399 => 214400)
--- 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)
@@ -6,7 +6,7 @@
PASS rewindButton.element.localName is "button"
PASS rewindButton.element.classList.contains("icon") is true
PASS rewindButton.element.classList.contains("rewind") is true
-PASS rewindButton.iconName is "rewind"
+PASS rewindButton.iconName is Icons.Rewind
PASS rewindButton.element.style.webkitMaskImage.includes("macOS/rewind@") became true
PASS successfullyParsed is true
Modified: trunk/LayoutTests/media/modern-media-controls/rewind-button/rewind-button.html (214399 => 214400)
--- 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)
@@ -15,7 +15,7 @@
shouldBeEqualToString("rewindButton.element.localName", "button");
shouldBeTrue('rewindButton.element.classList.contains("icon")');
shouldBeTrue('rewindButton.element.classList.contains("rewind")');
-shouldBeEqualToString("rewindButton.iconName", `${Icons.Rewind}`);
+shouldBe("rewindButton.iconName", "Icons.Rewind");
shouldBecomeEqual('rewindButton.element.style.webkitMaskImage.includes("macOS/rewind@")', "true", finishJSTest);
Modified: trunk/LayoutTests/media/modern-media-controls/skip-back-button/skip-back-button-expected.txt (214399 => 214400)
--- 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)
@@ -6,7 +6,7 @@
PASS skipBackButton.element.localName is "button"
PASS skipBackButton.element.classList.contains("icon") is true
PASS skipBackButton.element.classList.contains("skip-back") is true
-PASS skipBackButton.iconName is "interval-skip-back"
+PASS skipBackButton.iconName is Icons.SkipBack
PASS skipBackButton.element.style.webkitMaskImage.includes("macOS/interval-skip-back@") became true
PASS iOSSkipBackButton.element.style.webkitMaskImage.includes("iOS/interval-skip-back@") became true
PASS successfullyParsed is true
Modified: trunk/LayoutTests/media/modern-media-controls/skip-back-button/skip-back-button.html (214399 => 214400)
--- 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)
@@ -13,7 +13,7 @@
shouldBeEqualToString("skipBackButton.element.localName", "button");
shouldBeTrue('skipBackButton.element.classList.contains("icon")');
shouldBeTrue('skipBackButton.element.classList.contains("skip-back")');
-shouldBeEqualToString("skipBackButton.iconName", `${Icons.SkipBack}`);
+shouldBe("skipBackButton.iconName", "Icons.SkipBack");
const iOSSkipBackButton = new SkipBackButton({ layoutTraits: LayoutTraits.iOS });
Modified: trunk/LayoutTests/media/modern-media-controls/start-button/start-button-expected.txt (214399 => 214400)
--- 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)
@@ -11,6 +11,7 @@
PASS startButton.element.lastElementChild.localName is "img"
PASS startButton.element.lastElementChild.src.includes('macOS/start@') is true
PASS iOSStartButton.element.lastElementChild.src.includes('iOS/start@') is true
+PASS startButton.element.getAttribute('aria-label') is "Start"
PASS successfullyParsed is true
TEST COMPLETE
Modified: trunk/LayoutTests/media/modern-media-controls/start-button/start-button.html (214399 => 214400)
--- 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)
@@ -19,6 +19,7 @@
shouldBeTrue("iOSStartButton.element.lastElementChild.src.includes('iOS/start@')");
+shouldBeEqualToString("startButton.element.getAttribute('aria-label')", "Start");
</script>
<script src=""
</body>
Modified: trunk/LayoutTests/media/modern-media-controls/tracks-button/tracks-button-expected.txt (214399 => 214400)
--- 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)
@@ -6,7 +6,7 @@
PASS tracksButton.element.localName is "button"
PASS tracksButton.element.classList.contains("icon") is true
PASS tracksButton.element.classList.contains("tracks") is true
-PASS tracksButton.iconName is "media-selection"
+PASS tracksButton.iconName is Icons.Tracks
PASS tracksButton.element.style.webkitMaskImage.includes("macOS/media-selection@") became true
PASS fullscreenTracksButton.element.style.webkitMaskImage.includes("macOS/media-selection-fullscreen@") became true
PASS successfullyParsed is true
Modified: trunk/LayoutTests/media/modern-media-controls/tracks-button/tracks-button.html (214399 => 214400)
--- 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)
@@ -13,7 +13,7 @@
shouldBeEqualToString("tracksButton.element.localName", "button");
shouldBeTrue('tracksButton.element.classList.contains("icon")');
shouldBeTrue('tracksButton.element.classList.contains("tracks")');
-shouldBeEqualToString("tracksButton.iconName", `${Icons.Tracks}`);
+shouldBe("tracksButton.iconName", "Icons.Tracks");
const fullscreenTracksButton = new TracksButton({ layoutTraits: LayoutTraits.macOS | LayoutTraits.Fullscreen });
Modified: trunk/Source/WebCore/ChangeLog (214399 => 214400)
--- 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)
@@ -1,3 +1,26 @@
+2017-03-25 Aaron Chu <aaron_...@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:
+
2017-03-25 Carlos Garcia Campos <cgar...@igalia.com>
[XDG] MIMETypeRegistry::getMIMETypeForExtension should return a null/empty string when mime type is unknown
Modified: trunk/Source/WebCore/English.lproj/modern-media-controls-localized-strings.js (214399 => 214400)
--- 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)
@@ -1,10 +1,29 @@
const UIStrings = {
"AirPlay": "AirPlay",
"Audio": "Audio",
+ "Enter Fullscreen": "Enter Fullscreen",
+ "Enter Picture in Picture": "Enter Picture in Picture",
+ "Exit Full Screen": "Exit Full Screen",
"Error": "Error",
+ "Forward": "Forward",
+ "Invalid": "Invalid",
+ "Skip Back 30 seconds": "Skip Back 30 seconds",
"Live Broadcast": "Live Broadcast",
"Loading": "Loading",
+ "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",
"Subtitles": "Subtitles",
+ "Start": "Start",
"This video is playing in Picture in Picture": "This video is playing in Picture in Picture",
- "This video is playing on your Apple TV": "This video is playing on your Apple TV"
+ "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"
};
Modified: trunk/Source/WebCore/Modules/modern-media-controls/controls/icon-button.js (214399 => 214400)
--- 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)
@@ -55,6 +55,7 @@
return;
this._loadImage(iconName);
+ this.element.setAttribute("aria-label", iconName.label);
}
get on()
@@ -80,7 +81,7 @@
if (event.type === "load")
this._imageDidLoad();
else if (event.type === "error")
- console.error(`IconButton failed to load, iconName = ${this._iconName}, layoutTraits = ${this._iconLayoutTraits}, src = ""
+ console.error(`IconButton failed to load, iconName = ${this._iconName.name}, layoutTraits = ${this._iconLayoutTraits}, src = ""
} else
super.handleEvent(event);
}
@@ -101,8 +102,9 @@
this._image.removeEventListener("load", this);
this._iconLayoutTraits = this.layoutTraits;
- this._image = iconService.imageForIconNameAndLayoutTraits(iconName, this._iconLayoutTraits);
+ this._image = iconService.imageForIconNameAndLayoutTraits(iconName.name, this._iconLayoutTraits);
+
this._iconName = iconName;
if (this._image.complete)
Modified: trunk/Source/WebCore/Modules/modern-media-controls/controls/icon-service.js (214399 => 214400)
--- 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)
@@ -24,30 +24,30 @@
*/
const Icons = {
- 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"
+ 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") }
};
-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];
+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];
const iconService = new class IconService {
Modified: trunk/Source/WebCore/Modules/modern-media-controls/controls/start-button.js (214399 => 214400)
--- 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)
@@ -36,7 +36,8 @@
background.className = "background";
const image = this.element.appendChild(new Image);
- image.src = "" this.layoutTraits).src;
+ image.src = "" this.layoutTraits).src;
+ this.element.setAttribute("aria-label", Icons.Start.label);
}
}
Modified: trunk/Source/WebCore/Modules/modern-media-controls/js-files (214399 => 214400)
--- 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)
@@ -1,3 +1,4 @@
+main.js
gesture-recognizers/gesture-recognizer.js
gesture-recognizers/tap.js
gesture-recognizers/pinch.js
@@ -61,4 +62,4 @@
media/volume-support.js
media/volume-up-support.js
media/media-controller.js
-main.js
+