Title: [211136] trunk/LayoutTests
- Revision
- 211136
- Author
- grao...@webkit.org
- Date
- 2017-01-24 22:30:23 -0800 (Tue, 24 Jan 2017)
Log Message
LayoutTest media/modern-media-controls/airplay-support/airplay-support.html is failing
https://bugs.webkit.org/show_bug.cgi?id=164323
Reviewed by Jon Lee.
Make media/modern-media-controls/airplay-support/airplay-support.html more robust by following
the same pattern used in media/airplay-target-availability.html which proved to be robust.
* media/modern-media-controls/airplay-support/airplay-support.html:
* platform/mac/TestExpectations:
Modified Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (211135 => 211136)
--- trunk/LayoutTests/ChangeLog 2017-01-25 05:02:56 UTC (rev 211135)
+++ trunk/LayoutTests/ChangeLog 2017-01-25 06:30:23 UTC (rev 211136)
@@ -1,3 +1,16 @@
+2017-01-24 Antoine Quint <grao...@apple.com>
+
+ LayoutTest media/modern-media-controls/airplay-support/airplay-support.html is failing
+ https://bugs.webkit.org/show_bug.cgi?id=164323
+
+ Reviewed by Jon Lee.
+
+ Make media/modern-media-controls/airplay-support/airplay-support.html more robust by following
+ the same pattern used in media/airplay-target-availability.html which proved to be robust.
+
+ * media/modern-media-controls/airplay-support/airplay-support.html:
+ * platform/mac/TestExpectations:
+
2017-01-24 Joseph Pecoraro <pecor...@apple.com>
Fold USER_TIMING into WEB_TIMING and make it a RuntimeEnabledFeature
Modified: trunk/LayoutTests/media/modern-media-controls/airplay-support/airplay-support.html (211135 => 211136)
--- trunk/LayoutTests/media/modern-media-controls/airplay-support/airplay-support.html 2017-01-25 05:02:56 UTC (rev 211135)
+++ trunk/LayoutTests/media/modern-media-controls/airplay-support/airplay-support.html 2017-01-25 06:30:23 UTC (rev 211136)
@@ -9,37 +9,50 @@
description("Testing the <code>AirPlaySupport</code> behavior.");
-iconService.directoryPath = "../../../../Source/WebCore/Modules/modern-media-controls/images";
-
const container = document.querySelector("div#host");
const media = document.querySelector("video");
const mediaController = createControls(container, media, null);
-window.internals.setMockMediaPlaybackTargetPickerEnabled(false);
-
-media.addEventListener("play", () => {
- media.addEventListener("webkitplaybacktargetavailabilitychanged", playbackTargetAvailabilityChanged);
- media.addEventListener("webkitcurrentplaybacktargetiswirelesschanged", currentPlaybackTargetIsWirelessChanged);
-
+(function makeAirPlayAvailable()
+{
debug("Making AirPlay routes available.");
+ media.addEventListener("webkitplaybacktargetavailabilitychanged", playbackTargetAvailabilityChangedOnce, true);
window.internals.setMockMediaPlaybackTargetPickerEnabled(true);
-});
+})();
-let playbackTargetBecameAvailable = false;
-function playbackTargetAvailabilityChanged(event)
+function playbackTargetAvailabilityChangedOnce(event)
{
- if (event.availability == "available" && !playbackTargetBecameAvailable) {
- playbackTargetBecameAvailable = true;
- shouldBeTrue("mediaController.controls.airplayButton.enabled");
- shouldBeFalse("mediaController.controls.airplayButton.on");
+ media.removeEventListener('webkitplaybacktargetavailabilitychanged', playbackTargetAvailabilityChangedOnce, true);
+ media.addEventListener('webkitplaybacktargetavailabilitychanged', playbackTargetAvailabilityChangedAgain, true);
- debug("");
- debug("Entering AirPlay playback mode.");
- window.internals.setMockMediaPlaybackTargetPickerState("Sleepy TV", "DeviceAvailable");
- media.webkitShowPlaybackTargetPicker();
- }
+ window.internals.setMockMediaPlaybackTargetPickerState('Sleepy TV', 'DeviceAvailable');
}
+
+function playbackTargetAvailabilityChangedAgain(event)
+{
+ // setMockMediaPlaybackTargetPickerState happens asynchronously in WK2 and a
+ // "webkitplaybacktargetavailabilitychanged" is always sent when an event listener
+ // is added, so we may get a "not available" event first.
+ if (event.availability == 'not-available')
+ return;
+ media.removeEventListener('webkitplaybacktargetavailabilitychanged', playbackTargetAvailabilityChangedAgain, true);
+
+ shouldBeTrue("mediaController.controls.airplayButton.enabled");
+ shouldBeFalse("mediaController.controls.airplayButton.on");
+
+ window.setTimeout(enterAirPlay, 100);
+}
+
+function enterAirPlay()
+{
+ debug("");
+ debug("Entering AirPlay playback mode.");
+
+ media.addEventListener("webkitcurrentplaybacktargetiswirelesschanged", currentPlaybackTargetIsWirelessChanged);
+ media.webkitShowPlaybackTargetPicker();
+}
+
function currentPlaybackTargetIsWirelessChanged(event)
{
if (!media.webkitCurrentPlaybackTargetIsWireless)
@@ -54,8 +67,6 @@
finishJSTest();
}
-setTimeout(finishJSTest, 3000);
-
</script>
<script src=""
</body>
Modified: trunk/LayoutTests/platform/mac/TestExpectations (211135 => 211136)
--- trunk/LayoutTests/platform/mac/TestExpectations 2017-01-25 05:02:56 UTC (rev 211135)
+++ trunk/LayoutTests/platform/mac/TestExpectations 2017-01-25 06:30:23 UTC (rev 211136)
@@ -1478,9 +1478,6 @@
media/modern-media-controls/placard-support/ipad/placard-support-pip.html [ Skip ]
media/modern-media-controls/scrubber-support/ipad/scrubber-support-drag.html [ Skip ]
-# These sometimes work but more often than not don't
-webkit.org/b/164323 media/modern-media-controls/airplay-support/airplay-support.html [ Pass Failure ]
-
# This one always times out on the bots, cannot reproduce locally.
webkit.org/b/165234 media/modern-media-controls/audio/audio-controls-buttons.html [ Pass Timeout ]
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes