Diff
Modified: trunk/Source/WebCore/CMakeLists.txt (185005 => 185006)
--- trunk/Source/WebCore/CMakeLists.txt 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/CMakeLists.txt 2015-05-29 21:53:30 UTC (rev 185006)
@@ -2101,10 +2101,10 @@
platform/audio/HRTFElevation.cpp
platform/audio/HRTFKernel.cpp
platform/audio/HRTFPanner.cpp
- platform/audio/MediaSession.cpp
platform/audio/MediaSessionManager.cpp
platform/audio/MultiChannelResampler.cpp
platform/audio/Panner.cpp
+ platform/audio/PlatformMediaSession.cpp
platform/audio/Reverb.cpp
platform/audio/ReverbAccumulationBuffer.cpp
platform/audio/ReverbConvolver.cpp
Modified: trunk/Source/WebCore/ChangeLog (185005 => 185006)
--- trunk/Source/WebCore/ChangeLog 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/ChangeLog 2015-05-29 21:53:30 UTC (rev 185006)
@@ -1,3 +1,122 @@
+2015-05-29 Matt Rajca <mra...@apple.com>
+
+ Rename MediaSession and MediaSessionClient to PlatformMediaSession and PlatformMediaSessionClient so we can use MediaSession for the formal implementation of the Media Session spec.
+ https://bugs.webkit.org/show_bug.cgi?id=145447
+
+ Reviewed by Eric Carlson.
+
+ * Modules/webaudio/AudioContext.cpp:
+ (WebCore::AudioContext::AudioContext):
+ (WebCore::AudioContext::suspendPlayback):
+ * Modules/webaudio/AudioContext.h:
+ * WebCore.vcxproj/WebCore.vcxproj:
+ * WebCore.vcxproj/WebCore.vcxproj.filters:
+ * WebCore.xcodeproj/project.pbxproj:
+ * html/HTMLAudioElement.h:
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::pausedForUserInteraction):
+ (WebCore::HTMLMediaElement::mediaType):
+ (WebCore::HTMLMediaElement::presentationType):
+ (WebCore::HTMLMediaElement::displayType):
+ (WebCore::HTMLMediaElement::didReceiveRemoteControlCommand):
+ * html/HTMLMediaElement.h:
+ * html/HTMLMediaSession.cpp:
+ (WebCore::HTMLMediaSession::HTMLMediaSession):
+ (WebCore::HTMLMediaSession::requiresFullscreenForVideoPlayback):
+ * html/HTMLMediaSession.h:
+ * html/HTMLVideoElement.h:
+ * platform/RemoteCommandListener.h:
+ * platform/audio/MediaSessionManager.cpp:
+ (WebCore::MediaSessionManager::resetRestrictions):
+ (WebCore::MediaSessionManager::has):
+ (WebCore::MediaSessionManager::activeAudioSessionRequired):
+ (WebCore::MediaSessionManager::count):
+ (WebCore::MediaSessionManager::beginInterruption):
+ (WebCore::MediaSessionManager::endInterruption):
+ (WebCore::MediaSessionManager::addSession):
+ (WebCore::MediaSessionManager::removeSession):
+ (WebCore::MediaSessionManager::addRestriction):
+ (WebCore::MediaSessionManager::removeRestriction):
+ (WebCore::MediaSessionManager::restrictions):
+ (WebCore::MediaSessionManager::sessionWillBeginPlayback):
+ (WebCore::MediaSessionManager::sessionWillEndPlayback):
+ (WebCore::MediaSessionManager::setCurrentSession):
+ (WebCore::MediaSessionManager::currentSession):
+ (WebCore::MediaSessionManager::sessionRestrictsInlineVideoPlayback):
+ (WebCore::MediaSessionManager::sessionCanLoadMedia):
+ (WebCore::MediaSessionManager::applicationWillEnterBackground):
+ (WebCore::MediaSessionManager::applicationWillEnterForeground):
+ (WebCore::MediaSessionManager::didReceiveRemoteControlCommand):
+ (WebCore::MediaSessionManager::systemWillSleep):
+ (WebCore::MediaSessionManager::systemDidWake):
+ * platform/audio/MediaSessionManager.h:
+ (WebCore::MediaSessionManager::sessions):
+ * platform/audio/PlatformMediaSession.cpp: Renamed from Source/WebCore/platform/audio/MediaSession.cpp.
+ (WebCore::stateName):
+ (WebCore::PlatformMediaSession::create):
+ (WebCore::PlatformMediaSession::PlatformMediaSession):
+ (WebCore::PlatformMediaSession::~PlatformMediaSession):
+ (WebCore::PlatformMediaSession::setState):
+ (WebCore::PlatformMediaSession::beginInterruption):
+ (WebCore::PlatformMediaSession::endInterruption):
+ (WebCore::PlatformMediaSession::clientWillBeginPlayback):
+ (WebCore::PlatformMediaSession::clientWillPausePlayback):
+ (WebCore::PlatformMediaSession::pauseSession):
+ (WebCore::PlatformMediaSession::mediaType):
+ (WebCore::PlatformMediaSession::presentationType):
+ (WebCore::PlatformMediaSession::title):
+ (WebCore::PlatformMediaSession::duration):
+ (WebCore::PlatformMediaSession::currentTime):
+ (WebCore::PlatformMediaSession::canReceiveRemoteControlCommands):
+ (WebCore::PlatformMediaSession::didReceiveRemoteControlCommand):
+ (WebCore::PlatformMediaSession::visibilityChanged):
+ (WebCore::PlatformMediaSession::clientDataBufferingTimerFired):
+ (WebCore::PlatformMediaSession::updateClientDataBuffering):
+ (WebCore::PlatformMediaSession::isHidden):
+ (WebCore::PlatformMediaSession::displayType):
+ (WebCore::PlatformMediaSessionClient::mediaSessionTitle):
+ (WebCore::PlatformMediaSessionClient::mediaSessionDuration):
+ (WebCore::PlatformMediaSessionClient::mediaSessionCurrentTime):
+ * platform/audio/PlatformMediaSession.h: Renamed from Source/WebCore/platform/audio/MediaSession.h.
+ (WebCore::PlatformMediaSession::state):
+ (WebCore::PlatformMediaSession::canPlayToWirelessPlaybackTarget):
+ (WebCore::PlatformMediaSession::isPlayingToWirelessPlaybackTarget):
+ (WebCore::PlatformMediaSession::requiresPlaybackTargetRouteMonitoring):
+ (WebCore::PlatformMediaSession::client):
+ (WebCore::PlatformMediaSessionClient::PlatformMediaSessionClient):
+ (WebCore::PlatformMediaSessionClient::displayType):
+ (WebCore::PlatformMediaSessionClient::setShouldBufferData):
+ (WebCore::PlatformMediaSessionClient::elementIsHidden):
+ (WebCore::PlatformMediaSessionClient::wirelessRoutesAvailableDidChange):
+ (WebCore::PlatformMediaSessionClient::setWirelessPlaybackTarget):
+ (WebCore::PlatformMediaSessionClient::canPlayToWirelessPlaybackTarget):
+ (WebCore::PlatformMediaSessionClient::isPlayingToWirelessPlaybackTarget):
+ (WebCore::PlatformMediaSessionClient::setShouldPlayToPlaybackTarget):
+ (WebCore::PlatformMediaSessionClient::~PlatformMediaSessionClient):
+ * platform/audio/ios/MediaSessionManagerIOS.h:
+ * platform/audio/ios/MediaSessionManagerIOS.mm:
+ (WebCore::MediaSessionManageriOS::resetRestrictions):
+ (WebCore::MediaSessionManageriOS::sessionWillBeginPlayback):
+ (WebCore::MediaSessionManageriOS::sessionWillEndPlayback):
+ (WebCore::MediaSessionManageriOS::updateNowPlayingInfo):
+ (WebCore::MediaSessionManageriOS::sessionCanLoadMedia):
+ (-[WebMediaSessionHelper interruption:]):
+ * platform/audio/mac/MediaSessionManagerMac.cpp:
+ (MediaSessionManager::updateSessionState):
+ * platform/graphics/MediaPlayer.cpp:
+ (WebCore::MediaPlayer::handlePlaybackCommand):
+ * platform/graphics/MediaPlayer.h:
+ (WebCore::MediaPlayerClient::mediaPlayerHandlePlaybackCommand):
+ * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
+ (WebCore::MediaPlayerPrivateAVFoundation::rateChanged):
+ * platform/ios/RemoteCommandListenerIOS.mm:
+ (WebCore::RemoteCommandListenerIOS::RemoteCommandListenerIOS):
+ * testing/Internals.cpp:
+ (WebCore::Internals::beginMediaSessionInterruption):
+ (WebCore::Internals::endMediaSessionInterruption):
+ (WebCore::Internals::setMediaSessionRestrictions):
+ (WebCore::Internals::postRemoteControlCommand):
+
2015-05-29 Alex Christensen <achristen...@webkit.org>
[Content Extensions] Decrease maxNFASize
Modified: trunk/Source/WebCore/Modules/webaudio/AudioContext.cpp (185005 => 185006)
--- trunk/Source/WebCore/Modules/webaudio/AudioContext.cpp 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/Modules/webaudio/AudioContext.cpp 2015-05-29 21:53:30 UTC (rev 185006)
@@ -129,7 +129,7 @@
// Constructor for rendering to the audio hardware.
AudioContext::AudioContext(Document& document)
: ActiveDOMObject(&document)
- , m_mediaSession(MediaSession::create(*this))
+ , m_mediaSession(PlatformMediaSession::create(*this))
, m_eventQueue(std::make_unique<GenericEventQueue>(*this))
, m_graphOwnerThread(UndefinedThreadIdentifier)
{
@@ -145,7 +145,7 @@
AudioContext::AudioContext(Document& document, unsigned numberOfChannels, size_t numberOfFrames, float sampleRate)
: ActiveDOMObject(&document)
, m_isOfflineContext(true)
- , m_mediaSession(MediaSession::create(*this))
+ , m_mediaSession(PlatformMediaSession::create(*this))
, m_eventQueue(std::make_unique<GenericEventQueue>(*this))
, m_graphOwnerThread(UndefinedThreadIdentifier)
{
@@ -1200,7 +1200,7 @@
return;
if (m_state == State::Suspended) {
- if (m_mediaSession->state() == MediaSession::Interrupted)
+ if (m_mediaSession->state() == PlatformMediaSession::Interrupted)
setState(State::Interrupted);
return;
}
@@ -1209,7 +1209,7 @@
RefPtr<AudioContext> strongThis(this);
m_destinationNode->suspend([strongThis] {
- bool interrupted = strongThis->m_mediaSession->state() == MediaSession::Interrupted;
+ bool interrupted = strongThis->m_mediaSession->state() == PlatformMediaSession::Interrupted;
strongThis->setState(interrupted ? State::Interrupted : State::Suspended);
});
}
Modified: trunk/Source/WebCore/Modules/webaudio/AudioContext.h (185005 => 185006)
--- trunk/Source/WebCore/Modules/webaudio/AudioContext.h 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/Modules/webaudio/AudioContext.h 2015-05-29 21:53:30 UTC (rev 185006)
@@ -33,7 +33,7 @@
#include "EventTarget.h"
#include "MediaCanStartListener.h"
#include "MediaProducer.h"
-#include "MediaSession.h"
+#include "PlatformMediaSession.h"
#include <atomic>
#include <wtf/HashSet.h>
#include <wtf/MainThread.h>
@@ -76,7 +76,7 @@
// AudioContext is the cornerstone of the web audio API and all AudioNodes are created from it.
// For thread safety between the audio thread and the main thread, it has a rendering graph locking mechanism.
-class AudioContext : public ActiveDOMObject, public ThreadSafeRefCounted<AudioContext>, public EventTargetWithInlineData, public MediaCanStartListener, public MediaProducer, private MediaSessionClient {
+class AudioContext : public ActiveDOMObject, public ThreadSafeRefCounted<AudioContext>, public EventTargetWithInlineData, public MediaCanStartListener, public MediaProducer, private PlatformMediaSessionClient {
public:
// Create an AudioContext for rendering to the audio hardware.
static RefPtr<AudioContext> create(Document&, ExceptionCode&);
@@ -308,13 +308,13 @@
// Make sure to dereference them here.
void derefUnfinishedSourceNodes();
- // MediaSessionClient
- virtual MediaSession::MediaType mediaType() const override { return MediaSession::WebAudio; }
- virtual MediaSession::MediaType presentationType() const override { return MediaSession::WebAudio; }
+ // PlatformMediaSessionClient
+ virtual PlatformMediaSession::MediaType mediaType() const override { return PlatformMediaSession::WebAudio; }
+ virtual PlatformMediaSession::MediaType presentationType() const override { return PlatformMediaSession::WebAudio; }
virtual void mayResumePlayback(bool shouldResume) override;
virtual void suspendPlayback() override;
virtual bool canReceiveRemoteControlCommands() const override { return false; }
- virtual void didReceiveRemoteControlCommand(MediaSession::RemoteControlCommandType) override { }
+ virtual void didReceiveRemoteControlCommand(PlatformMediaSession::RemoteControlCommandType) override { }
virtual bool overrideBackgroundPlaybackRestriction() const override { return false; }
// EventTarget
@@ -363,7 +363,7 @@
Vector<AudioNode*> m_deferredFinishDerefList;
Vector<Vector<std::function<void()>>> m_stateReactions;
- std::unique_ptr<MediaSession> m_mediaSession;
+ std::unique_ptr<PlatformMediaSession> m_mediaSession;
std::unique_ptr<GenericEventQueue> m_eventQueue;
RefPtr<AudioBuffer> m_renderTarget;
Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj (185005 => 185006)
--- trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj 2015-05-29 21:53:30 UTC (rev 185006)
@@ -7395,7 +7395,7 @@
<ClCompile Include="..\platform\graphics\avfoundation\cf\WebCoreAVCFResourceLoader.cpp" />
<ClCompile Include="..\platform\graphics\ISOVTTCue.cpp" />
<ClCompile Include="..\platform\audio\AudioSession.cpp" />
- <ClCompile Include="..\platform\audio\MediaSession.cpp" />
+ <ClCompile Include="..\platform\audio\PlatformMediaSession.cpp" />
<ClCompile Include="..\platform\audio\MediaSessionManager.cpp" />
<ClCompile Include="..\platform\graphics\ANGLEWebKitBridge.cpp" />
<ClCompile Include="..\platform\graphics\avfoundation\cf\InbandTextTrackPrivateAVCF.cpp" />
@@ -19764,7 +19764,7 @@
<ClInclude Include="..\platform\FloatConversion.h" />
<ClInclude Include="..\platform\GenericTaskQueue.h" />
<ClInclude Include="..\platform\audio\AudioSession.h" />
- <ClInclude Include="..\platform\audio\MediaSession.h" />
+ <ClInclude Include="..\platform\audio\PlatformMediaSession.h" />
<ClInclude Include="..\platform\audio\MediaSessionManager.h" />
<ClInclude Include="..\platform\graphics\ANGLEWebKitBridge.h" />
<ClInclude Include="..\platform\graphics\AudioTrackPrivate.h" />
Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters (185005 => 185006)
--- trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters 2015-05-29 21:53:30 UTC (rev 185006)
@@ -7051,7 +7051,7 @@
<ClCompile Include="..\rendering\line\LineInfo.cpp">
<Filter>rendering\line</Filter>
</ClCompile>
- <ClCompile Include="..\platform\audio\MediaSession.cpp">
+ <ClCompile Include="..\platform\audio\PlatformMediaSession.cpp">
<Filter>platform\audio</Filter>
</ClCompile>
<ClCompile Include="..\platform\audio\MediaSessionManager.cpp">
@@ -14498,7 +14498,7 @@
<ClInclude Include="..\platform\audio\MediaSessionManager.h">
<Filter>platform\audio</Filter>
</ClInclude>
- <ClInclude Include="..\platform\audio\MediaSession.h">
+ <ClInclude Include="..\platform\audio\PlatformMediaSession.h">
<Filter>platform\audio</Filter>
</ClInclude>
<ClInclude Include="..\Modules\gamepad\NavigatorGamepad.h">
Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (185005 => 185006)
--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2015-05-29 21:53:30 UTC (rev 185006)
@@ -119,8 +119,8 @@
0709D7931AE5557E004E42F8 /* WebMediaSessionManagerMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 0709D7911AE5557E004E42F8 /* WebMediaSessionManagerMac.h */; settings = {ATTRIBUTES = (Private, ); }; };
0709D7951AE55A29004E42F8 /* WebMediaSessionManagerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 0709D7941AE55A29004E42F8 /* WebMediaSessionManagerClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
0709FC4E1025DEE30059CDBA /* AccessibilitySlider.h in Headers */ = {isa = PBXBuildFile; fileRef = 0709FC4D1025DEE30059CDBA /* AccessibilitySlider.h */; };
- 070E09191875EEFC003A1D3C /* MediaSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 070E09181875ED93003A1D3C /* MediaSession.h */; settings = {ATTRIBUTES = (Private, ); }; };
- 070E091B1875EF71003A1D3C /* MediaSession.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 070E091A1875EF71003A1D3C /* MediaSession.cpp */; };
+ 070E09191875EEFC003A1D3C /* PlatformMediaSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 070E09181875ED93003A1D3C /* PlatformMediaSession.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 070E091B1875EF71003A1D3C /* PlatformMediaSession.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 070E091A1875EF71003A1D3C /* PlatformMediaSession.cpp */; };
070F549817F12F6B00169E04 /* MediaStreamConstraintsValidationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 070F549717F12F6B00169E04 /* MediaStreamConstraintsValidationClient.h */; };
070F549E17F2402700169E04 /* AudioDestinationConsumer.h in Headers */ = {isa = PBXBuildFile; fileRef = 070F549D17F2402700169E04 /* AudioDestinationConsumer.h */; settings = {ATTRIBUTES = (Private, ); }; };
0711589117DF6F6600EDFE2B /* MediaStreamPrivate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0711588F17DF633700EDFE2B /* MediaStreamPrivate.cpp */; };
@@ -7134,8 +7134,8 @@
0709D7941AE55A29004E42F8 /* WebMediaSessionManagerClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebMediaSessionManagerClient.h; sourceTree = "<group>"; };
0709FC4D1025DEE30059CDBA /* AccessibilitySlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilitySlider.h; sourceTree = "<group>"; };
070DD8F50F01868000727DEB /* mediaControls.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = mediaControls.css; sourceTree = "<group>"; };
- 070E09181875ED93003A1D3C /* MediaSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaSession.h; sourceTree = "<group>"; };
- 070E091A1875EF71003A1D3C /* MediaSession.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaSession.cpp; sourceTree = "<group>"; };
+ 070E09181875ED93003A1D3C /* PlatformMediaSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformMediaSession.h; sourceTree = "<group>"; };
+ 070E091A1875EF71003A1D3C /* PlatformMediaSession.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformMediaSession.cpp; sourceTree = "<group>"; };
070F549717F12F6B00169E04 /* MediaStreamConstraintsValidationClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaStreamConstraintsValidationClient.h; sourceTree = "<group>"; };
070F549D17F2402700169E04 /* AudioDestinationConsumer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioDestinationConsumer.h; sourceTree = "<group>"; };
0711588F17DF633700EDFE2B /* MediaStreamPrivate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaStreamPrivate.cpp; sourceTree = "<group>"; };
@@ -23548,14 +23548,14 @@
FD31606912B026F700C1A359 /* HRTFKernel.h */,
FD31606A12B026F700C1A359 /* HRTFPanner.cpp */,
FD31606B12B026F700C1A359 /* HRTFPanner.h */,
- 070E091A1875EF71003A1D3C /* MediaSession.cpp */,
- 070E09181875ED93003A1D3C /* MediaSession.h */,
CDAE8C071746B95700532D78 /* MediaSessionManager.cpp */,
CDAE8C081746B95700532D78 /* MediaSessionManager.h */,
FDB1700314A2BAB200A2B5D9 /* MultiChannelResampler.cpp */,
FDB1700414A2BAB200A2B5D9 /* MultiChannelResampler.h */,
FD31606C12B026F700C1A359 /* Panner.cpp */,
FD31606D12B026F700C1A359 /* Panner.h */,
+ 070E091A1875EF71003A1D3C /* PlatformMediaSession.cpp */,
+ 070E09181875ED93003A1D3C /* PlatformMediaSession.h */,
FD31606E12B026F700C1A359 /* Reverb.cpp */,
FD31606F12B026F700C1A359 /* Reverb.h */,
FD31607012B026F700C1A359 /* ReverbAccumulationBuffer.cpp */,
@@ -25799,7 +25799,6 @@
D3AA10F4123A98AA0092152B /* MediaQueryMatcher.h in Headers */,
CEEFCD7A19DB31F7003876D7 /* MediaResourceLoader.h in Headers */,
CDBEAEAD19D92B6C00BEBA88 /* MediaSelectionGroupAVFObjC.h in Headers */,
- 070E09191875EEFC003A1D3C /* MediaSession.h in Headers */,
07F944161864D046005D31CB /* MediaSessionManager.h in Headers */,
07638A991884487200E15A1B /* MediaSessionManagerIOS.h in Headers */,
CD3A495F17A9D01B00274E42 /* MediaSource.h in Headers */,
@@ -26023,6 +26022,7 @@
0562F9611573F88F0031CA16 /* PlatformLayer.h in Headers */,
F544F78915CFB2A800AF33A8 /* PlatformLocale.h in Headers */,
CEEFCD7C19DB33DC003876D7 /* PlatformMediaResourceLoader.h in Headers */,
+ 070E09191875EEFC003A1D3C /* PlatformMediaSession.h in Headers */,
932871C00B20DEB70049035A /* PlatformMenuDescription.h in Headers */,
41BF70100FE86F61005E8DEC /* PlatformMessagePortChannel.h in Headers */,
935C476909AC4D4300A6AAB4 /* PlatformMouseEvent.h in Headers */,
@@ -29378,7 +29378,6 @@
D3AA10F3123A98AA0092152B /* MediaQueryMatcher.cpp in Sources */,
CEEFCD7919DB31F7003876D7 /* MediaResourceLoader.cpp in Sources */,
CDBEAEAC19D92B6C00BEBA88 /* MediaSelectionGroupAVFObjC.mm in Sources */,
- 070E091B1875EF71003A1D3C /* MediaSession.cpp in Sources */,
CDAE8C091746B95700532D78 /* MediaSessionManager.cpp in Sources */,
07638A9A1884487200E15A1B /* MediaSessionManagerIOS.mm in Sources */,
07EDC3EE1AACB75D00983EB5 /* MediaSessionManagerMac.cpp in Sources */,
@@ -29549,6 +29548,7 @@
26601EC014B3B9AD0012C0FE /* PlatformEventFactoryIOS.mm in Sources */,
BCAA486F14A052530088FAC4 /* PlatformEventFactoryMac.mm in Sources */,
F544F78815CFB2A800AF33A8 /* PlatformLocale.cpp in Sources */,
+ 070E091B1875EF71003A1D3C /* PlatformMediaSession.cpp in Sources */,
41BF700F0FE86F61005E8DEC /* PlatformMessagePortChannel.cpp in Sources */,
C5278B0C17F212EA003A2998 /* PlatformPasteboardIOS.mm in Sources */,
C598902E14E9B0F800E8D18B /* PlatformPasteboardMac.mm in Sources */,
Modified: trunk/Source/WebCore/html/HTMLAudioElement.h (185005 => 185006)
--- trunk/Source/WebCore/html/HTMLAudioElement.h 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/html/HTMLAudioElement.h 2015-05-29 21:53:30 UTC (rev 185006)
@@ -42,7 +42,7 @@
private:
HTMLAudioElement(const QualifiedName&, Document&, bool);
- virtual MediaSession::MediaType presentationType() const override { return MediaSession::Audio; }
+ virtual PlatformMediaSession::MediaType presentationType() const override { return PlatformMediaSession::Audio; }
};
} // namespace WebCore
Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (185005 => 185006)
--- trunk/Source/WebCore/html/HTMLMediaElement.cpp 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp 2015-05-29 21:53:30 UTC (rev 185006)
@@ -4533,7 +4533,7 @@
bool HTMLMediaElement::pausedForUserInteraction() const
{
- if (m_mediaSession->state() == MediaSession::Interrupted)
+ if (m_mediaSession->state() == PlatformMediaSession::Interrupted)
return true;
return false;
@@ -6167,33 +6167,33 @@
return 0;
}
-MediaSession::MediaType HTMLMediaElement::mediaType() const
+PlatformMediaSession::MediaType HTMLMediaElement::mediaType() const
{
if (m_player && m_readyState >= HAVE_METADATA)
- return hasVideo() ? MediaSession::Video : MediaSession::Audio;
+ return hasVideo() ? PlatformMediaSession::Video : PlatformMediaSession::Audio;
return presentationType();
}
-MediaSession::MediaType HTMLMediaElement::presentationType() const
+PlatformMediaSession::MediaType HTMLMediaElement::presentationType() const
{
if (hasTagName(HTMLNames::videoTag))
- return MediaSession::Video;
+ return PlatformMediaSession::Video;
- return MediaSession::Audio;
+ return PlatformMediaSession::Audio;
}
-MediaSession::DisplayType HTMLMediaElement::displayType() const
+PlatformMediaSession::DisplayType HTMLMediaElement::displayType() const
{
if (m_videoFullscreenMode == VideoFullscreenModeStandard)
- return MediaSession::Fullscreen;
+ return PlatformMediaSession::Fullscreen;
if (m_videoFullscreenMode & VideoFullscreenModeOptimized)
- return MediaSession::Optimized;
+ return PlatformMediaSession::Optimized;
if (m_videoFullscreenMode == VideoFullscreenModeNone)
- return MediaSession::Normal;
+ return PlatformMediaSession::Normal;
ASSERT_NOT_REACHED();
- return MediaSession::Normal;
+ return PlatformMediaSession::Normal;
}
#if ENABLE(MEDIA_SOURCE)
@@ -6225,28 +6225,28 @@
return m_currentSrc;
}
-void HTMLMediaElement::didReceiveRemoteControlCommand(MediaSession::RemoteControlCommandType command)
+void HTMLMediaElement::didReceiveRemoteControlCommand(PlatformMediaSession::RemoteControlCommandType command)
{
LOG(Media, "HTMLMediaElement::didReceiveRemoteControlCommand(%p) - %i", this, static_cast<int>(command));
switch (command) {
- case MediaSession::PlayCommand:
+ case PlatformMediaSession::PlayCommand:
play();
break;
- case MediaSession::PauseCommand:
+ case PlatformMediaSession::PauseCommand:
pause();
break;
- case MediaSession::TogglePlayPauseCommand:
+ case PlatformMediaSession::TogglePlayPauseCommand:
canPlay() ? play() : pause();
break;
- case MediaSession::BeginSeekingBackwardCommand:
+ case PlatformMediaSession::BeginSeekingBackwardCommand:
beginScanning(Backward);
break;
- case MediaSession::BeginSeekingForwardCommand:
+ case PlatformMediaSession::BeginSeekingForwardCommand:
beginScanning(Forward);
break;
- case MediaSession::EndSeekingBackwardCommand:
- case MediaSession::EndSeekingForwardCommand:
+ case PlatformMediaSession::EndSeekingBackwardCommand:
+ case PlatformMediaSession::EndSeekingForwardCommand:
endScanning();
break;
default:
Modified: trunk/Source/WebCore/html/HTMLMediaElement.h (185005 => 185006)
--- trunk/Source/WebCore/html/HTMLMediaElement.h 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/html/HTMLMediaElement.h 2015-05-29 21:53:30 UTC (rev 185006)
@@ -97,7 +97,7 @@
class HTMLMediaElement
: public HTMLElement
- , private MediaPlayerClient, public MediaPlayerSupportsTypeClient, private MediaCanStartListener, public ActiveDOMObject, public MediaControllerInterface , public MediaSessionClient, private MediaProducer
+ , private MediaPlayerClient, public MediaPlayerSupportsTypeClient, private MediaCanStartListener, public ActiveDOMObject, public MediaControllerInterface , public PlatformMediaSessionClient, private MediaProducer
#if ENABLE(VIDEO_TRACK)
, private AudioTrackClient
, private TextTrackClient
@@ -568,7 +568,7 @@
#endif
virtual bool mediaPlayerShouldWaitForResponseToAuthenticationChallenge(const AuthenticationChallenge&) override;
- virtual void mediaPlayerHandlePlaybackCommand(MediaSession::RemoteControlCommandType command) override { didReceiveRemoteControlCommand(command); }
+ virtual void mediaPlayerHandlePlaybackCommand(PlatformMediaSession::RemoteControlCommandType command) override { didReceiveRemoteControlCommand(command); }
virtual String mediaPlayerSourceApplicationIdentifier() const override;
virtual Vector<String> mediaPlayerPreferredAudioCharacteristics() const override;
@@ -690,17 +690,17 @@
bool ensureMediaControlsInjectedScript();
#endif
- // MediaSessionClient Overrides
- virtual MediaSession::MediaType mediaType() const override;
- virtual MediaSession::MediaType presentationType() const override;
- virtual MediaSession::DisplayType displayType() const override;
+ // PlatformMediaSessionClient Overrides
+ virtual PlatformMediaSession::MediaType mediaType() const override;
+ virtual PlatformMediaSession::MediaType presentationType() const override;
+ virtual PlatformMediaSession::DisplayType displayType() const override;
virtual void suspendPlayback() override;
virtual void mayResumePlayback(bool shouldResume) override;
virtual String mediaSessionTitle() const override;
virtual double mediaSessionDuration() const override { return duration(); }
virtual double mediaSessionCurrentTime() const override { return currentTime(); }
virtual bool canReceiveRemoteControlCommands() const override { return true; }
- virtual void didReceiveRemoteControlCommand(MediaSession::RemoteControlCommandType) override;
+ virtual void didReceiveRemoteControlCommand(PlatformMediaSession::RemoteControlCommandType) override;
virtual bool overrideBackgroundPlaybackRestriction() const override;
virtual void pageMutedStateDidChange() override;
Modified: trunk/Source/WebCore/html/HTMLVideoElement.h (185005 => 185006)
--- trunk/Source/WebCore/html/HTMLVideoElement.h 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/html/HTMLVideoElement.h 2015-05-29 21:53:30 UTC (rev 185006)
@@ -104,7 +104,7 @@
virtual void didMoveToNewDocument(Document* oldDocument) override;
virtual void setDisplayMode(DisplayMode) override;
- virtual MediaSession::MediaType presentationType() const override { return MediaSession::Video; }
+ virtual PlatformMediaSession::MediaType presentationType() const override { return PlatformMediaSession::Video; }
std::unique_ptr<HTMLImageLoader> m_imageLoader;
Modified: trunk/Source/WebCore/html/MediaElementSession.cpp (185005 => 185006)
--- trunk/Source/WebCore/html/MediaElementSession.cpp 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/html/MediaElementSession.cpp 2015-05-29 21:53:30 UTC (rev 185006)
@@ -78,8 +78,8 @@
}
#endif
-MediaElementSession::MediaElementSession(MediaSessionClient& client)
- : MediaSession(client)
+MediaElementSession::MediaElementSession(PlatformMediaSessionClient& client)
+ : PlatformMediaSession(client)
, m_restrictions(NoRestrictions)
#if ENABLE(WIRELESS_PLAYBACK_TARGET)
, m_targetAvailabilityChangedTimer(*this, &MediaElementSession::targetAvailabilityChangedTimerFired)
Modified: trunk/Source/WebCore/html/MediaElementSession.h (185005 => 185006)
--- trunk/Source/WebCore/html/MediaElementSession.h 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/html/MediaElementSession.h 2015-05-29 21:53:30 UTC (rev 185006)
@@ -29,7 +29,7 @@
#if ENABLE(VIDEO)
#include "MediaPlayer.h"
-#include "MediaSession.h"
+#include "PlatformMediaSession.h"
#include "Timer.h"
namespace WebCore {
@@ -38,10 +38,10 @@
class HTMLMediaElement;
class SourceBuffer;
-class MediaElementSession final : public MediaSession {
+class MediaElementSession final : public PlatformMediaSession {
WTF_MAKE_FAST_ALLOCATED;
public:
- explicit MediaElementSession(MediaSessionClient&);
+ explicit MediaElementSession(PlatformMediaSessionClient&);
virtual ~MediaElementSession() { }
void registerWithDocument(const HTMLMediaElement&);
Modified: trunk/Source/WebCore/platform/RemoteCommandListener.h (185005 => 185006)
--- trunk/Source/WebCore/platform/RemoteCommandListener.h 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/platform/RemoteCommandListener.h 2015-05-29 21:53:30 UTC (rev 185006)
@@ -26,7 +26,7 @@
#ifndef RemoteCommandListener_h
#define RemoteCommandListener_h
-#include "MediaSession.h"
+#include "PlatformMediaSession.h"
namespace WebCore {
@@ -34,7 +34,7 @@
WTF_MAKE_FAST_ALLOCATED;
public:
virtual ~RemoteCommandListenerClient() { }
- virtual void didReceiveRemoteControlCommand(MediaSession::RemoteControlCommandType) = 0;
+ virtual void didReceiveRemoteControlCommand(PlatformMediaSession::RemoteControlCommandType) = 0;
};
class RemoteCommandListener {
Deleted: trunk/Source/WebCore/platform/audio/MediaSession.cpp (185005 => 185006)
--- trunk/Source/WebCore/platform/audio/MediaSession.cpp 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/platform/audio/MediaSession.cpp 2015-05-29 21:53:30 UTC (rev 185006)
@@ -1,245 +0,0 @@
-/*
- * Copyright (C) 2014-2015 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "MediaSession.h"
-
-#if ENABLE(VIDEO)
-#include "HTMLMediaElement.h"
-#include "Logging.h"
-#include "MediaPlayer.h"
-#include "MediaSessionManager.h"
-
-namespace WebCore {
-
-const double kClientDataBufferingTimerThrottleDelay = 0.1;
-
-#if !LOG_DISABLED
-static const char* stateName(MediaSession::State state)
-{
-#define CASE(state) case MediaSession::state: return #state
- switch (state) {
- CASE(Idle);
- CASE(Playing);
- CASE(Paused);
- CASE(Interrupted);
- }
-
- ASSERT_NOT_REACHED();
- return "";
-}
-#endif
-
-std::unique_ptr<MediaSession> MediaSession::create(MediaSessionClient& client)
-{
- return std::make_unique<MediaSession>(client);
-}
-
-MediaSession::MediaSession(MediaSessionClient& client)
- : m_client(client)
- , m_clientDataBufferingTimer(*this, &MediaSession::clientDataBufferingTimerFired)
- , m_state(Idle)
- , m_stateToRestore(Idle)
- , m_notifyingClient(false)
-{
- ASSERT(m_client.mediaType() >= None && m_client.mediaType() <= WebAudio);
- MediaSessionManager::sharedManager().addSession(*this);
-}
-
-MediaSession::~MediaSession()
-{
- MediaSessionManager::sharedManager().removeSession(*this);
-}
-
-void MediaSession::setState(State state)
-{
- LOG(Media, "MediaSession::setState(%p) - %s", this, stateName(state));
- m_state = state;
-}
-
-void MediaSession::beginInterruption(InterruptionType type)
-{
- LOG(Media, "MediaSession::beginInterruption(%p), state = %s, interruption count = %i", this, stateName(m_state), m_interruptionCount);
-
- if (++m_interruptionCount > 1 || (type == EnteringBackground && client().overrideBackgroundPlaybackRestriction()))
- return;
-
- m_stateToRestore = state();
- m_notifyingClient = true;
- setState(Interrupted);
- client().suspendPlayback();
- m_notifyingClient = false;
-}
-
-void MediaSession::endInterruption(EndInterruptionFlags flags)
-{
- LOG(Media, "MediaSession::endInterruption(%p) - flags = %i, stateToRestore = %s, interruption count = %i", this, (int)flags, stateName(m_stateToRestore), m_interruptionCount);
-
- if (!m_interruptionCount) {
- LOG(Media, "MediaSession::endInterruption(%p) - !! ignoring spurious interruption end !!", this);
- return;
- }
-
- if (--m_interruptionCount)
- return;
-
- State stateToRestore = m_stateToRestore;
- m_stateToRestore = Idle;
- setState(Paused);
-
- bool shouldResume = flags & MayResumePlaying && stateToRestore == Playing;
- client().mayResumePlayback(shouldResume);
-}
-
-bool MediaSession::clientWillBeginPlayback()
-{
- if (m_notifyingClient)
- return true;
-
- if (!MediaSessionManager::sharedManager().sessionWillBeginPlayback(*this)) {
- if (state() == Interrupted)
- m_stateToRestore = Playing;
- return false;
- }
-
- setState(Playing);
- updateClientDataBuffering();
- return true;
-}
-
-bool MediaSession::clientWillPausePlayback()
-{
- if (m_notifyingClient)
- return true;
-
- LOG(Media, "MediaSession::clientWillPausePlayback(%p)- state = %s", this, stateName(m_state));
- if (state() == Interrupted) {
- m_stateToRestore = Paused;
- LOG(Media, " setting stateToRestore to \"Paused\"");
- return false;
- }
-
- setState(Paused);
- MediaSessionManager::sharedManager().sessionWillEndPlayback(*this);
- if (!m_clientDataBufferingTimer.isActive())
- m_clientDataBufferingTimer.startOneShot(kClientDataBufferingTimerThrottleDelay);
- return true;
-}
-
-void MediaSession::pauseSession()
-{
- LOG(Media, "MediaSession::pauseSession(%p)", this);
- m_client.suspendPlayback();
-}
-
-MediaSession::MediaType MediaSession::mediaType() const
-{
- return m_client.mediaType();
-}
-
-MediaSession::MediaType MediaSession::presentationType() const
-{
- return m_client.presentationType();
-}
-
-String MediaSession::title() const
-{
- return m_client.mediaSessionTitle();
-}
-
-double MediaSession::duration() const
-{
- return m_client.mediaSessionDuration();
-}
-
-double MediaSession::currentTime() const
-{
- return m_client.mediaSessionCurrentTime();
-}
-
-bool MediaSession::canReceiveRemoteControlCommands() const
-{
- return m_client.canReceiveRemoteControlCommands();
-}
-
-void MediaSession::didReceiveRemoteControlCommand(RemoteControlCommandType command)
-{
- m_client.didReceiveRemoteControlCommand(command);
-}
-
-void MediaSession::visibilityChanged()
-{
- if (!m_clientDataBufferingTimer.isActive())
- m_clientDataBufferingTimer.startOneShot(kClientDataBufferingTimerThrottleDelay);
-}
-
-void MediaSession::clientDataBufferingTimerFired()
-{
- LOG(Media, "MediaSession::clientDataBufferingTimerFired(%p)- visible = %s", this, m_client.elementIsHidden() ? "false" : "true");
-
- updateClientDataBuffering();
-
- if (m_state != Playing || !m_client.elementIsHidden())
- return;
-
- MediaSessionManager::SessionRestrictions restrictions = MediaSessionManager::sharedManager().restrictions(mediaType());
- if ((restrictions & MediaSessionManager::BackgroundTabPlaybackRestricted) == MediaSessionManager::BackgroundTabPlaybackRestricted)
- pauseSession();
-}
-
-void MediaSession::updateClientDataBuffering()
-{
- if (m_clientDataBufferingTimer.isActive())
- m_clientDataBufferingTimer.stop();
-
- m_client.setShouldBufferData(MediaSessionManager::sharedManager().sessionCanLoadMedia(*this));
-}
-
-bool MediaSession::isHidden() const
-{
- return m_client.elementIsHidden();
-}
-
-MediaSession::DisplayType MediaSession::displayType() const
-{
- return m_client.displayType();
-}
-
-String MediaSessionClient::mediaSessionTitle() const
-{
- return String();
-}
-
-double MediaSessionClient::mediaSessionDuration() const
-{
- return MediaPlayer::invalidTime();
-}
-
-double MediaSessionClient::mediaSessionCurrentTime() const
-{
- return MediaPlayer::invalidTime();
-}
-}
-#endif
Deleted: trunk/Source/WebCore/platform/audio/MediaSession.h (185005 => 185006)
--- trunk/Source/WebCore/platform/audio/MediaSession.h 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/platform/audio/MediaSession.h 2015-05-29 21:53:30 UTC (rev 185006)
@@ -1,186 +0,0 @@
-/*
- * Copyright (C) 2014-2015 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef MediaSession_h
-#define MediaSession_h
-
-#include "MediaProducer.h"
-#include "Timer.h"
-#include <wtf/Noncopyable.h>
-#include <wtf/text/WTFString.h>
-
-#if ENABLE(WIRELESS_PLAYBACK_TARGET)
-#include "MediaPlaybackTargetClient.h"
-#endif
-
-namespace WebCore {
-
-class MediaPlaybackTarget;
-class MediaSessionClient;
-
-class MediaSession
-#if ENABLE(WIRELESS_PLAYBACK_TARGET)
- : public MediaPlaybackTargetClient
-#endif
-{
-public:
- static std::unique_ptr<MediaSession> create(MediaSessionClient&);
-
- MediaSession(MediaSessionClient&);
- virtual ~MediaSession();
-
- enum MediaType {
- None = 0,
- Video,
- Audio,
- WebAudio,
- };
- MediaType mediaType() const;
- MediaType presentationType() const;
-
- enum State {
- Idle,
- Playing,
- Paused,
- Interrupted,
- };
- State state() const { return m_state; }
- void setState(State);
-
- enum InterruptionType {
- SystemSleep,
- EnteringBackground,
- SystemInterruption,
- };
- enum EndInterruptionFlags {
- NoFlags = 0,
- MayResumePlaying = 1 << 0,
- };
- void beginInterruption(InterruptionType);
- void endInterruption(EndInterruptionFlags);
-
- void applicationWillEnterForeground() const;
- void applicationWillEnterBackground() const;
-
- bool clientWillBeginPlayback();
- bool clientWillPausePlayback();
-
- void pauseSession();
-
- void visibilityChanged();
-
- String title() const;
- double duration() const;
- double currentTime() const;
-
- enum RemoteControlCommandType {
- NoCommand,
- PlayCommand,
- PauseCommand,
- StopCommand,
- TogglePlayPauseCommand,
- BeginSeekingBackwardCommand,
- EndSeekingBackwardCommand,
- BeginSeekingForwardCommand,
- EndSeekingForwardCommand,
- };
- bool canReceiveRemoteControlCommands() const;
- void didReceiveRemoteControlCommand(RemoteControlCommandType);
-
- enum DisplayType {
- Normal,
- Fullscreen,
- Optimized,
- };
- DisplayType displayType() const;
-
- bool isHidden() const;
-
- virtual bool canPlayToWirelessPlaybackTarget() const { return false; }
- virtual bool isPlayingToWirelessPlaybackTarget() const { return false; }
-
-#if ENABLE(WIRELESS_PLAYBACK_TARGET)
- // MediaPlaybackTargetClient
- virtual void setPlaybackTarget(Ref<MediaPlaybackTarget>&&) override { }
- virtual void externalOutputDeviceAvailableDidChange(bool) override { }
- virtual void setShouldPlayToPlaybackTarget(bool) override { }
-#endif
-
-#if PLATFORM(IOS)
- virtual bool requiresPlaybackTargetRouteMonitoring() const { return false; }
-#endif
-
-protected:
- MediaSessionClient& client() const { return m_client; }
-
-private:
- void clientDataBufferingTimerFired();
- void updateClientDataBuffering();
-
- MediaSessionClient& m_client;
- Timer m_clientDataBufferingTimer;
- State m_state;
- State m_stateToRestore;
- int m_interruptionCount { 0 };
- bool m_notifyingClient;
-};
-
-class MediaSessionClient {
- WTF_MAKE_NONCOPYABLE(MediaSessionClient);
-public:
- MediaSessionClient() { }
-
- virtual MediaSession::MediaType mediaType() const = 0;
- virtual MediaSession::MediaType presentationType() const = 0;
- virtual MediaSession::DisplayType displayType() const { return MediaSession::Normal; }
-
- virtual void mayResumePlayback(bool shouldResume) = 0;
- virtual void suspendPlayback() = 0;
-
- virtual String mediaSessionTitle() const;
- virtual double mediaSessionDuration() const;
- virtual double mediaSessionCurrentTime() const;
-
- virtual bool canReceiveRemoteControlCommands() const = 0;
- virtual void didReceiveRemoteControlCommand(MediaSession::RemoteControlCommandType) = 0;
-
- virtual void setShouldBufferData(bool) { }
- virtual bool elementIsHidden() const { return false; }
-
- virtual bool overrideBackgroundPlaybackRestriction() const = 0;
-
- virtual void wirelessRoutesAvailableDidChange() { }
- virtual void setWirelessPlaybackTarget(Ref<MediaPlaybackTarget>&&) { }
- virtual bool canPlayToWirelessPlaybackTarget() const { return false; }
- virtual bool isPlayingToWirelessPlaybackTarget() const { return false; }
- virtual void setShouldPlayToPlaybackTarget(bool) { }
-
-protected:
- virtual ~MediaSessionClient() { }
-};
-
-}
-
-#endif // MediaSession_h
Modified: trunk/Source/WebCore/platform/audio/MediaSessionManager.cpp (185005 => 185006)
--- trunk/Source/WebCore/platform/audio/MediaSessionManager.cpp 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/platform/audio/MediaSessionManager.cpp 2015-05-29 21:53:30 UTC (rev 185006)
@@ -31,7 +31,7 @@
#include "AudioSession.h"
#include "Logging.h"
#include "NotImplemented.h"
-#include "MediaSession.h"
+#include "PlatformMediaSession.h"
namespace WebCore {
@@ -51,14 +51,14 @@
void MediaSessionManager::resetRestrictions()
{
- m_restrictions[MediaSession::Video] = NoRestrictions;
- m_restrictions[MediaSession::Audio] = NoRestrictions;
- m_restrictions[MediaSession::WebAudio] = NoRestrictions;
+ m_restrictions[PlatformMediaSession::Video] = NoRestrictions;
+ m_restrictions[PlatformMediaSession::Audio] = NoRestrictions;
+ m_restrictions[PlatformMediaSession::WebAudio] = NoRestrictions;
}
-bool MediaSessionManager::has(MediaSession::MediaType type) const
+bool MediaSessionManager::has(PlatformMediaSession::MediaType type) const
{
- ASSERT(type >= MediaSession::None && type <= MediaSession::WebAudio);
+ ASSERT(type >= PlatformMediaSession::None && type <= PlatformMediaSession::WebAudio);
for (auto* session : m_sessions) {
if (session->mediaType() == type)
@@ -71,16 +71,16 @@
bool MediaSessionManager::activeAudioSessionRequired() const
{
for (auto* session : m_sessions) {
- if (session->mediaType() != MediaSession::None && session->state() == MediaSession::State::Playing)
+ if (session->mediaType() != PlatformMediaSession::None && session->state() == PlatformMediaSession::State::Playing)
return true;
}
return false;
}
-int MediaSessionManager::count(MediaSession::MediaType type) const
+int MediaSessionManager::count(PlatformMediaSession::MediaType type) const
{
- ASSERT(type >= MediaSession::None && type <= MediaSession::WebAudio);
+ ASSERT(type >= PlatformMediaSession::None && type <= PlatformMediaSession::WebAudio);
int count = 0;
for (auto* session : m_sessions) {
@@ -91,34 +91,34 @@
return count;
}
-void MediaSessionManager::beginInterruption(MediaSession::InterruptionType type)
+void MediaSessionManager::beginInterruption(PlatformMediaSession::InterruptionType type)
{
LOG(Media, "MediaSessionManager::beginInterruption");
m_interrupted = true;
- Vector<MediaSession*> sessions = m_sessions;
+ Vector<PlatformMediaSession*> sessions = m_sessions;
for (auto* session : sessions)
session->beginInterruption(type);
updateSessionState();
}
-void MediaSessionManager::endInterruption(MediaSession::EndInterruptionFlags flags)
+void MediaSessionManager::endInterruption(PlatformMediaSession::EndInterruptionFlags flags)
{
LOG(Media, "MediaSessionManager::endInterruption");
m_interrupted = false;
- Vector<MediaSession*> sessions = m_sessions;
+ Vector<PlatformMediaSession*> sessions = m_sessions;
for (auto* session : sessions)
session->endInterruption(flags);
}
-void MediaSessionManager::addSession(MediaSession& session)
+void MediaSessionManager::addSession(PlatformMediaSession& session)
{
LOG(Media, "MediaSessionManager::addSession - %p", &session);
m_sessions.append(&session);
if (m_interrupted)
- session.setState(MediaSession::Interrupted);
+ session.setState(PlatformMediaSession::Interrupted);
if (!m_remoteCommandListener)
m_remoteCommandListener = RemoteCommandListener::create(*this);
@@ -129,7 +129,7 @@
updateSessionState();
}
-void MediaSessionManager::removeSession(MediaSession& session)
+void MediaSessionManager::removeSession(PlatformMediaSession& session)
{
LOG(Media, "MediaSessionManager::removeSession - %p", &session);
@@ -148,33 +148,33 @@
updateSessionState();
}
-void MediaSessionManager::addRestriction(MediaSession::MediaType type, SessionRestrictions restriction)
+void MediaSessionManager::addRestriction(PlatformMediaSession::MediaType type, SessionRestrictions restriction)
{
- ASSERT(type > MediaSession::None && type <= MediaSession::WebAudio);
+ ASSERT(type > PlatformMediaSession::None && type <= PlatformMediaSession::WebAudio);
m_restrictions[type] |= restriction;
}
-void MediaSessionManager::removeRestriction(MediaSession::MediaType type, SessionRestrictions restriction)
+void MediaSessionManager::removeRestriction(PlatformMediaSession::MediaType type, SessionRestrictions restriction)
{
- ASSERT(type > MediaSession::None && type <= MediaSession::WebAudio);
+ ASSERT(type > PlatformMediaSession::None && type <= PlatformMediaSession::WebAudio);
m_restrictions[type] &= ~restriction;
}
-MediaSessionManager::SessionRestrictions MediaSessionManager::restrictions(MediaSession::MediaType type)
+MediaSessionManager::SessionRestrictions MediaSessionManager::restrictions(PlatformMediaSession::MediaType type)
{
- ASSERT(type > MediaSession::None && type <= MediaSession::WebAudio);
+ ASSERT(type > PlatformMediaSession::None && type <= PlatformMediaSession::WebAudio);
return m_restrictions[type];
}
-bool MediaSessionManager::sessionWillBeginPlayback(MediaSession& session)
+bool MediaSessionManager::sessionWillBeginPlayback(PlatformMediaSession& session)
{
LOG(Media, "MediaSessionManager::sessionWillBeginPlayback - %p", &session);
setCurrentSession(session);
- MediaSession::MediaType sessionType = session.mediaType();
+ PlatformMediaSession::MediaType sessionType = session.mediaType();
SessionRestrictions restrictions = m_restrictions[sessionType];
- if (session.state() == MediaSession::Interrupted && restrictions & InterruptedPlaybackNotPermitted)
+ if (session.state() == PlatformMediaSession::Interrupted && restrictions & InterruptedPlaybackNotPermitted)
return false;
#if USE(AUDIO_SESSION)
@@ -183,9 +183,9 @@
#endif
if (m_interrupted)
- endInterruption(MediaSession::NoFlags);
+ endInterruption(PlatformMediaSession::NoFlags);
- Vector<MediaSession*> sessions = m_sessions;
+ Vector<PlatformMediaSession*> sessions = m_sessions;
for (auto* oneSession : sessions) {
if (_oneSession_ == &session)
continue;
@@ -197,7 +197,7 @@
return true;
}
-void MediaSessionManager::sessionWillEndPlayback(MediaSession& session)
+void MediaSessionManager::sessionWillEndPlayback(PlatformMediaSession& session)
{
LOG(Media, "MediaSessionManager::sessionWillEndPlayback - %p", &session);
@@ -207,17 +207,17 @@
size_t pausingSessionIndex = notFound;
size_t lastPlayingSessionIndex = notFound;
for (size_t i = 0; i < m_sessions.size(); ++i) {
- MediaSession* _oneSession_ = m_sessions[i];
+ PlatformMediaSession* _oneSession_ = m_sessions[i];
if (_oneSession_ == &session) {
pausingSessionIndex = i;
continue;
}
- if (oneSession->state() == MediaSession::Playing) {
+ if (oneSession->state() == PlatformMediaSession::Playing) {
lastPlayingSessionIndex = i;
continue;
}
- if (oneSession->state() != MediaSession::Playing)
+ if (oneSession->state() != PlatformMediaSession::Playing)
break;
}
if (lastPlayingSessionIndex == notFound || pausingSessionIndex == notFound)
@@ -232,7 +232,7 @@
LOG(Media, "MediaSessionManager::sessionWillEndPlayback - session moved from index %zu to %zu", pausingSessionIndex, lastPlayingSessionIndex);
}
-void MediaSessionManager::setCurrentSession(MediaSession& session)
+void MediaSessionManager::setCurrentSession(PlatformMediaSession& session)
{
LOG(Media, "MediaSessionManager::setCurrentSession - %p", &session);
@@ -250,7 +250,7 @@
LOG(Media, "MediaSessionManager::setCurrentSession - session moved from index %zu to 0", index);
}
-MediaSession* MediaSessionManager::currentSession()
+PlatformMediaSession* MediaSessionManager::currentSession()
{
if (!m_sessions.size())
return nullptr;
@@ -258,37 +258,37 @@
return m_sessions[0];
}
-bool MediaSessionManager::sessionRestrictsInlineVideoPlayback(const MediaSession& session) const
+bool MediaSessionManager::sessionRestrictsInlineVideoPlayback(const PlatformMediaSession& session) const
{
- MediaSession::MediaType sessionType = session.presentationType();
- if (sessionType != MediaSession::Video)
+ PlatformMediaSession::MediaType sessionType = session.presentationType();
+ if (sessionType != PlatformMediaSession::Video)
return false;
return m_restrictions[sessionType] & InlineVideoPlaybackRestricted;
}
-bool MediaSessionManager::sessionCanLoadMedia(const MediaSession& session) const
+bool MediaSessionManager::sessionCanLoadMedia(const PlatformMediaSession& session) const
{
- return session.state() == MediaSession::Playing || !session.isHidden() || session.isPlayingToWirelessPlaybackTarget();
+ return session.state() == PlatformMediaSession::Playing || !session.isHidden() || session.isPlayingToWirelessPlaybackTarget();
}
void MediaSessionManager::applicationWillEnterBackground() const
{
LOG(Media, "MediaSessionManager::applicationWillEnterBackground");
- Vector<MediaSession*> sessions = m_sessions;
+ Vector<PlatformMediaSession*> sessions = m_sessions;
for (auto* session : sessions) {
if (m_restrictions[session->mediaType()] & BackgroundProcessPlaybackRestricted)
- session->beginInterruption(MediaSession::EnteringBackground);
+ session->beginInterruption(PlatformMediaSession::EnteringBackground);
}
}
void MediaSessionManager::applicationWillEnterForeground() const
{
LOG(Media, "MediaSessionManager::applicationWillEnterForeground");
- Vector<MediaSession*> sessions = m_sessions;
+ Vector<PlatformMediaSession*> sessions = m_sessions;
for (auto* session : sessions) {
if (m_restrictions[session->mediaType()] & BackgroundProcessPlaybackRestricted)
- session->endInterruption(MediaSession::MayResumePlaying);
+ session->endInterruption(PlatformMediaSession::MayResumePlaying);
}
}
@@ -298,9 +298,9 @@
}
#endif
-void MediaSessionManager::didReceiveRemoteControlCommand(MediaSession::RemoteControlCommandType command)
+void MediaSessionManager::didReceiveRemoteControlCommand(PlatformMediaSession::RemoteControlCommandType command)
{
- MediaSession* activeSession = currentSession();
+ PlatformMediaSession* activeSession = currentSession();
if (!activeSession || !activeSession->canReceiveRemoteControlCommands())
return;
activeSession->didReceiveRemoteControlCommand(command);
@@ -312,7 +312,7 @@
return;
for (auto session : m_sessions)
- session->beginInterruption(MediaSession::SystemSleep);
+ session->beginInterruption(PlatformMediaSession::SystemSleep);
}
void MediaSessionManager::systemDidWake()
@@ -321,7 +321,7 @@
return;
for (auto session : m_sessions)
- session->endInterruption(MediaSession::MayResumePlaying);
+ session->endInterruption(PlatformMediaSession::MayResumePlaying);
}
void MediaSessionManager::audioOutputDeviceChanged()
Modified: trunk/Source/WebCore/platform/audio/MediaSessionManager.h (185005 => 185006)
--- trunk/Source/WebCore/platform/audio/MediaSessionManager.h 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/platform/audio/MediaSessionManager.h 2015-05-29 21:53:30 UTC (rev 185006)
@@ -27,7 +27,7 @@
#define MediaSessionManager_h
#include "AudioHardwareListener.h"
-#include "MediaSession.h"
+#include "PlatformMediaSession.h"
#include "RemoteCommandListener.h"
#include "Settings.h"
#include "SystemSleepListener.h"
@@ -37,7 +37,7 @@
namespace WebCore {
class HTMLMediaElement;
-class MediaSession;
+class PlatformMediaSession;
class RemoteCommandListener;
class MediaSessionManager : private RemoteCommandListenerClient, private SystemSleepListener::Client, private AudioHardwareListener::Client {
@@ -46,12 +46,12 @@
WEBCORE_EXPORT static MediaSessionManager& sharedManager();
virtual ~MediaSessionManager() { }
- bool has(MediaSession::MediaType) const;
- int count(MediaSession::MediaType) const;
+ bool has(PlatformMediaSession::MediaType) const;
+ int count(PlatformMediaSession::MediaType) const;
bool activeAudioSessionRequired() const;
- WEBCORE_EXPORT void beginInterruption(MediaSession::InterruptionType);
- WEBCORE_EXPORT void endInterruption(MediaSession::EndInterruptionFlags);
+ WEBCORE_EXPORT void beginInterruption(PlatformMediaSession::InterruptionType);
+ WEBCORE_EXPORT void endInterruption(PlatformMediaSession::EndInterruptionFlags);
WEBCORE_EXPORT void applicationWillEnterForeground() const;
WEBCORE_EXPORT void applicationWillEnterBackground() const;
@@ -68,34 +68,34 @@
};
typedef unsigned SessionRestrictions;
- WEBCORE_EXPORT void addRestriction(MediaSession::MediaType, SessionRestrictions);
- WEBCORE_EXPORT void removeRestriction(MediaSession::MediaType, SessionRestrictions);
- WEBCORE_EXPORT SessionRestrictions restrictions(MediaSession::MediaType);
+ WEBCORE_EXPORT void addRestriction(PlatformMediaSession::MediaType, SessionRestrictions);
+ WEBCORE_EXPORT void removeRestriction(PlatformMediaSession::MediaType, SessionRestrictions);
+ WEBCORE_EXPORT SessionRestrictions restrictions(PlatformMediaSession::MediaType);
virtual void resetRestrictions();
- virtual bool sessionWillBeginPlayback(MediaSession&);
- virtual void sessionWillEndPlayback(MediaSession&);
+ virtual bool sessionWillBeginPlayback(PlatformMediaSession&);
+ virtual void sessionWillEndPlayback(PlatformMediaSession&);
- bool sessionRestrictsInlineVideoPlayback(const MediaSession&) const;
+ bool sessionRestrictsInlineVideoPlayback(const PlatformMediaSession&) const;
- virtual bool sessionCanLoadMedia(const MediaSession&) const;
+ virtual bool sessionCanLoadMedia(const PlatformMediaSession&) const;
#if PLATFORM(IOS)
virtual void configureWireLessTargetMonitoring() { }
virtual bool hasWirelessTargetsAvailable() { return false; }
#endif
- void setCurrentSession(MediaSession&);
- MediaSession* currentSession();
+ void setCurrentSession(PlatformMediaSession&);
+ PlatformMediaSession* currentSession();
protected:
- friend class MediaSession;
+ friend class PlatformMediaSession;
explicit MediaSessionManager();
- void addSession(MediaSession&);
- void removeSession(MediaSession&);
+ void addSession(PlatformMediaSession&);
+ void removeSession(PlatformMediaSession&);
- Vector<MediaSession*> sessions() { return m_sessions; }
+ Vector<PlatformMediaSession*> sessions() { return m_sessions; }
private:
friend class Internals;
@@ -103,7 +103,7 @@
void updateSessionState();
// RemoteCommandListenerClient
- WEBCORE_EXPORT virtual void didReceiveRemoteControlCommand(MediaSession::RemoteControlCommandType) override;
+ WEBCORE_EXPORT virtual void didReceiveRemoteControlCommand(PlatformMediaSession::RemoteControlCommandType) override;
// AudioHardwareListenerClient
virtual void audioHardwareDidBecomeActive() override { }
@@ -114,8 +114,8 @@
virtual void systemWillSleep() override;
virtual void systemDidWake() override;
- SessionRestrictions m_restrictions[MediaSession::WebAudio + 1];
- Vector<MediaSession*> m_sessions;
+ SessionRestrictions m_restrictions[PlatformMediaSession::WebAudio + 1];
+ Vector<PlatformMediaSession*> m_sessions;
std::unique_ptr<RemoteCommandListener> m_remoteCommandListener;
std::unique_ptr<SystemSleepListener> m_systemSleepListener;
RefPtr<AudioHardwareListener> m_audioHardwareListener;
Copied: trunk/Source/WebCore/platform/audio/PlatformMediaSession.cpp (from rev 185005, trunk/Source/WebCore/platform/audio/MediaSession.cpp) (0 => 185006)
--- trunk/Source/WebCore/platform/audio/PlatformMediaSession.cpp (rev 0)
+++ trunk/Source/WebCore/platform/audio/PlatformMediaSession.cpp 2015-05-29 21:53:30 UTC (rev 185006)
@@ -0,0 +1,245 @@
+/*
+ * Copyright (C) 2014-2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "PlatformMediaSession.h"
+
+#if ENABLE(VIDEO)
+#include "HTMLMediaElement.h"
+#include "Logging.h"
+#include "MediaPlayer.h"
+#include "MediaSessionManager.h"
+
+namespace WebCore {
+
+const double kClientDataBufferingTimerThrottleDelay = 0.1;
+
+#if !LOG_DISABLED
+static const char* stateName(PlatformMediaSession::State state)
+{
+#define CASE(state) case PlatformMediaSession::state: return #state
+ switch (state) {
+ CASE(Idle);
+ CASE(Playing);
+ CASE(Paused);
+ CASE(Interrupted);
+ }
+
+ ASSERT_NOT_REACHED();
+ return "";
+}
+#endif
+
+std::unique_ptr<PlatformMediaSession> PlatformMediaSession::create(PlatformMediaSessionClient& client)
+{
+ return std::make_unique<PlatformMediaSession>(client);
+}
+
+PlatformMediaSession::PlatformMediaSession(PlatformMediaSessionClient& client)
+ : m_client(client)
+ , m_clientDataBufferingTimer(*this, &PlatformMediaSession::clientDataBufferingTimerFired)
+ , m_state(Idle)
+ , m_stateToRestore(Idle)
+ , m_notifyingClient(false)
+{
+ ASSERT(m_client.mediaType() >= None && m_client.mediaType() <= WebAudio);
+ MediaSessionManager::sharedManager().addSession(*this);
+}
+
+PlatformMediaSession::~PlatformMediaSession()
+{
+ MediaSessionManager::sharedManager().removeSession(*this);
+}
+
+void PlatformMediaSession::setState(State state)
+{
+ LOG(Media, "PlatformMediaSession::setState(%p) - %s", this, stateName(state));
+ m_state = state;
+}
+
+void PlatformMediaSession::beginInterruption(InterruptionType type)
+{
+ LOG(Media, "PlatformMediaSession::beginInterruption(%p), state = %s, interruption count = %i", this, stateName(m_state), m_interruptionCount);
+
+ if (++m_interruptionCount > 1 || (type == EnteringBackground && client().overrideBackgroundPlaybackRestriction()))
+ return;
+
+ m_stateToRestore = state();
+ m_notifyingClient = true;
+ setState(Interrupted);
+ client().suspendPlayback();
+ m_notifyingClient = false;
+}
+
+void PlatformMediaSession::endInterruption(EndInterruptionFlags flags)
+{
+ LOG(Media, "PlatformMediaSession::endInterruption(%p) - flags = %i, stateToRestore = %s, interruption count = %i", this, (int)flags, stateName(m_stateToRestore), m_interruptionCount);
+
+ if (!m_interruptionCount) {
+ LOG(Media, "PlatformMediaSession::endInterruption(%p) - !! ignoring spurious interruption end !!", this);
+ return;
+ }
+
+ if (--m_interruptionCount)
+ return;
+
+ State stateToRestore = m_stateToRestore;
+ m_stateToRestore = Idle;
+ setState(Paused);
+
+ bool shouldResume = flags & MayResumePlaying && stateToRestore == Playing;
+ client().mayResumePlayback(shouldResume);
+}
+
+bool PlatformMediaSession::clientWillBeginPlayback()
+{
+ if (m_notifyingClient)
+ return true;
+
+ if (!MediaSessionManager::sharedManager().sessionWillBeginPlayback(*this)) {
+ if (state() == Interrupted)
+ m_stateToRestore = Playing;
+ return false;
+ }
+
+ setState(Playing);
+ updateClientDataBuffering();
+ return true;
+}
+
+bool PlatformMediaSession::clientWillPausePlayback()
+{
+ if (m_notifyingClient)
+ return true;
+
+ LOG(Media, "PlatformMediaSession::clientWillPausePlayback(%p)- state = %s", this, stateName(m_state));
+ if (state() == Interrupted) {
+ m_stateToRestore = Paused;
+ LOG(Media, " setting stateToRestore to \"Paused\"");
+ return false;
+ }
+
+ setState(Paused);
+ MediaSessionManager::sharedManager().sessionWillEndPlayback(*this);
+ if (!m_clientDataBufferingTimer.isActive())
+ m_clientDataBufferingTimer.startOneShot(kClientDataBufferingTimerThrottleDelay);
+ return true;
+}
+
+void PlatformMediaSession::pauseSession()
+{
+ LOG(Media, "PlatformMediaSession::pauseSession(%p)", this);
+ m_client.suspendPlayback();
+}
+
+PlatformMediaSession::MediaType PlatformMediaSession::mediaType() const
+{
+ return m_client.mediaType();
+}
+
+PlatformMediaSession::MediaType PlatformMediaSession::presentationType() const
+{
+ return m_client.presentationType();
+}
+
+String PlatformMediaSession::title() const
+{
+ return m_client.mediaSessionTitle();
+}
+
+double PlatformMediaSession::duration() const
+{
+ return m_client.mediaSessionDuration();
+}
+
+double PlatformMediaSession::currentTime() const
+{
+ return m_client.mediaSessionCurrentTime();
+}
+
+bool PlatformMediaSession::canReceiveRemoteControlCommands() const
+{
+ return m_client.canReceiveRemoteControlCommands();
+}
+
+void PlatformMediaSession::didReceiveRemoteControlCommand(RemoteControlCommandType command)
+{
+ m_client.didReceiveRemoteControlCommand(command);
+}
+
+void PlatformMediaSession::visibilityChanged()
+{
+ if (!m_clientDataBufferingTimer.isActive())
+ m_clientDataBufferingTimer.startOneShot(kClientDataBufferingTimerThrottleDelay);
+}
+
+void PlatformMediaSession::clientDataBufferingTimerFired()
+{
+ LOG(Media, "PlatformMediaSession::clientDataBufferingTimerFired(%p)- visible = %s", this, m_client.elementIsHidden() ? "false" : "true");
+
+ updateClientDataBuffering();
+
+ if (m_state != Playing || !m_client.elementIsHidden())
+ return;
+
+ MediaSessionManager::SessionRestrictions restrictions = MediaSessionManager::sharedManager().restrictions(mediaType());
+ if ((restrictions & MediaSessionManager::BackgroundTabPlaybackRestricted) == MediaSessionManager::BackgroundTabPlaybackRestricted)
+ pauseSession();
+}
+
+void PlatformMediaSession::updateClientDataBuffering()
+{
+ if (m_clientDataBufferingTimer.isActive())
+ m_clientDataBufferingTimer.stop();
+
+ m_client.setShouldBufferData(MediaSessionManager::sharedManager().sessionCanLoadMedia(*this));
+}
+
+bool PlatformMediaSession::isHidden() const
+{
+ return m_client.elementIsHidden();
+}
+
+PlatformMediaSession::DisplayType PlatformMediaSession::displayType() const
+{
+ return m_client.displayType();
+}
+
+String PlatformMediaSessionClient::mediaSessionTitle() const
+{
+ return String();
+}
+
+double PlatformMediaSessionClient::mediaSessionDuration() const
+{
+ return MediaPlayer::invalidTime();
+}
+
+double PlatformMediaSessionClient::mediaSessionCurrentTime() const
+{
+ return MediaPlayer::invalidTime();
+}
+}
+#endif
Copied: trunk/Source/WebCore/platform/audio/PlatformMediaSession.h (from rev 185005, trunk/Source/WebCore/platform/audio/MediaSession.h) (0 => 185006)
--- trunk/Source/WebCore/platform/audio/PlatformMediaSession.h (rev 0)
+++ trunk/Source/WebCore/platform/audio/PlatformMediaSession.h 2015-05-29 21:53:30 UTC (rev 185006)
@@ -0,0 +1,186 @@
+/*
+ * Copyright (C) 2014-2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef PlatformMediaSession_h
+#define PlatformMediaSession_h
+
+#include "MediaProducer.h"
+#include "Timer.h"
+#include <wtf/Noncopyable.h>
+#include <wtf/text/WTFString.h>
+
+#if ENABLE(WIRELESS_PLAYBACK_TARGET)
+#include "MediaPlaybackTargetClient.h"
+#endif
+
+namespace WebCore {
+
+class MediaPlaybackTarget;
+class PlatformMediaSessionClient;
+
+class PlatformMediaSession
+#if ENABLE(WIRELESS_PLAYBACK_TARGET)
+ : public MediaPlaybackTargetClient
+#endif
+{
+public:
+ static std::unique_ptr<PlatformMediaSession> create(PlatformMediaSessionClient&);
+
+ PlatformMediaSession(PlatformMediaSessionClient&);
+ virtual ~PlatformMediaSession();
+
+ enum MediaType {
+ None = 0,
+ Video,
+ Audio,
+ WebAudio,
+ };
+ MediaType mediaType() const;
+ MediaType presentationType() const;
+
+ enum State {
+ Idle,
+ Playing,
+ Paused,
+ Interrupted,
+ };
+ State state() const { return m_state; }
+ void setState(State);
+
+ enum InterruptionType {
+ SystemSleep,
+ EnteringBackground,
+ SystemInterruption,
+ };
+ enum EndInterruptionFlags {
+ NoFlags = 0,
+ MayResumePlaying = 1 << 0,
+ };
+ void beginInterruption(InterruptionType);
+ void endInterruption(EndInterruptionFlags);
+
+ void applicationWillEnterForeground() const;
+ void applicationWillEnterBackground() const;
+
+ bool clientWillBeginPlayback();
+ bool clientWillPausePlayback();
+
+ void pauseSession();
+
+ void visibilityChanged();
+
+ String title() const;
+ double duration() const;
+ double currentTime() const;
+
+ enum RemoteControlCommandType {
+ NoCommand,
+ PlayCommand,
+ PauseCommand,
+ StopCommand,
+ TogglePlayPauseCommand,
+ BeginSeekingBackwardCommand,
+ EndSeekingBackwardCommand,
+ BeginSeekingForwardCommand,
+ EndSeekingForwardCommand,
+ };
+ bool canReceiveRemoteControlCommands() const;
+ void didReceiveRemoteControlCommand(RemoteControlCommandType);
+
+ enum DisplayType {
+ Normal,
+ Fullscreen,
+ Optimized,
+ };
+ DisplayType displayType() const;
+
+ bool isHidden() const;
+
+ virtual bool canPlayToWirelessPlaybackTarget() const { return false; }
+ virtual bool isPlayingToWirelessPlaybackTarget() const { return false; }
+
+#if ENABLE(WIRELESS_PLAYBACK_TARGET)
+ // MediaPlaybackTargetClient
+ virtual void setPlaybackTarget(Ref<MediaPlaybackTarget>&&) override { }
+ virtual void externalOutputDeviceAvailableDidChange(bool) override { }
+ virtual void setShouldPlayToPlaybackTarget(bool) override { }
+#endif
+
+#if PLATFORM(IOS)
+ virtual bool requiresPlaybackTargetRouteMonitoring() const { return false; }
+#endif
+
+protected:
+ PlatformMediaSessionClient& client() const { return m_client; }
+
+private:
+ void clientDataBufferingTimerFired();
+ void updateClientDataBuffering();
+
+ PlatformMediaSessionClient& m_client;
+ Timer m_clientDataBufferingTimer;
+ State m_state;
+ State m_stateToRestore;
+ int m_interruptionCount { 0 };
+ bool m_notifyingClient;
+};
+
+class PlatformMediaSessionClient {
+ WTF_MAKE_NONCOPYABLE(PlatformMediaSessionClient);
+public:
+ PlatformMediaSessionClient() { }
+
+ virtual PlatformMediaSession::MediaType mediaType() const = 0;
+ virtual PlatformMediaSession::MediaType presentationType() const = 0;
+ virtual PlatformMediaSession::DisplayType displayType() const { return PlatformMediaSession::Normal; }
+
+ virtual void mayResumePlayback(bool shouldResume) = 0;
+ virtual void suspendPlayback() = 0;
+
+ virtual String mediaSessionTitle() const;
+ virtual double mediaSessionDuration() const;
+ virtual double mediaSessionCurrentTime() const;
+
+ virtual bool canReceiveRemoteControlCommands() const = 0;
+ virtual void didReceiveRemoteControlCommand(PlatformMediaSession::RemoteControlCommandType) = 0;
+
+ virtual void setShouldBufferData(bool) { }
+ virtual bool elementIsHidden() const { return false; }
+
+ virtual bool overrideBackgroundPlaybackRestriction() const = 0;
+
+ virtual void wirelessRoutesAvailableDidChange() { }
+ virtual void setWirelessPlaybackTarget(Ref<MediaPlaybackTarget>&&) { }
+ virtual bool canPlayToWirelessPlaybackTarget() const { return false; }
+ virtual bool isPlayingToWirelessPlaybackTarget() const { return false; }
+ virtual void setShouldPlayToPlaybackTarget(bool) { }
+
+protected:
+ virtual ~PlatformMediaSessionClient() { }
+};
+
+}
+
+#endif // PlatformMediaSession_h
Modified: trunk/Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.h (185005 => 185006)
--- trunk/Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.h 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.h 2015-05-29 21:53:30 UTC (rev 185006)
@@ -53,8 +53,8 @@
MediaSessionManageriOS();
- virtual bool sessionWillBeginPlayback(MediaSession&) override;
- virtual void sessionWillEndPlayback(MediaSession&) override;
+ virtual bool sessionWillBeginPlayback(PlatformMediaSession&) override;
+ virtual void sessionWillEndPlayback(PlatformMediaSession&) override;
void updateNowPlayingInfo();
@@ -62,7 +62,7 @@
virtual void configureWireLessTargetMonitoring() override;
- virtual bool sessionCanLoadMedia(const MediaSession&) const override;
+ virtual bool sessionCanLoadMedia(const PlatformMediaSession&) const override;
RetainPtr<WebMediaSessionHelper> m_objcObserver;
};
Modified: trunk/Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm (185005 => 185006)
--- trunk/Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm 2015-05-29 21:53:30 UTC (rev 185006)
@@ -31,7 +31,7 @@
#import "Logging.h"
#import "MediaPlayer.h"
#import "MediaPlayerSPI.h"
-#import "MediaSession.h"
+#import "PlatformMediaSession.h"
#import "SoftLinking.h"
#import "SystemMemory.h"
#import "WebCoreSystemInterface.h"
@@ -138,27 +138,27 @@
static wkDeviceClass deviceClass = iosDeviceClass();
if (deviceClass == wkDeviceClassiPhone || deviceClass == wkDeviceClassiPod)
- addRestriction(MediaSession::Video, InlineVideoPlaybackRestricted);
+ addRestriction(PlatformMediaSession::Video, InlineVideoPlaybackRestricted);
if (ramSize() < systemMemoryRequiredForVideoInBackgroundTabs) {
LOG(Media, "MediaSessionManageriOS::resetRestrictions - restricting video in background tabs because system memory = %zul", ramSize());
- addRestriction(MediaSession::Video, BackgroundTabPlaybackRestricted);
+ addRestriction(PlatformMediaSession::Video, BackgroundTabPlaybackRestricted);
}
- addRestriction(MediaSession::Video, ConcurrentPlaybackNotPermitted);
- addRestriction(MediaSession::Video, BackgroundProcessPlaybackRestricted);
+ addRestriction(PlatformMediaSession::Video, ConcurrentPlaybackNotPermitted);
+ addRestriction(PlatformMediaSession::Video, BackgroundProcessPlaybackRestricted);
- removeRestriction(MediaSession::Audio, ConcurrentPlaybackNotPermitted);
- removeRestriction(MediaSession::Audio, BackgroundProcessPlaybackRestricted);
+ removeRestriction(PlatformMediaSession::Audio, ConcurrentPlaybackNotPermitted);
+ removeRestriction(PlatformMediaSession::Audio, BackgroundProcessPlaybackRestricted);
- removeRestriction(MediaSession::WebAudio, ConcurrentPlaybackNotPermitted);
- removeRestriction(MediaSession::WebAudio, BackgroundProcessPlaybackRestricted);
+ removeRestriction(PlatformMediaSession::WebAudio, ConcurrentPlaybackNotPermitted);
+ removeRestriction(PlatformMediaSession::WebAudio, BackgroundProcessPlaybackRestricted);
- removeRestriction(MediaSession::Audio, MetadataPreloadingNotPermitted);
- removeRestriction(MediaSession::Video, MetadataPreloadingNotPermitted);
+ removeRestriction(PlatformMediaSession::Audio, MetadataPreloadingNotPermitted);
+ removeRestriction(PlatformMediaSession::Video, MetadataPreloadingNotPermitted);
- addRestriction(MediaSession::Audio, AutoPreloadingNotPermitted);
- addRestriction(MediaSession::Video, AutoPreloadingNotPermitted);
+ addRestriction(PlatformMediaSession::Audio, AutoPreloadingNotPermitted);
+ addRestriction(PlatformMediaSession::Video, AutoPreloadingNotPermitted);
}
bool MediaSessionManageriOS::hasWirelessTargetsAvailable()
@@ -168,7 +168,7 @@
void MediaSessionManageriOS::configureWireLessTargetMonitoring()
{
- Vector<MediaSession*> sessions = this->sessions();
+ Vector<PlatformMediaSession*> sessions = this->sessions();
bool requiresMonitoring = false;
for (auto* session : sessions) {
@@ -186,7 +186,7 @@
[m_objcObserver stopMonitoringAirPlayRoutes];
}
-bool MediaSessionManageriOS::sessionWillBeginPlayback(MediaSession& session)
+bool MediaSessionManageriOS::sessionWillBeginPlayback(PlatformMediaSession& session)
{
if (!MediaSessionManager::sessionWillBeginPlayback(session))
return false;
@@ -195,7 +195,7 @@
return true;
}
-void MediaSessionManageriOS::sessionWillEndPlayback(MediaSession& session)
+void MediaSessionManageriOS::sessionWillEndPlayback(PlatformMediaSession& session)
{
MediaSessionManager::sessionWillEndPlayback(session);
updateNowPlayingInfo();
@@ -206,7 +206,7 @@
LOG(Media, "MediaSessionManageriOS::updateNowPlayingInfo");
MPNowPlayingInfoCenter *nowPlaying = (MPNowPlayingInfoCenter *)[getMPNowPlayingInfoCenterClass() defaultCenter];
- const MediaSession* currentSession = this->currentSession();
+ const PlatformMediaSession* currentSession = this->currentSession();
if (!currentSession) {
[nowPlaying setNowPlayingInfo:nil];
@@ -227,18 +227,18 @@
if (std::isfinite(currentTime) && currentTime != MediaPlayer::invalidTime())
[info setValue:@(currentTime) forKey:MPNowPlayingInfoPropertyElapsedPlaybackTime];
- [info setValue:(currentSession->state() == MediaSession::Playing ? @YES : @NO) forKey:MPNowPlayingInfoPropertyPlaybackRate];
+ [info setValue:(currentSession->state() == PlatformMediaSession::Playing ? @YES : @NO) forKey:MPNowPlayingInfoPropertyPlaybackRate];
[nowPlaying setNowPlayingInfo:info.get()];
}
-bool MediaSessionManageriOS::sessionCanLoadMedia(const MediaSession& session) const
+bool MediaSessionManageriOS::sessionCanLoadMedia(const PlatformMediaSession& session) const
{
- return session.state() == MediaSession::Playing || !session.isHidden() || session.displayType() == MediaSession::Optimized;
+ return session.state() == PlatformMediaSession::Playing || !session.isHidden() || session.displayType() == PlatformMediaSession::Optimized;
}
void MediaSessionManageriOS::externalOutputDeviceAvailableDidChange()
{
- Vector<MediaSession*> sessionList = sessions();
+ Vector<PlatformMediaSession*> sessionList = sessions();
bool haveTargets = [m_objcObserver hasWirelessTargetsAvailable];
for (auto* session : sessionList)
session->externalOutputDeviceAvailableDidChange(haveTargets);
@@ -383,19 +383,19 @@
return;
NSUInteger type = [[[notification userInfo] objectForKey:AVAudioSessionInterruptionTypeKey] unsignedIntegerValue];
- MediaSession::EndInterruptionFlags flags = MediaSession::NoFlags;
+ PlatformMediaSession::EndInterruptionFlags flags = PlatformMediaSession::NoFlags;
LOG(Media, "-[WebMediaSessionHelper interruption] - type = %i", (int)type);
if (type == AVAudioSessionInterruptionTypeEnded && [[[notification userInfo] objectForKey:AVAudioSessionInterruptionOptionKey] unsignedIntegerValue] == AVAudioSessionInterruptionOptionShouldResume)
- flags = MediaSession::MayResumePlaying;
+ flags = PlatformMediaSession::MayResumePlaying;
WebThreadRun(^{
if (!_callback)
return;
if (type == AVAudioSessionInterruptionTypeBegan)
- _callback->beginInterruption(MediaSession::SystemInterruption);
+ _callback->beginInterruption(PlatformMediaSession::SystemInterruption);
else
_callback->endInterruption(flags);
Modified: trunk/Source/WebCore/platform/audio/mac/MediaSessionManagerMac.cpp (185005 => 185006)
--- trunk/Source/WebCore/platform/audio/mac/MediaSessionManagerMac.cpp 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/platform/audio/mac/MediaSessionManagerMac.cpp 2015-05-29 21:53:30 UTC (rev 185006)
@@ -39,11 +39,11 @@
void MediaSessionManager::updateSessionState()
{
- LOG(Media, "MediaSessionManager::updateSessionState() - types: Video(%d), Audio(%d), WebAudio(%d)", count(MediaSession::Video), count(MediaSession::Audio), count(MediaSession::WebAudio));
+ LOG(Media, "MediaSessionManager::updateSessionState() - types: Video(%d), Audio(%d), WebAudio(%d)", count(PlatformMediaSession::Video), count(PlatformMediaSession::Audio), count(PlatformMediaSession::WebAudio));
- if (has(MediaSession::WebAudio))
+ if (has(PlatformMediaSession::WebAudio))
AudioSession::sharedSession().setPreferredBufferSize(kWebAudioBufferSize);
- else if ((has(MediaSession::Video) || has(MediaSession::Audio)) && Settings::lowPowerVideoAudioBufferSizeEnabled()) {
+ else if ((has(PlatformMediaSession::Video) || has(PlatformMediaSession::Audio)) && Settings::lowPowerVideoAudioBufferSizeEnabled()) {
// FIXME: <http://webkit.org/b/116725> Figure out why enabling the code below
// causes media LayoutTests to fail on 10.8.
@@ -60,9 +60,9 @@
if (!Settings::shouldManageAudioSessionCategory())
return;
- if (has(MediaSession::Video) || has(MediaSession::Audio))
+ if (has(PlatformMediaSession::Video) || has(PlatformMediaSession::Audio))
AudioSession::sharedSession().setCategory(AudioSession::MediaPlayback);
- else if (has(MediaSession::WebAudio))
+ else if (has(PlatformMediaSession::WebAudio))
AudioSession::sharedSession().setCategory(AudioSession::AmbientSound);
#endif
}
Modified: trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp (185005 => 185006)
--- trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp 2015-05-29 21:53:30 UTC (rev 185006)
@@ -1347,7 +1347,7 @@
return m_client.mediaPlayerShouldWaitForResponseToAuthenticationChallenge(challenge);
}
-void MediaPlayer::handlePlaybackCommand(MediaSession::RemoteControlCommandType command)
+void MediaPlayer::handlePlaybackCommand(PlatformMediaSession::RemoteControlCommandType command)
{
m_client.mediaPlayerHandlePlaybackCommand(command);
}
Modified: trunk/Source/WebCore/platform/graphics/MediaPlayer.h (185005 => 185006)
--- trunk/Source/WebCore/platform/graphics/MediaPlayer.h 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayer.h 2015-05-29 21:53:30 UTC (rev 185006)
@@ -36,10 +36,10 @@
#include "URL.h"
#include "LayoutRect.h"
#include "MediaPlayerEnums.h"
-#include "MediaSession.h"
#include "NativeImagePtr.h"
#include "PlatformLayer.h"
#include "PlatformMediaResourceLoader.h"
+#include "PlatformMediaSession.h"
#include "Timer.h"
#include "VideoTrackPrivate.h"
#include <runtime/Uint8Array.h>
@@ -268,7 +268,7 @@
#endif
virtual bool mediaPlayerShouldWaitForResponseToAuthenticationChallenge(const AuthenticationChallenge&) { return false; }
- virtual void mediaPlayerHandlePlaybackCommand(MediaSession::RemoteControlCommandType) { }
+ virtual void mediaPlayerHandlePlaybackCommand(PlatformMediaSession::RemoteControlCommandType) { }
virtual String mediaPlayerSourceApplicationIdentifier() const { return emptyString(); }
@@ -594,7 +594,7 @@
#endif
bool shouldWaitForResponseToAuthenticationChallenge(const AuthenticationChallenge&);
- void handlePlaybackCommand(MediaSession::RemoteControlCommandType);
+ void handlePlaybackCommand(PlatformMediaSession::RemoteControlCommandType);
String sourceApplicationIdentifier() const;
Vector<String> preferredAudioCharacteristics() const;
Modified: trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp (185005 => 185006)
--- trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp 2015-05-29 21:53:30 UTC (rev 185006)
@@ -621,7 +621,7 @@
{
#if ENABLE(WIRELESS_PLAYBACK_TARGET) && PLATFORM(IOS)
if (isCurrentPlaybackTargetWireless())
- m_player->handlePlaybackCommand(rate() ? MediaSession::PlayCommand : MediaSession::PauseCommand);
+ m_player->handlePlaybackCommand(rate() ? PlatformMediaSession::PlayCommand : PlatformMediaSession::PauseCommand);
#endif
m_player->rateChanged();
Modified: trunk/Source/WebCore/platform/ios/RemoteCommandListenerIOS.mm (185005 => 185006)
--- trunk/Source/WebCore/platform/ios/RemoteCommandListenerIOS.mm 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/platform/ios/RemoteCommandListenerIOS.mm 2015-05-29 21:53:30 UTC (rev 185006)
@@ -55,7 +55,7 @@
callOnMainThread([weakThis] {
if (!weakThis)
return;
- weakThis->m_client.didReceiveRemoteControlCommand(MediaSession::PauseCommand);
+ weakThis->m_client.didReceiveRemoteControlCommand(PlatformMediaSession::PauseCommand);
});
return MPRemoteCommandHandlerStatusSuccess;
@@ -65,7 +65,7 @@
callOnMainThread([weakThis] {
if (!weakThis)
return;
- weakThis->m_client.didReceiveRemoteControlCommand(MediaSession::PlayCommand);
+ weakThis->m_client.didReceiveRemoteControlCommand(PlatformMediaSession::PlayCommand);
});
return MPRemoteCommandHandlerStatusSuccess;
@@ -75,7 +75,7 @@
callOnMainThread([weakThis] {
if (!weakThis)
return;
- weakThis->m_client.didReceiveRemoteControlCommand(MediaSession::TogglePlayPauseCommand);
+ weakThis->m_client.didReceiveRemoteControlCommand(PlatformMediaSession::TogglePlayPauseCommand);
});
return MPRemoteCommandHandlerStatusSuccess;
@@ -85,7 +85,7 @@
ASSERT([event isKindOfClass:getMPSeekCommandEventClass()]);
MPSeekCommandEvent* seekEvent = static_cast<MPSeekCommandEvent *>(event);
- MediaSession::RemoteControlCommandType command = [seekEvent type] == MPSeekCommandEventTypeBeginSeeking ? MediaSession::BeginSeekingBackwardCommand : MediaSession::EndSeekingBackwardCommand;
+ PlatformMediaSession::RemoteControlCommandType command = [seekEvent type] == MPSeekCommandEventTypeBeginSeeking ? PlatformMediaSession::BeginSeekingBackwardCommand : PlatformMediaSession::EndSeekingBackwardCommand;
callOnMainThread([weakThis, command] {
if (!weakThis)
@@ -100,7 +100,7 @@
ASSERT([event isKindOfClass:getMPSeekCommandEventClass()]);
MPSeekCommandEvent* seekEvent = static_cast<MPSeekCommandEvent *>(event);
- MediaSession::RemoteControlCommandType command = [seekEvent type] == MPSeekCommandEventTypeBeginSeeking ? MediaSession::BeginSeekingForwardCommand : MediaSession::EndSeekingForwardCommand;
+ PlatformMediaSession::RemoteControlCommandType command = [seekEvent type] == MPSeekCommandEventTypeBeginSeeking ? PlatformMediaSession::BeginSeekingForwardCommand : PlatformMediaSession::EndSeekingForwardCommand;
callOnMainThread([weakThis, command] {
if (!weakThis)
Modified: trunk/Source/WebCore/testing/Internals.cpp (185005 => 185006)
--- trunk/Source/WebCore/testing/Internals.cpp 2015-05-29 21:46:32 UTC (rev 185005)
+++ trunk/Source/WebCore/testing/Internals.cpp 2015-05-29 21:53:30 UTC (rev 185006)
@@ -2578,15 +2578,15 @@
#if ENABLE(VIDEO)
void Internals::beginMediaSessionInterruption()
{
- MediaSessionManager::sharedManager().beginInterruption(MediaSession::SystemInterruption);
+ MediaSessionManager::sharedManager().beginInterruption(PlatformMediaSession::SystemInterruption);
}
void Internals::endMediaSessionInterruption(const String& flagsString)
{
- MediaSession::EndInterruptionFlags flags = MediaSession::NoFlags;
+ PlatformMediaSession::EndInterruptionFlags flags = PlatformMediaSession::NoFlags;
if (equalIgnoringCase(flagsString, "MayResumePlaying"))
- flags = MediaSession::MayResumePlaying;
+ flags = PlatformMediaSession::MayResumePlaying;
MediaSessionManager::sharedManager().endInterruption(flags);
}
@@ -2603,13 +2603,13 @@
void Internals::setMediaSessionRestrictions(const String& mediaTypeString, const String& restrictionsString, ExceptionCode& ec)
{
- MediaSession::MediaType mediaType = MediaSession::None;
+ PlatformMediaSession::MediaType mediaType = PlatformMediaSession::None;
if (equalIgnoringCase(mediaTypeString, "Video"))
- mediaType = MediaSession::Video;
+ mediaType = PlatformMediaSession::Video;
else if (equalIgnoringCase(mediaTypeString, "Audio"))
- mediaType = MediaSession::Audio;
+ mediaType = PlatformMediaSession::Audio;
else if (equalIgnoringCase(mediaTypeString, "WebAudio"))
- mediaType = MediaSession::WebAudio;
+ mediaType = PlatformMediaSession::WebAudio;
else {
ec = INVALID_ACCESS_ERR;
return;
@@ -2682,24 +2682,24 @@
void Internals::postRemoteControlCommand(const String& commandString, ExceptionCode& ec)
{
- MediaSession::RemoteControlCommandType command;
+ PlatformMediaSession::RemoteControlCommandType command;
if (equalIgnoringCase(commandString, "Play"))
- command = MediaSession::PlayCommand;
+ command = PlatformMediaSession::PlayCommand;
else if (equalIgnoringCase(commandString, "Pause"))
- command = MediaSession::PauseCommand;
+ command = PlatformMediaSession::PauseCommand;
else if (equalIgnoringCase(commandString, "Stop"))
- command = MediaSession::StopCommand;
+ command = PlatformMediaSession::StopCommand;
else if (equalIgnoringCase(commandString, "TogglePlayPause"))
- command = MediaSession::TogglePlayPauseCommand;
+ command = PlatformMediaSession::TogglePlayPauseCommand;
else if (equalIgnoringCase(commandString, "BeginSeekingBackward"))
- command = MediaSession::BeginSeekingBackwardCommand;
+ command = PlatformMediaSession::BeginSeekingBackwardCommand;
else if (equalIgnoringCase(commandString, "EndSeekingBackward"))
- command = MediaSession::EndSeekingBackwardCommand;
+ command = PlatformMediaSession::EndSeekingBackwardCommand;
else if (equalIgnoringCase(commandString, "BeginSeekingForward"))
- command = MediaSession::BeginSeekingForwardCommand;
+ command = PlatformMediaSession::BeginSeekingForwardCommand;
else if (equalIgnoringCase(commandString, "EndSeekingForward"))
- command = MediaSession::EndSeekingForwardCommand;
+ command = PlatformMediaSession::EndSeekingForwardCommand;
else {
ec = INVALID_ACCESS_ERR;
return;