Title: [258390] trunk/Source
Revision
258390
Author
you...@apple.com
Date
2020-03-13 03:10:01 -0700 (Fri, 13 Mar 2020)

Log Message

Remove use of PlatformMediaSession types in AudioSession
https://bugs.webkit.org/show_bug.cgi?id=208995

Reviewed by Eric Carlson.

Source/WebCore:

Remove type for beginInterruption since AudioSession always trigger system interruptions.
Have a dedicated type for endInterruption.
No change of behavior.

* platform/audio/AudioSession.cpp:
(WebCore::AudioSession::beginInterruption):
(WebCore::AudioSession::endInterruption):
* platform/audio/AudioSession.h:
* platform/audio/ios/AudioSessionIOS.mm:
(-[WebInterruptionObserverHelper interruption:]):
(WebCore::AudioSession::beginInterruption):
(WebCore::AudioSession::endInterruption):
* platform/audio/ios/MediaSessionManagerIOS.h:

Source/WebKit:

Update code according WebCore API changes.
Make use of AudioSession current code path to make RemoteAudioSession notify its observers.

* GPUProcess/media/RemoteAudioSessionProxy.cpp:
(WebKit::RemoteAudioSessionProxy::setCategory):
(WebKit::RemoteAudioSessionProxy::beginInterruption):
(WebKit::RemoteAudioSessionProxy::endInterruption):
* GPUProcess/media/RemoteAudioSessionProxy.h:
* GPUProcess/media/RemoteAudioSessionProxyManager.cpp:
(WebKit::RemoteAudioSessionProxyManager::tryToSetActiveForProcess):
(WebKit::RemoteAudioSessionProxyManager::beginAudioSessionInterruption):
(WebKit::RemoteAudioSessionProxyManager::endAudioSessionInterruption):
* GPUProcess/media/RemoteAudioSessionProxyManager.h:
* WebProcess/GPU/media/RemoteAudioSession.cpp:
(WebKit::RemoteAudioSession::beginInterruption): Deleted.
(WebKit::RemoteAudioSession::endInterruption): Deleted.
* WebProcess/GPU/media/RemoteAudioSession.h:
* WebProcess/GPU/media/RemoteAudioSession.messages.in:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (258389 => 258390)


--- trunk/Source/WebCore/ChangeLog	2020-03-13 09:46:25 UTC (rev 258389)
+++ trunk/Source/WebCore/ChangeLog	2020-03-13 10:10:01 UTC (rev 258390)
@@ -1,3 +1,24 @@
+2020-03-13  youenn fablet  <you...@apple.com>
+
+        Remove use of PlatformMediaSession types in AudioSession
+        https://bugs.webkit.org/show_bug.cgi?id=208995
+
+        Reviewed by Eric Carlson.
+
+        Remove type for beginInterruption since AudioSession always trigger system interruptions.
+        Have a dedicated type for endInterruption.
+        No change of behavior.
+
+        * platform/audio/AudioSession.cpp:
+        (WebCore::AudioSession::beginInterruption):
+        (WebCore::AudioSession::endInterruption):
+        * platform/audio/AudioSession.h:
+        * platform/audio/ios/AudioSessionIOS.mm:
+        (-[WebInterruptionObserverHelper interruption:]):
+        (WebCore::AudioSession::beginInterruption):
+        (WebCore::AudioSession::endInterruption):
+        * platform/audio/ios/MediaSessionManagerIOS.h:
+
 2020-03-13  Antti Koivisto  <an...@apple.com>
 
         Remove unused affectedBy style flags

Modified: trunk/Source/WebCore/platform/audio/AudioSession.cpp (258389 => 258390)


--- trunk/Source/WebCore/platform/audio/AudioSession.cpp	2020-03-13 09:46:25 UTC (rev 258389)
+++ trunk/Source/WebCore/platform/audio/AudioSession.cpp	2020-03-13 10:10:01 UTC (rev 258390)
@@ -72,11 +72,11 @@
 {
 }
 
-void AudioSession::beginInterruption(PlatformMediaSession::InterruptionType)
+void AudioSession::beginInterruption()
 {
 }
 
-void AudioSession::endInterruption(PlatformMediaSession::EndInterruptionFlags)
+void AudioSession::endInterruption(MayResume)
 {
 }
 #endif

Modified: trunk/Source/WebCore/platform/audio/AudioSession.h (258389 => 258390)


--- trunk/Source/WebCore/platform/audio/AudioSession.h	2020-03-13 09:46:25 UTC (rev 258389)
+++ trunk/Source/WebCore/platform/audio/AudioSession.h	2020-03-13 10:10:01 UTC (rev 258390)
@@ -27,8 +27,8 @@
 
 #if USE(AUDIO_SESSION)
 
-#include "PlatformMediaSession.h"
 #include <memory>
+#include <wtf/EnumTraits.h>
 #include <wtf/NeverDestroyed.h>
 #include <wtf/Noncopyable.h>
 #include <wtf/UniqueRef.h>
@@ -94,22 +94,23 @@
     void addMutedStateObserver(MutedStateObserver*);
     void removeMutedStateObserver(MutedStateObserver*);
 
+    virtual bool isMuted() const;
+    virtual void handleMutedStateChange();
+
+    void beginInterruption();
+    enum class MayResume { No, Yes };
+    void endInterruption(MayResume);
+
     class InterruptionObserver : public CanMakeWeakPtr<InterruptionObserver> {
     public:
         virtual ~InterruptionObserver() = default;
 
-        // FIXME: Remove use of InterruptionType and EndInterruptionFlags in this interface.
-        virtual void beginAudioSessionInterruption(PlatformMediaSession::InterruptionType) = 0;
-        virtual void endAudioSessionInterruption(PlatformMediaSession::EndInterruptionFlags) = 0;
+        virtual void beginAudioSessionInterruption() = 0;
+        virtual void endAudioSessionInterruption(MayResume) = 0;
     };
     void addInterruptionObserver(InterruptionObserver&);
     void removeInterruptionObserver(InterruptionObserver&);
-    void beginInterruption(PlatformMediaSession::InterruptionType);
-    void endInterruption(PlatformMediaSession::EndInterruptionFlags);
 
-    virtual bool isMuted() const;
-    virtual void handleMutedStateChange();
-
     virtual bool isActive() const { return m_active; }
 
 protected:
@@ -155,6 +156,14 @@
     >;
 };
 
+template <> struct EnumTraits<WebCore::AudioSession::MayResume> {
+    using values = EnumValues <
+    WebCore::AudioSession::MayResume,
+    WebCore::AudioSession::MayResume::No,
+    WebCore::AudioSession::MayResume::Yes
+    >;
+};
+
 template<typename Type>
 struct LogArgument;
 

Modified: trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.mm (258389 => 258390)


--- trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.mm	2020-03-13 09:46:25 UTC (rev 258389)
+++ trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.mm	2020-03-13 10:10:01 UTC (rev 258390)
@@ -79,11 +79,8 @@
         return;
 
     NSUInteger type = [[[notification userInfo] objectForKey:AVAudioSessionInterruptionTypeKey] unsignedIntegerValue];
-    WebCore::PlatformMediaSession::EndInterruptionFlags flags = WebCore::PlatformMediaSession::NoFlags;
+    auto flags = (type == AVAudioSessionInterruptionTypeEnded && [[[notification userInfo] objectForKey:AVAudioSessionInterruptionOptionKey] unsignedIntegerValue] == AVAudioSessionInterruptionOptionShouldResume) ? WebCore::AudioSession::MayResume::Yes : WebCore::AudioSession::MayResume::No;
 
-    if (type == AVAudioSessionInterruptionTypeEnded && [[[notification userInfo] objectForKey:AVAudioSessionInterruptionOptionKey] unsignedIntegerValue] == AVAudioSessionInterruptionOptionShouldResume)
-        flags = WebCore::PlatformMediaSession::MayResumePlaying;
-
     callOnWebThreadOrDispatchAsyncOnMainThread([protectedSelf = retainPtr(self), type, flags]() mutable {
         auto* callback = protectedSelf->_callback;
         if (!callback)
@@ -90,7 +87,7 @@
             return;
 
         if (type == AVAudioSessionInterruptionTypeBegan)
-            callback->beginInterruption(WebCore::PlatformMediaSession::SystemInterruption);
+            callback->beginInterruption();
         else
             callback->endInterruption(flags);
     });
@@ -333,16 +330,16 @@
     m_interruptionObservers.remove(observer);
 }
 
-void AudioSession::beginInterruption(PlatformMediaSession::InterruptionType type)
+void AudioSession::beginInterruption()
 {
     for (auto& observer : m_interruptionObservers)
-        observer.beginAudioSessionInterruption(type);
+        observer.beginAudioSessionInterruption();
 }
 
-void AudioSession::endInterruption(PlatformMediaSession::EndInterruptionFlags flags)
+void AudioSession::endInterruption(MayResume mayResume)
 {
     for (auto& observer : m_interruptionObservers)
-        observer.endAudioSessionInterruption(flags);
+        observer.endAudioSessionInterruption(mayResume);
 }
 
 }

Modified: trunk/Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.h (258389 => 258390)


--- trunk/Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.h	2020-03-13 09:46:25 UTC (rev 258389)
+++ trunk/Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.h	2020-03-13 10:10:01 UTC (rev 258390)
@@ -68,8 +68,8 @@
     void sessionWillEndPlayback(PlatformMediaSession&, DelayCallingUpdateNowPlaying) final;
 
     // AudioSession::InterruptionObserver
-    void beginAudioSessionInterruption(PlatformMediaSession::InterruptionType type) final { beginInterruption(type); }
-    void endAudioSessionInterruption(PlatformMediaSession::EndInterruptionFlags flags) final { endInterruption(flags); }
+    void beginAudioSessionInterruption() final { beginInterruption(PlatformMediaSession::SystemInterruption); }
+    void endAudioSessionInterruption(AudioSession::MayResume mayResume) final { endInterruption(mayResume == AudioSession::MayResume::Yes ? PlatformMediaSession::MayResumePlaying : PlatformMediaSession::NoFlags); }
 
     // MediaSessionHelperClient
     void applicationWillEnterForeground(SuspendedUnderLock) final;

Modified: trunk/Source/WebKit/ChangeLog (258389 => 258390)


--- trunk/Source/WebKit/ChangeLog	2020-03-13 09:46:25 UTC (rev 258389)
+++ trunk/Source/WebKit/ChangeLog	2020-03-13 10:10:01 UTC (rev 258390)
@@ -1,3 +1,29 @@
+2020-03-13  youenn fablet  <you...@apple.com>
+
+        Remove use of PlatformMediaSession types in AudioSession
+        https://bugs.webkit.org/show_bug.cgi?id=208995
+
+        Reviewed by Eric Carlson.
+
+        Update code according WebCore API changes.
+        Make use of AudioSession current code path to make RemoteAudioSession notify its observers.
+
+        * GPUProcess/media/RemoteAudioSessionProxy.cpp:
+        (WebKit::RemoteAudioSessionProxy::setCategory):
+        (WebKit::RemoteAudioSessionProxy::beginInterruption):
+        (WebKit::RemoteAudioSessionProxy::endInterruption):
+        * GPUProcess/media/RemoteAudioSessionProxy.h:
+        * GPUProcess/media/RemoteAudioSessionProxyManager.cpp:
+        (WebKit::RemoteAudioSessionProxyManager::tryToSetActiveForProcess):
+        (WebKit::RemoteAudioSessionProxyManager::beginAudioSessionInterruption):
+        (WebKit::RemoteAudioSessionProxyManager::endAudioSessionInterruption):
+        * GPUProcess/media/RemoteAudioSessionProxyManager.h:
+        * WebProcess/GPU/media/RemoteAudioSession.cpp:
+        (WebKit::RemoteAudioSession::beginInterruption): Deleted.
+        (WebKit::RemoteAudioSession::endInterruption): Deleted.
+        * WebProcess/GPU/media/RemoteAudioSession.h:
+        * WebProcess/GPU/media/RemoteAudioSession.messages.in:
+
 2020-03-13  Ryosuke Niwa  <rn...@webkit.org>
 
         Release build fix after r258384.

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.cpp (258389 => 258390)


--- trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.cpp	2020-03-13 09:46:25 UTC (rev 258389)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.cpp	2020-03-13 10:10:01 UTC (rev 258390)
@@ -71,7 +71,7 @@
     };
 }
 
-void RemoteAudioSessionProxy::setCategory(WebCore::AudioSession::CategoryType category, WebCore::RouteSharingPolicy policy)
+void RemoteAudioSessionProxy::setCategory(AudioSession::CategoryType category, RouteSharingPolicy policy)
 {
     m_category = category;
     m_routeSharingPolicy = policy;
@@ -90,14 +90,14 @@
     completion(m_active);
 }
 
-void RemoteAudioSessionProxy::beginInterruption(WebCore::PlatformMediaSession::InterruptionType type)
+void RemoteAudioSessionProxy::beginInterruption()
 {
-    connection().send(Messages::RemoteAudioSession::BeginInterruption(type), { });
+    connection().send(Messages::RemoteAudioSession::BeginInterruption(), { });
 }
 
-void RemoteAudioSessionProxy::endInterruption(WebCore::PlatformMediaSession::EndInterruptionFlags flags)
+void RemoteAudioSessionProxy::endInterruption(AudioSession::MayResume mayResume)
 {
-    connection().send(Messages::RemoteAudioSession::EndInterruption(flags), { });
+    connection().send(Messages::RemoteAudioSession::EndInterruption(mayResume), { });
 }
 
 RemoteAudioSessionProxyManager& RemoteAudioSessionProxy::audioSessionManager()

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.h (258389 => 258390)


--- trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.h	2020-03-13 09:46:25 UTC (rev 258389)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.h	2020-03-13 10:10:01 UTC (rev 258390)
@@ -30,7 +30,6 @@
 #include "MessageReceiver.h"
 #include "RemoteAudioSessionConfiguration.h"
 #include <WebCore/AudioSession.h>
-#include <WebCore/PlatformMediaSession.h>
 #include <WebCore/ProcessIdentifier.h>
 #include <wtf/WeakPtr.h>
 
@@ -59,8 +58,8 @@
     size_t preferredBufferSize() const { return m_preferredBufferSize; }
     bool isActive() const { return m_active; }
 
-    void beginInterruption(WebCore::PlatformMediaSession::InterruptionType);
-    void endInterruption(WebCore::PlatformMediaSession::EndInterruptionFlags);
+    void beginInterruption();
+    void endInterruption(WebCore::AudioSession::MayResume);
 
     // IPC::MessageReceiver
     void didReceiveMessage(IPC::Connection&, IPC::Decoder&) final;
@@ -68,7 +67,7 @@
 
 private:
     friend UniqueRef<RemoteAudioSessionProxy> WTF::makeUniqueRefWithoutFastMallocCheck<RemoteAudioSessionProxy>(GPUConnectionToWebProcess&);
-    RemoteAudioSessionProxy(GPUConnectionToWebProcess&);
+    explicit RemoteAudioSessionProxy(GPUConnectionToWebProcess&);
 
     // Messages
     void setCategory(WebCore::AudioSession::CategoryType, WebCore::RouteSharingPolicy);

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.cpp (258389 => 258390)


--- trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.cpp	2020-03-13 09:46:25 UTC (rev 258389)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.cpp	2020-03-13 10:10:01 UTC (rev 258390)
@@ -161,7 +161,7 @@
         if (categoryCanMixWithOthers(otherProxy.category()))
             continue;
 
-        otherProxy.beginInterruption(PlatformMediaSession::InterruptionType::SystemInterruption);
+        otherProxy.beginInterruption();
     }
 #endif
 
@@ -169,19 +169,19 @@
 
 }
 
-void RemoteAudioSessionProxyManager::beginAudioSessionInterruption(PlatformMediaSession::InterruptionType type)
+void RemoteAudioSessionProxyManager::beginAudioSessionInterruption()
 {
     for (auto& proxy : m_proxies) {
         if (proxy.isActive())
-            proxy.beginInterruption(type);
+            proxy.beginInterruption();
     }
 }
 
-void RemoteAudioSessionProxyManager::endAudioSessionInterruption(PlatformMediaSession::EndInterruptionFlags flags)
+void RemoteAudioSessionProxyManager::endAudioSessionInterruption(AudioSession::MayResume mayResume)
 {
     for (auto& proxy : m_proxies) {
         if (proxy.isActive())
-            proxy.endInterruption(flags);
+            proxy.endInterruption(mayResume);
     }
 }
 

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.h (258389 => 258390)


--- trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.h	2020-03-13 09:46:25 UTC (rev 258389)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.h	2020-03-13 10:10:01 UTC (rev 258390)
@@ -54,8 +54,8 @@
     const WebCore::AudioSession& session() const { return m_session; }
 
 private:
-    void beginAudioSessionInterruption(WebCore::PlatformMediaSession::InterruptionType) final;
-    void endAudioSessionInterruption(WebCore::PlatformMediaSession::EndInterruptionFlags) final;
+    void beginAudioSessionInterruption() final;
+    void endAudioSessionInterruption(WebCore::AudioSession::MayResume) final;
 
     UniqueRef<WebCore::AudioSession> m_session;
     WeakHashSet<RemoteAudioSessionProxy> m_proxies;

Modified: trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.cpp (258389 => 258390)


--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.cpp	2020-03-13 09:46:25 UTC (rev 258389)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.cpp	2020-03-13 10:10:01 UTC (rev 258390)
@@ -84,16 +84,6 @@
         handleMutedStateChange();
 }
 
-void RemoteAudioSession::beginInterruption(PlatformMediaSession::InterruptionType type)
-{
-    PlatformMediaSessionManager::sharedManager().beginInterruption(type);
 }
 
-void RemoteAudioSession::endInterruption(PlatformMediaSession::EndInterruptionFlags flags)
-{
-    PlatformMediaSessionManager::sharedManager().endInterruption(flags);
-}
-
-}
-
 #endif

Modified: trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.h (258389 => 258390)


--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.h	2020-03-13 09:46:25 UTC (rev 258389)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.h	2020-03-13 10:10:01 UTC (rev 258390)
@@ -30,7 +30,6 @@
 #include "MessageReceiver.h"
 #include "RemoteAudioSessionConfiguration.h"
 #include <WebCore/AudioSession.h>
-#include <WebCore/PlatformMediaSession.h>
 
 namespace IPC {
 class Connection;
@@ -59,8 +58,6 @@
 
     // Messages
     void configurationChanged(RemoteAudioSessionConfiguration&&);
-    void beginInterruption(WebCore::PlatformMediaSession::InterruptionType);
-    void endInterruption(WebCore::PlatformMediaSession::EndInterruptionFlags);
 
     // AudioSession
     void setCategory(CategoryType, WebCore::RouteSharingPolicy) final;

Modified: trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.messages.in (258389 => 258390)


--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.messages.in	2020-03-13 09:46:25 UTC (rev 258389)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.messages.in	2020-03-13 10:10:01 UTC (rev 258390)
@@ -27,8 +27,8 @@
 
 messages -> RemoteAudioSession NotRefCounted {
     ConfigurationChanged(struct WebKit::RemoteAudioSessionConfiguration configuration)
-    BeginInterruption(enum:uint8_t WebCore::PlatformMediaSession::InterruptionType type)
-    EndInterruption(enum:uint8_t WebCore::PlatformMediaSession::EndInterruptionFlags flags)
+    BeginInterruption()
+    EndInterruption(WebCore::AudioSession::MayResume flags)
 }
 
 #endif
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to