Diff
Modified: branches/safari-601-branch/LayoutTests/ChangeLog (195376 => 195377)
--- branches/safari-601-branch/LayoutTests/ChangeLog 2016-01-20 21:51:00 UTC (rev 195376)
+++ branches/safari-601-branch/LayoutTests/ChangeLog 2016-01-20 22:18:33 UTC (rev 195377)
@@ -1,3 +1,7 @@
+2016-01-20 Matthew Hanson <matthew_han...@apple.com>
+
+ Rollout r195068. rdar://problem/24154288
+
2016-01-15 Babak Shafiei <bshaf...@apple.com>
Merge r195130.
Deleted: branches/safari-601-branch/LayoutTests/media/airplay-target-availability-expected.txt (195376 => 195377)
--- branches/safari-601-branch/LayoutTests/media/airplay-target-availability-expected.txt 2016-01-20 21:51:00 UTC (rev 195376)
+++ branches/safari-601-branch/LayoutTests/media/airplay-target-availability-expected.txt 2016-01-20 22:18:33 UTC (rev 195377)
@@ -1,13 +0,0 @@
-
-
-Test that 'webkitplaybacktargetavailabilitychanged' event is sent when at least one video element has playable media.
-
-
-EVENT: 'webkitplaybacktargetavailabilitychanged', event.availability = 'not-available'
-
-** setting src on video that does not have event listener
-
-EVENT: 'webkitplaybacktargetavailabilitychanged', event.availability = 'available'
-
-END OF TEST
-
Deleted: branches/safari-601-branch/LayoutTests/media/airplay-target-availability.html (195376 => 195377)
--- branches/safari-601-branch/LayoutTests/media/airplay-target-availability.html 2016-01-20 21:51:00 UTC (rev 195376)
+++ branches/safari-601-branch/LayoutTests/media/airplay-target-availability.html 2016-01-20 22:18:33 UTC (rev 195377)
@@ -1,54 +0,0 @@
-<html>
- <head>
- <script src=""
- <script src=""
- <script>
- var video1;
- var video2;
-
- function start()
- {
- video1 = document.getElementsByTagName('video')[0];
- video2 = document.getElementsByTagName('video')[1];
-
- if (window.internals)
- internals.setMockMediaPlaybackTargetPickerEnabled(true);
-
- video1.addEventListener('webkitplaybacktargetavailabilitychanged', targetAvailabilityChanged);
- setTimeout(setSource, 200);
- }
-
- function targetAvailabilityChanged(event)
- {
- consoleWrite(`<br>EVENT: '${event.type}', event.availability = '${event.availability}'<br>`);
-
- if (event.availability != "available")
- return;
-
- if (event.availability == "available" && video2.src == "") {
- failTest("Event sent before any video is a candidate for airplay");
- return;
- }
-
- endTest();
- }
-
- function setSource()
- {
- consoleWrite('** setting src on video that does not have event listener');
- if (window.internals)
- internals.setMockMediaPlaybackTargetPickerState("Sleepy TV", "DeviceAvailable");
- video2.src = "" 'content/test');
- }
-
- </script>
- </head>
-
- <body _onload_="start()">
- <video controls></video>
- <br>
- <video controls></video>
- <p>Test that 'webkitplaybacktargetavailabilitychanged' event is sent when at least one
- video element has playable media.</p>
- </body>
-</html>
Modified: branches/safari-601-branch/LayoutTests/platform/efl/TestExpectations (195376 => 195377)
--- branches/safari-601-branch/LayoutTests/platform/efl/TestExpectations 2016-01-20 21:51:00 UTC (rev 195376)
+++ branches/safari-601-branch/LayoutTests/platform/efl/TestExpectations 2016-01-20 22:18:33 UTC (rev 195377)
@@ -2301,6 +2301,3 @@
# This test uses an MPEG-4 video
media/video-seek-to-current-time.html [ Skip ]
-
-# WIRELESS_PLAYBACK_TARGET not enabled.
-media/airplay-target-availability.html
Modified: branches/safari-601-branch/LayoutTests/platform/gtk/TestExpectations (195376 => 195377)
--- branches/safari-601-branch/LayoutTests/platform/gtk/TestExpectations 2016-01-20 21:51:00 UTC (rev 195376)
+++ branches/safari-601-branch/LayoutTests/platform/gtk/TestExpectations 2016-01-20 22:18:33 UTC (rev 195377)
@@ -2403,6 +2403,3 @@
# This test uses an MPEG-4 video
media/video-seek-to-current-time.html [ Skip ]
-
-# WIRELESS_PLAYBACK_TARGET not enabled.
-media/airplay-target-availability.html
Modified: branches/safari-601-branch/LayoutTests/platform/mac/TestExpectations (195376 => 195377)
--- branches/safari-601-branch/LayoutTests/platform/mac/TestExpectations 2016-01-20 21:51:00 UTC (rev 195376)
+++ branches/safari-601-branch/LayoutTests/platform/mac/TestExpectations 2016-01-20 22:18:33 UTC (rev 195377)
@@ -1381,6 +1381,3 @@
# Yosemite and El Capitan do not support font feature coverage queries.
[ Yosemite ElCapitan ] css3/font-variant-small-caps-synthesis-coverage.html [ ImageOnlyFailure ]
[ Yosemite ElCapitan ] css3/font-variant-petite-caps-synthesis-coverage.html [ ImageOnlyFailure ]
-
-# WIRELESS_PLAYBACK_TARGET not enabled on Yosemite.
-[ Yosemite ] media/airplay-target-availability.html
Modified: branches/safari-601-branch/LayoutTests/platform/win/TestExpectations (195376 => 195377)
--- branches/safari-601-branch/LayoutTests/platform/win/TestExpectations 2016-01-20 21:51:00 UTC (rev 195376)
+++ branches/safari-601-branch/LayoutTests/platform/win/TestExpectations 2016-01-20 22:18:33 UTC (rev 195377)
@@ -3140,6 +3140,3 @@
# This test uses an MPEG-4 video
media/video-seek-to-current-time.html [ Skip ]
-
-# WIRELESS_PLAYBACK_TARGET not enabled.
-media/airplay-target-availability.html
Modified: branches/safari-601-branch/Source/WebCore/ChangeLog (195376 => 195377)
--- branches/safari-601-branch/Source/WebCore/ChangeLog 2016-01-20 21:51:00 UTC (rev 195376)
+++ branches/safari-601-branch/Source/WebCore/ChangeLog 2016-01-20 22:18:33 UTC (rev 195377)
@@ -1,3 +1,7 @@
+2016-01-20 Matthew Hanson <matthew_han...@apple.com>
+
+ Rollout r195068. rdar://problem/24154288
+
2016-01-14 Matthew Hanson <matthew_han...@apple.com>
Merge r194672. rdar://problem/24154288
Modified: branches/safari-601-branch/Source/WebCore/Modules/mediasession/WebMediaSessionManager.cpp (195376 => 195377)
--- branches/safari-601-branch/Source/WebCore/Modules/mediasession/WebMediaSessionManager.cpp 2016-01-20 21:51:00 UTC (rev 195376)
+++ branches/safari-601-branch/Source/WebCore/Modules/mediasession/WebMediaSessionManager.cpp 2016-01-20 22:18:33 UTC (rev 195377)
@@ -74,16 +74,12 @@
string.append("IsPlayingVideo + ");
if (flags & MediaProducer::IsPlayingToExternalDevice)
string.append("IsPlayingToExternalDevice + ");
- if (flags & MediaProducer::HasPlaybackTargetAvailabilityListener)
- string.append("HasPlaybackTargetAvailabilityListener + ");
if (flags & MediaProducer::RequiresPlaybackTargetMonitoring)
string.append("RequiresPlaybackTargetMonitoring + ");
if (flags & MediaProducer::ExternalDeviceAutoPlayCandidate)
string.append("ExternalDeviceAutoPlayCandidate + ");
if (flags & MediaProducer::DidPlayToEnd)
string.append("DidPlayToEnd + ");
- if (flags & MediaProducer::HasAudioOrVideo)
- string.append("HasAudioOrVideo + ");
if (string.isEmpty())
string.append("IsNotPlaying");
else
@@ -213,9 +209,7 @@
LOG(Media, "WebMediaSessionManager::clientStateDidChange(%p + %llu) - new flags = %s, old flags = %s", &client, contextId, mediaProducerStateString(newFlags).utf8().data(), mediaProducerStateString(oldFlags).utf8().data());
changedClientState->flags = newFlags;
-
- MediaProducer::MediaStateFlags updateConfigurationFlags = MediaProducer::RequiresPlaybackTargetMonitoring | MediaProducer::HasPlaybackTargetAvailabilityListener | MediaProducer::HasAudioOrVideo;
- if (!flagsAreSet(oldFlags, updateConfigurationFlags) && flagsAreSet(newFlags, updateConfigurationFlags))
+ if (!flagsAreSet(oldFlags, MediaProducer::RequiresPlaybackTargetMonitoring) && flagsAreSet(newFlags, MediaProducer::RequiresPlaybackTargetMonitoring))
scheduleDelayedTask(TargetMonitoringConfigurationTask);
MediaProducer::MediaStateFlags playingToTargetFlags = MediaProducer::IsPlayingToExternalDevice | MediaProducer::IsPlayingVideo;
@@ -237,7 +231,7 @@
return;
}
- // Do not begin playing to the device unless playback has just started.
+ // Do not take begin playing to the device unless playback has just started.
if (!flagsAreSet(newFlags, MediaProducer::IsPlayingVideo) || flagsAreSet(oldFlags, MediaProducer::IsPlayingVideo))
return;
@@ -345,22 +339,16 @@
void WebMediaSessionManager::configurePlaybackTargetMonitoring()
{
bool monitoringRequired = false;
- bool hasAvailabilityListener = false;
- bool haveClientWithMedia = false;
for (auto& state : m_clientState) {
if (state->flags & MediaProducer::RequiresPlaybackTargetMonitoring) {
monitoringRequired = true;
break;
}
- if (state->flags & MediaProducer::HasPlaybackTargetAvailabilityListener)
- hasAvailabilityListener = true;
- if (state->flags & MediaProducer::HasAudioOrVideo)
- haveClientWithMedia = true;
}
LOG(Media, "WebMediaSessionManager::configurePlaybackTargetMonitoring - monitoringRequired = %i", (int)monitoringRequired);
- if (monitoringRequired || (hasAvailabilityListener && haveClientWithMedia))
+ if (monitoringRequired)
targetPicker().startingMonitoringPlaybackTargets();
else
targetPicker().stopMonitoringPlaybackTargets();
Modified: branches/safari-601-branch/Source/WebCore/html/HTMLMediaElement.cpp (195376 => 195377)
--- branches/safari-601-branch/Source/WebCore/html/HTMLMediaElement.cpp 2016-01-20 21:51:00 UTC (rev 195376)
+++ branches/safari-601-branch/Source/WebCore/html/HTMLMediaElement.cpp 2016-01-20 22:18:33 UTC (rev 195377)
@@ -6434,6 +6434,7 @@
MediaProducer::MediaStateFlags HTMLMediaElement::mediaState() const
{
+
MediaStateFlags state = IsNotPlaying;
bool hasActiveVideo = isVideo() && hasVideo();
@@ -6442,19 +6443,13 @@
if (m_player && m_player->isCurrentPlaybackTargetWireless())
state |= IsPlayingToExternalDevice;
- if (m_hasPlaybackTargetAvailabilityListeners) {
- state |= HasPlaybackTargetAvailabilityListener;
- if (!m_mediaSession->wirelessVideoPlaybackDisabled(*this))
- state |= RequiresPlaybackTargetMonitoring;
- }
+ if (m_player && m_hasPlaybackTargetAvailabilityListeners && !m_mediaSession->wirelessVideoPlaybackDisabled(*this))
+ state |= RequiresPlaybackTargetMonitoring;
bool requireUserGesture = m_mediaSession->hasBehaviorRestriction(MediaElementSession::RequireUserGestureToAutoplayToExternalDevice);
if (m_readyState >= HAVE_METADATA && !requireUserGesture && !m_failedToPlayToWirelessTarget)
state |= ExternalDeviceAutoPlayCandidate;
- if (hasActiveVideo || hasAudio)
- state |= HasAudioOrVideo;
-
if (hasActiveVideo && endedPlayback())
state |= DidPlayToEnd;
#endif
Modified: branches/safari-601-branch/Source/WebCore/html/HTMLMediaElement.h (195376 => 195377)
--- branches/safari-601-branch/Source/WebCore/html/HTMLMediaElement.h 2016-01-20 21:51:00 UTC (rev 195376)
+++ branches/safari-601-branch/Source/WebCore/html/HTMLMediaElement.h 2016-01-20 22:18:33 UTC (rev 195377)
@@ -745,7 +745,6 @@
Synchronously,
};
void updateMediaState(UpdateMediaState updateState = UpdateMediaState::Synchronously);
- bool hasPlaybackTargetAvailabilityListeners() const { return m_hasPlaybackTargetAvailabilityListeners; }
#endif
Timer m_pendingActionTimer;
Modified: branches/safari-601-branch/Source/WebCore/page/MediaProducer.h (195376 => 195377)
--- branches/safari-601-branch/Source/WebCore/page/MediaProducer.h 2016-01-20 21:51:00 UTC (rev 195376)
+++ branches/safari-601-branch/Source/WebCore/page/MediaProducer.h 2016-01-20 22:18:33 UTC (rev 195377)
@@ -38,8 +38,6 @@
RequiresPlaybackTargetMonitoring = 1 << 3,
ExternalDeviceAutoPlayCandidate = 1 << 4,
DidPlayToEnd = 1 << 5,
- HasPlaybackTargetAvailabilityListener = 1 << 9,
- HasAudioOrVideo = 1 << 10,
};
typedef unsigned MediaStateFlags;
Modified: branches/safari-601-branch/Source/WebCore/platform/graphics/MediaPlaybackTargetContext.h (195376 => 195377)
--- branches/safari-601-branch/Source/WebCore/platform/graphics/MediaPlaybackTargetContext.h 2016-01-20 21:51:00 UTC (rev 195376)
+++ branches/safari-601-branch/Source/WebCore/platform/graphics/MediaPlaybackTargetContext.h 2016-01-20 22:18:33 UTC (rev 195377)
@@ -48,9 +48,8 @@
};
enum ContextState {
- Unknown = 0,
- OutputDeviceUnavailable = 1,
- OutputDeviceAvailable = 2,
+ Unavailable = 0,
+ OutputDeviceAvailable = 1 << 0,
};
typedef unsigned State;
@@ -98,7 +97,7 @@
Type m_type { None };
AVOutputContext *m_outputContext { nullptr };
String m_name;
- State m_state { Unknown };
+ State m_state { Unavailable };
};
}
Modified: branches/safari-601-branch/Source/WebCore/platform/mock/MediaPlaybackTargetMock.h (195376 => 195377)
--- branches/safari-601-branch/Source/WebCore/platform/mock/MediaPlaybackTargetMock.h 2016-01-20 21:51:00 UTC (rev 195376)
+++ branches/safari-601-branch/Source/WebCore/platform/mock/MediaPlaybackTargetMock.h 2016-01-20 22:18:33 UTC (rev 195377)
@@ -55,7 +55,7 @@
MediaPlaybackTargetMock(const String&, MediaPlaybackTargetContext::State);
String m_name;
- MediaPlaybackTargetContext::State m_state { MediaPlaybackTargetContext::Unknown };
+ MediaPlaybackTargetContext::State m_state { MediaPlaybackTargetContext::Unavailable };
mutable MediaPlaybackTargetContext m_context;
};
Modified: branches/safari-601-branch/Source/WebCore/platform/mock/MediaPlaybackTargetPickerMock.cpp (195376 => 195377)
--- branches/safari-601-branch/Source/WebCore/platform/mock/MediaPlaybackTargetPickerMock.cpp 2016-01-20 21:51:00 UTC (rev 195376)
+++ branches/safari-601-branch/Source/WebCore/platform/mock/MediaPlaybackTargetPickerMock.cpp 2016-01-20 22:18:33 UTC (rev 195377)
@@ -60,7 +60,7 @@
bool MediaPlaybackTargetPickerMock::externalOutputDeviceAvailable()
{
LOG(Media, "MediaPlaybackTargetPickerMock::externalOutputDeviceAvailable");
- return m_state == MediaPlaybackTargetContext::OutputDeviceAvailable;
+ return m_state & MediaPlaybackTargetContext::OutputDeviceAvailable;
}
Ref<MediaPlaybackTarget> MediaPlaybackTargetPickerMock::playbackTarget()
@@ -94,10 +94,10 @@
{
LOG(Media, "MediaPlaybackTargetPickerMock::startingMonitoringPlaybackTargets");
- if (m_state == MediaPlaybackTargetContext::OutputDeviceAvailable)
+ if (m_state & MediaPlaybackTargetContext::OutputDeviceAvailable)
availableDevicesDidChange();
- if (!m_deviceName.isEmpty() && m_state != MediaPlaybackTargetContext::Unknown)
+ if (!m_deviceName.isEmpty())
currentDeviceDidChange();
}
@@ -109,14 +109,14 @@
void MediaPlaybackTargetPickerMock::invalidatePlaybackTargets()
{
LOG(Media, "MediaPlaybackTargetPickerMock::invalidatePlaybackTargets");
- setState(emptyString(), MediaPlaybackTargetContext::Unknown);
+ setState(WTF::emptyString(), MediaPlaybackTargetContext::Unavailable);
}
void MediaPlaybackTargetPickerMock::setState(const String& deviceName, MediaPlaybackTargetContext::State state)
{
LOG(Media, "MediaPlaybackTargetPickerMock::setState - name = %s, state = 0x%x", deviceName.utf8().data(), (unsigned)state);
- if (deviceName != m_deviceName && state != MediaPlaybackTargetContext::Unknown) {
+ if (deviceName != m_deviceName) {
m_deviceName = deviceName;
currentDeviceDidChange();
}
Modified: branches/safari-601-branch/Source/WebCore/platform/mock/MediaPlaybackTargetPickerMock.h (195376 => 195377)
--- branches/safari-601-branch/Source/WebCore/platform/mock/MediaPlaybackTargetPickerMock.h 2016-01-20 21:51:00 UTC (rev 195376)
+++ branches/safari-601-branch/Source/WebCore/platform/mock/MediaPlaybackTargetPickerMock.h 2016-01-20 22:18:33 UTC (rev 195377)
@@ -58,7 +58,7 @@
String m_deviceName;
RunLoop::Timer<MediaPlaybackTargetPickerMock> m_timer;
- MediaPlaybackTargetContext::State m_state { MediaPlaybackTargetContext::Unknown };
+ MediaPlaybackTargetContext::State m_state { MediaPlaybackTargetContext::Unavailable };
bool m_showingMenu { false };
};
Modified: branches/safari-601-branch/Source/WebCore/testing/Internals.cpp (195376 => 195377)
--- branches/safari-601-branch/Source/WebCore/testing/Internals.cpp 2016-01-20 21:51:00 UTC (rev 195376)
+++ branches/safari-601-branch/Source/WebCore/testing/Internals.cpp 2016-01-20 22:18:33 UTC (rev 195377)
@@ -2818,14 +2818,10 @@
Page* page = contextDocument()->frame()->page();
ASSERT(page);
- MediaPlaybackTargetContext::State state = MediaPlaybackTargetContext::Unknown;
+ MediaPlaybackTargetContext::State state = MediaPlaybackTargetContext::Unavailable;
if (equalIgnoringCase(deviceState, "DeviceAvailable"))
state = MediaPlaybackTargetContext::OutputDeviceAvailable;
- else if (equalIgnoringCase(deviceState, "DeviceUnavailable"))
- state = MediaPlaybackTargetContext::OutputDeviceUnavailable;
- else if (equalIgnoringCase(deviceState, "Unknown"))
- state = MediaPlaybackTargetContext::Unknown;
else {
ec = INVALID_ACCESS_ERR;
return;