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