Title: [211132] trunk/LayoutTests
Revision
211132
Author
[email protected]
Date
2017-01-24 18:59:59 -0800 (Tue, 24 Jan 2017)

Log Message

LayoutTest media/modern-media-controls/placard-support/placard-support-airplay.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=164298

Patch by Antoine Quint <[email protected]> on 2017-01-24
Reviewed by Jon Lee.

Make media/modern-media-controls/placard-support/placard-support-airplay.html more robust by
following the same pattern used in media/airplay-target-availability.html which proved to be robust.

* media/modern-media-controls/placard-support/placard-support-airplay-expected.txt:
* media/modern-media-controls/placard-support/placard-support-airplay.html:
* platform/mac/TestExpectations:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (211131 => 211132)


--- trunk/LayoutTests/ChangeLog	2017-01-25 02:59:11 UTC (rev 211131)
+++ trunk/LayoutTests/ChangeLog	2017-01-25 02:59:59 UTC (rev 211132)
@@ -1,5 +1,19 @@
 2017-01-24  Antoine Quint  <[email protected]>
 
+        LayoutTest media/modern-media-controls/placard-support/placard-support-airplay.html is flaky
+        https://bugs.webkit.org/show_bug.cgi?id=164298
+
+        Reviewed by Jon Lee.
+
+        Make media/modern-media-controls/placard-support/placard-support-airplay.html more robust by
+        following the same pattern used in media/airplay-target-availability.html which proved to be robust.
+
+        * media/modern-media-controls/placard-support/placard-support-airplay-expected.txt:
+        * media/modern-media-controls/placard-support/placard-support-airplay.html:
+        * platform/mac/TestExpectations:
+
+2017-01-24  Antoine Quint  <[email protected]>
+
         LayoutTest media/modern-media-controls/tracks-panel/tracks-panel-hide.html is a flaky timeout
         https://bugs.webkit.org/show_bug.cgi?id=167311
 

Modified: trunk/LayoutTests/media/modern-media-controls/placard-support/placard-support-airplay-expected.txt (211131 => 211132)


--- trunk/LayoutTests/media/modern-media-controls/placard-support/placard-support-airplay-expected.txt	2017-01-25 02:59:11 UTC (rev 211131)
+++ trunk/LayoutTests/media/modern-media-controls/placard-support/placard-support-airplay-expected.txt	2017-01-25 02:59:59 UTC (rev 211132)
@@ -3,10 +3,9 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-got event false
-got event true
 PASS mediaController.controls.showsPlacard is true
 PASS mediaController.controls.children.includes(mediaController.controls.airplayPlacard) is true
+
 PASS successfullyParsed is true
 
 TEST COMPLETE

Modified: trunk/LayoutTests/media/modern-media-controls/placard-support/placard-support-airplay.html (211131 => 211132)


--- trunk/LayoutTests/media/modern-media-controls/placard-support/placard-support-airplay.html	2017-01-25 02:59:11 UTC (rev 211131)
+++ trunk/LayoutTests/media/modern-media-controls/placard-support/placard-support-airplay.html	2017-01-25 02:59:59 UTC (rev 211132)
@@ -23,34 +23,57 @@
 
 description("Testing the <code>PlacardSupport</code> behavior when playing media through AirPlay.");
 
-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);
 
-if (window.internals) {
-    window.internals.settings.setAllowsAirPlayForMediaPlayback(true);
-    window.internals.setMediaElementRestrictions(media, "norestrictions");
+(function makeAirPlayAvailable()
+{
+    media.addEventListener("webkitplaybacktargetavailabilitychanged", playbackTargetAvailabilityChangedOnce, true);
+    window.internals.setMockMediaPlaybackTargetPickerEnabled(true);
+})();
+
+function playbackTargetAvailabilityChangedOnce(event)
+{
+    media.removeEventListener('webkitplaybacktargetavailabilitychanged', playbackTargetAvailabilityChangedOnce, true);
+    media.addEventListener('webkitplaybacktargetavailabilitychanged', playbackTargetAvailabilityChangedAgain, true);
+
+    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.addEventListener("webkitcurrentplaybacktargetiswirelesschanged", () => {
-    if (!media.paused && media.webkitCurrentPlaybackTargetIsWireless) {
-        shouldBeTrue("mediaController.controls.showsPlacard");
-        shouldBeTrue("mediaController.controls.children.includes(mediaController.controls.airplayPlacard)");
+    media.removeEventListener('webkitplaybacktargetavailabilitychanged', playbackTargetAvailabilityChangedAgain, true);
 
-        container.remove();
-        media.remove();
-        finishJSTest();
-    }
-});
+    window.setTimeout(enterAirPlay, 100);
+}
 
-media.addEventListener("play", () => {
+function enterAirPlay()
+{
+    media.addEventListener("webkitcurrentplaybacktargetiswirelesschanged", currentPlaybackTargetIsWirelessChanged);
     media.webkitShowPlaybackTargetPicker();
-    if (window.internals)
-        window.internals.setMockMediaPlaybackTargetPickerState("Sleepy TV", "DeviceAvailable");
-});
+}
 
+function currentPlaybackTargetIsWirelessChanged(event)
+{
+    if (!media.webkitCurrentPlaybackTargetIsWireless)
+        return;
+
+    shouldBeTrue("mediaController.controls.showsPlacard");
+    shouldBeTrue("mediaController.controls.children.includes(mediaController.controls.airplayPlacard)");
+
+    debug("");
+    container.remove();
+    media.remove();
+    finishJSTest();
+}
+
 </script>
 <script src=""
 </body>

Modified: trunk/LayoutTests/platform/mac/TestExpectations (211131 => 211132)


--- trunk/LayoutTests/platform/mac/TestExpectations	2017-01-25 02:59:11 UTC (rev 211131)
+++ trunk/LayoutTests/platform/mac/TestExpectations	2017-01-25 02:59:59 UTC (rev 211132)
@@ -1480,7 +1480,6 @@
 
 # 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 ]
-webkit.org/b/164298 media/modern-media-controls/placard-support/placard-support-airplay.html [ Pass Failure Timeout ]
 
 # 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
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to