- Revision
- 195592
- Author
- [email protected]
- Date
- 2016-01-26 09:17:49 -0800 (Tue, 26 Jan 2016)
Log Message
LayoutTest media/airplay-target-availability.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=153100
<rdar://problem/24346796>
Reviewed by Daniel Bates.
Source/WebCore:
No new tests, media/airplay-target-availability.html was updated
* Modules/mediasession/WebMediaSessionManager.cpp:
(WebCore::WebMediaSessionManager::clientStateDidChange): Schedule a configuration scan if
any of the config flags have changed.
(WebCore::WebMediaSessionManager::configurePlaybackTargetMonitoring): Update logging.
LayoutTests:
* media/airplay-target-availability-expected.txt:
* media/airplay-target-availability.html:
Modified Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (195591 => 195592)
--- trunk/LayoutTests/ChangeLog 2016-01-26 17:00:18 UTC (rev 195591)
+++ trunk/LayoutTests/ChangeLog 2016-01-26 17:17:49 UTC (rev 195592)
@@ -1,3 +1,14 @@
+2016-01-26 Eric Carlson <[email protected]>
+
+ LayoutTest media/airplay-target-availability.html is flaky
+ https://bugs.webkit.org/show_bug.cgi?id=153100
+ <rdar://problem/24346796>
+
+ Reviewed by Daniel Bates.
+
+ * media/airplay-target-availability-expected.txt:
+ * media/airplay-target-availability.html:
+
2016-01-26 Daniel Bates <[email protected]>
LayoutTest http/tests/security/xssAuditor/embed-tag-in-path-unterminated.html crashing
Modified: trunk/LayoutTests/media/airplay-target-availability-expected.txt (195591 => 195592)
--- trunk/LayoutTests/media/airplay-target-availability-expected.txt 2016-01-26 17:00:18 UTC (rev 195591)
+++ trunk/LayoutTests/media/airplay-target-availability-expected.txt 2016-01-26 17:17:49 UTC (rev 195592)
@@ -2,15 +2,15 @@
Test that 'webkitplaybacktargetavailabilitychanged' event is sent when at least one video element has playable media.
+EVENT( webkitplaybacktargetavailabilitychanged )
+EXPECTED (event.availability == 'not-available') OK
-EVENT: 'webkitplaybacktargetavailabilitychanged', event.availability = 'not-available'
+** simulate device becoming available
+EVENT( webkitplaybacktargetavailabilitychanged )
+** set src on video that does not have event listener
+EVENT( webkitplaybacktargetavailabilitychanged )
+EXPECTED (event.availability == 'available') OK
-EVENT: 'webkitplaybacktargetavailabilitychanged', event.availability = 'not-available'
-
-** setting src on video that does not have event listener
-
-EVENT: 'webkitplaybacktargetavailabilitychanged', event.availability = 'available'
-
END OF TEST
Modified: trunk/LayoutTests/media/airplay-target-availability.html (195591 => 195592)
--- trunk/LayoutTests/media/airplay-target-availability.html 2016-01-26 17:00:18 UTC (rev 195591)
+++ trunk/LayoutTests/media/airplay-target-availability.html 2016-01-26 17:17:49 UTC (rev 195592)
@@ -1,7 +1,7 @@
<html>
<head>
- <script src=""
- <script src=""
+ <script src=''></script>
+ <script src=''></script>
<script>
var video1;
var video2;
@@ -13,38 +13,53 @@
if (window.internals)
internals.setMockMediaPlaybackTargetPickerEnabled(true);
-
- video1.addEventListener('webkitplaybacktargetavailabilitychanged', targetAvailabilityChanged);
- setTimeout(setSource, 200);
+
+ video1.addEventListener('webkitplaybacktargetavailabilitychanged', noSource, true);
}
- function targetAvailabilityChanged(event)
+ function noSource(event)
{
- consoleWrite(`<br>EVENT: '${event.type}', event.availability = '${event.availability}'<br>`);
+ video1.removeEventListener('webkitplaybacktargetavailabilitychanged', noSource, true);
- if (event.availability != "available")
- return;
+ consoleWrite(`EVENT( ${event.type} )`);
+ testExpected('event.availability', 'not-available');
- if (event.availability == "available" && video2.src == "") {
- failTest("Event sent before any video is a candidate for airplay");
- return;
- }
+ video1.addEventListener('webkitplaybacktargetavailabilitychanged', haveTarget, true);
+
+ consoleWrite('<br>** simulate device becoming available');
+ if (window.internals)
+ internals.setMockMediaPlaybackTargetPickerState('Sleepy TV', 'DeviceAvailable');
+ }
- endTest();
- }
-
- function setSource()
+ function haveTarget(event)
{
- consoleWrite('** setting src on video that does not have event listener');
- if (window.internals)
- internals.setMockMediaPlaybackTargetPickerState("Sleepy TV", "DeviceAvailable");
+ // 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;
+
+ video1.removeEventListener('webkitplaybacktargetavailabilitychanged', haveTarget, true);
+ consoleWrite(`EVENT( ${event.type} )`);
+
+ consoleWrite('<br>** set src on video that does not have event listener');
+
video2.src = "" 'content/test');
+ video1.addEventListener('webkitplaybacktargetavailabilitychanged', withSource, true);
}
+ function withSource(event)
+ {
+ consoleWrite(`EVENT( ${event.type} )`);
+ testExpected('event.availability', 'available');
+ consoleWrite('');
+ endTest();
+ }
+
</script>
</head>
- <body _onload_="start()">
+ <body _onload_='start()'>
<video controls></video>
<br>
<video controls></video>
Modified: trunk/Source/WebCore/ChangeLog (195591 => 195592)
--- trunk/Source/WebCore/ChangeLog 2016-01-26 17:00:18 UTC (rev 195591)
+++ trunk/Source/WebCore/ChangeLog 2016-01-26 17:17:49 UTC (rev 195592)
@@ -1,3 +1,18 @@
+2016-01-26 Eric Carlson <[email protected]>
+
+ LayoutTest media/airplay-target-availability.html is flaky
+ https://bugs.webkit.org/show_bug.cgi?id=153100
+ <rdar://problem/24346796>
+
+ Reviewed by Daniel Bates.
+
+ No new tests, media/airplay-target-availability.html was updated
+
+ * Modules/mediasession/WebMediaSessionManager.cpp:
+ (WebCore::WebMediaSessionManager::clientStateDidChange): Schedule a configuration scan if
+ any of the config flags have changed.
+ (WebCore::WebMediaSessionManager::configurePlaybackTargetMonitoring): Update logging.
+
2016-01-25 Carlos Garcia Campos <[email protected]>
Main frame scrollbars not updated on hovering when using overlay scrollbars
Modified: trunk/Source/WebCore/Modules/mediasession/WebMediaSessionManager.cpp (195591 => 195592)
--- trunk/Source/WebCore/Modules/mediasession/WebMediaSessionManager.cpp 2016-01-26 17:00:18 UTC (rev 195591)
+++ trunk/Source/WebCore/Modules/mediasession/WebMediaSessionManager.cpp 2016-01-26 17:17:49 UTC (rev 195592)
@@ -215,7 +215,7 @@
changedClientState->flags = newFlags;
MediaProducer::MediaStateFlags updateConfigurationFlags = MediaProducer::RequiresPlaybackTargetMonitoring | MediaProducer::HasPlaybackTargetAvailabilityListener | MediaProducer::HasAudioOrVideo;
- if (!flagsAreSet(oldFlags, updateConfigurationFlags) && flagsAreSet(newFlags, updateConfigurationFlags))
+ if ((oldFlags & updateConfigurationFlags) != (newFlags & updateConfigurationFlags))
scheduleDelayedTask(TargetMonitoringConfigurationTask);
MediaProducer::MediaStateFlags playingToTargetFlags = MediaProducer::IsPlayingToExternalDevice | MediaProducer::IsPlayingVideo;
@@ -358,7 +358,7 @@
haveClientWithMedia = true;
}
- LOG(Media, "WebMediaSessionManager::configurePlaybackTargetMonitoring - monitoringRequired = %i", (int)monitoringRequired);
+ LOG(Media, "WebMediaSessionManager::configurePlaybackTargetMonitoring - monitoringRequired = %i", static_cast<int>(monitoringRequired || (hasAvailabilityListener && haveClientWithMedia)));
if (monitoringRequired || (hasAvailabilityListener && haveClientWithMedia))
targetPicker().startingMonitoringPlaybackTargets();