Title: [185006] trunk/Source/WebCore
Revision
185006
Author
commit-qu...@webkit.org
Date
2015-05-29 14:53:30 -0700 (Fri, 29 May 2015)

Log Message

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

Patch by Matt Rajca <mra...@apple.com> on 2015-05-29
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):

Modified Paths

Added Paths

Removed Paths

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;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to