Diff
Modified: trunk/Source/WebCore/ChangeLog (280663 => 280664)
--- trunk/Source/WebCore/ChangeLog 2021-08-04 21:29:09 UTC (rev 280663)
+++ trunk/Source/WebCore/ChangeLog 2021-08-04 21:36:38 UTC (rev 280664)
@@ -1,3 +1,50 @@
+2021-08-04 Peng Liu <[email protected]>
+
+ [Catalina][GPUP] Some API tests fail after GPU Process features are enabled
+ https://bugs.webkit.org/show_bug.cgi?id=228589
+
+ Reviewed by Jer Noble.
+
+ When "Media in GPU Process" is enabled, `AudioSession[IOS|Mac]` runs in
+ the GPU process. `HTMLMediaElement`, which is an observer of audio session,
+ runs in a WebContent process. It cannot get its AudioSession's configuration
+ directly. We need a mechanism to "push" the latest audio session configuration
+ from the GPU process to the WebContent process.
+
+ This patch replaces the `MutedStateObserver` with an audio session configuration
+ change observer interface, so that an audio session will notify its observers
+ after changing its configurations, including buffer size, muted state, sample rate.
+ Currently, this observer interface is used on macOS only.
+
+ No new tests. Fix an API test failure.
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::initializeMediaSession):
+ (WebCore::HTMLMediaElement::~HTMLMediaElement):
+ (WebCore::HTMLMediaElement::hardwareMutedStateDidChange):
+ * html/HTMLMediaElement.h:
+
+ * platform/audio/AudioSession.cpp:
+ (WebCore::AudioSession::addConfigurationChangeObserver):
+ (WebCore::AudioSession::removeConfigurationChangeObserver):
+ * platform/audio/AudioSession.h:
+ * platform/audio/ios/AudioSessionIOS.h:
+ Move `m_interruptionObservers` to this class because only `AudioSessionIOS`
+ supports interruption observers.
+ * platform/audio/mac/AudioSessionMac.h:
+ * platform/audio/mac/AudioSessionMac.mm:
+ (WebCore::AudioSessionMac::handleSampleRateChange):
+ (WebCore::AudioSessionMac::handleSampleRateChange const):
+ (WebCore::AudioSessionMac::handleBufferSizeChange):
+ (WebCore::AudioSessionMac::handleBufferSizeChange const):
+ (WebCore::AudioSessionMac::sampleRate const):
+ (WebCore::AudioSessionMac::setPreferredBufferSize):
+ (WebCore::AudioSessionMac::handleMutedStateChange):
+ (WebCore::AudioSessionMac::addConfigurationChangeObserver):
+ (WebCore::AudioSessionMac::removeConfigurationChangeObserver):
+ (WebCore::AudioSessionMac::addMutedStateObserver): Deleted.
+ (WebCore::AudioSessionMac::removeMutedStateObserver): Deleted.
+
2021-08-04 Miguel Gomez <[email protected]>
[GTK][WPE] Elliptic radial gradients are not working
Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (280663 => 280664)
--- trunk/Source/WebCore/html/HTMLMediaElement.cpp 2021-08-04 21:29:09 UTC (rev 280663)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp 2021-08-04 21:36:38 UTC (rev 280664)
@@ -513,7 +513,7 @@
registerWithDocument(document);
#if USE(AUDIO_SESSION) && PLATFORM(MAC)
- AudioSession::sharedSession().addMutedStateObserver(this);
+ AudioSession::sharedSession().addConfigurationChangeObserver(*this);
#endif
m_mediaSession->clientWillBeginAutoplaying();
@@ -530,7 +530,7 @@
unregisterWithDocument(document());
#if USE(AUDIO_SESSION) && PLATFORM(MAC)
- AudioSession::sharedSession().removeMutedStateObserver(this);
+ AudioSession::sharedSession().removeConfigurationChangeObserver(*this);
#endif
if (m_audioTracks)
@@ -3808,9 +3808,9 @@
}
#if USE(AUDIO_SESSION) && PLATFORM(MAC)
-void HTMLMediaElement::hardwareMutedStateDidChange(AudioSession* session)
+void HTMLMediaElement::hardwareMutedStateDidChange(const AudioSession& session)
{
- if (!session->isMuted())
+ if (!session.isMuted())
return;
if (!hasAudio())
Modified: trunk/Source/WebCore/html/HTMLMediaElement.h (280663 => 280664)
--- trunk/Source/WebCore/html/HTMLMediaElement.h 2021-08-04 21:29:09 UTC (rev 280663)
+++ trunk/Source/WebCore/html/HTMLMediaElement.h 2021-08-04 21:36:38 UTC (rev 280664)
@@ -128,7 +128,7 @@
, private TextTrackClient
, private VideoTrackClient
#if USE(AUDIO_SESSION) && PLATFORM(MAC)
- , private AudioSession::MutedStateObserver
+ , private AudioSession::ConfigurationChangeObserver
#endif
#if ENABLE(ENCRYPTED_MEDIA)
, private CDMClient
@@ -882,7 +882,7 @@
void pageMutedStateDidChange() override;
#if USE(AUDIO_SESSION) && PLATFORM(MAC)
- void hardwareMutedStateDidChange(AudioSession*) final;
+ void hardwareMutedStateDidChange(const AudioSession&) final;
#endif
bool processingUserGestureForMedia() const;
Modified: trunk/Source/WebCore/platform/audio/AudioSession.cpp (280663 => 280664)
--- trunk/Source/WebCore/platform/audio/AudioSession.cpp 2021-08-04 21:29:09 UTC (rev 280663)
+++ trunk/Source/WebCore/platform/audio/AudioSession.cpp 2021-08-04 21:36:38 UTC (rev 280664)
@@ -201,6 +201,16 @@
notImplemented();
}
+void AudioSession::addConfigurationChangeObserver(ConfigurationChangeObserver&)
+{
+ notImplemented();
+}
+
+void AudioSession::removeConfigurationChangeObserver(ConfigurationChangeObserver&)
+{
+ notImplemented();
+}
+
void AudioSession::setIsPlayingToBluetoothOverride(std::optional<bool>)
{
notImplemented();
Modified: trunk/Source/WebCore/platform/audio/AudioSession.h (280663 => 280664)
--- trunk/Source/WebCore/platform/audio/AudioSession.h 2021-08-04 21:29:09 UTC (rev 280663)
+++ trunk/Source/WebCore/platform/audio/AudioSession.h 2021-08-04 21:36:38 UTC (rev 280664)
@@ -91,15 +91,17 @@
virtual size_t preferredBufferSize() const;
virtual void setPreferredBufferSize(size_t);
- class MutedStateObserver {
+ class ConfigurationChangeObserver : public CanMakeWeakPtr<ConfigurationChangeObserver> {
public:
- virtual ~MutedStateObserver() = default;
+ virtual ~ConfigurationChangeObserver() = default;
- virtual void hardwareMutedStateDidChange(AudioSession*) = 0;
+ virtual void hardwareMutedStateDidChange(const AudioSession&) = 0;
+ virtual void bufferSizeDidChange(const AudioSession&) { }
+ virtual void sampleRateDidChange(const AudioSession&) { }
};
- virtual void addMutedStateObserver(MutedStateObserver*) { }
- virtual void removeMutedStateObserver(MutedStateObserver*) { }
+ virtual void addConfigurationChangeObserver(ConfigurationChangeObserver&);
+ virtual void removeConfigurationChangeObserver(ConfigurationChangeObserver&);
virtual void audioOutputDeviceChanged();
virtual void setIsPlayingToBluetoothOverride(std::optional<bool>);
@@ -134,11 +136,6 @@
virtual bool tryToSetActiveInternal(bool);
- HashSet<MutedStateObserver*> m_observers;
-#if PLATFORM(IOS_FAMILY)
- WeakHashSet<InterruptionObserver> m_interruptionObservers;
-#endif
-
WeakPtr<AudioSessionRoutingArbitrationClient> m_routingArbitrationClient;
bool m_active { false }; // Used only for testing.
Modified: trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.h (280663 => 280664)
--- trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.h 2021-08-04 21:29:09 UTC (rev 280663)
+++ trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.h 2021-08-04 21:36:38 UTC (rev 280664)
@@ -66,6 +66,7 @@
AudioSession::CategoryType m_categoryOverride { AudioSession::CategoryType::None };
Ref<WTF::WorkQueue> m_workQueue;
+ WeakHashSet<InterruptionObserver> m_interruptionObservers;
RetainPtr<WebInterruptionObserverHelper> m_interruptionObserverHelper;
};
Modified: trunk/Source/WebCore/platform/audio/mac/AudioSessionMac.h (280663 => 280664)
--- trunk/Source/WebCore/platform/audio/mac/AudioSessionMac.h 2021-08-04 21:29:09 UTC (rev 280663)
+++ trunk/Source/WebCore/platform/audio/mac/AudioSessionMac.h 2021-08-04 21:36:38 UTC (rev 280664)
@@ -44,7 +44,9 @@
void addBufferSizeObserverIfNeeded() const;
static OSStatus handleSampleRateChange(AudioObjectID, UInt32, const AudioObjectPropertyAddress*, void* inClientData);
+ void handleSampleRateChange() const;
static OSStatus handleBufferSizeChange(AudioObjectID, UInt32, const AudioObjectPropertyAddress*, void* inClientData);
+ void handleBufferSizeChange() const;
// AudioSession
CategoryType category() const final { return m_category; }
@@ -64,10 +66,11 @@
void setPreferredBufferSize(size_t) final;
bool isMuted() const final;
void handleMutedStateChange() final;
- void addMutedStateObserver(MutedStateObserver*) final;
- void removeMutedStateObserver(MutedStateObserver*) final;
+ void addConfigurationChangeObserver(ConfigurationChangeObserver&) final;
+ void removeConfigurationChangeObserver(ConfigurationChangeObserver&) final;
std::optional<bool> m_lastMutedState;
+ mutable WeakHashSet<ConfigurationChangeObserver> m_configurationChangeObservers;
AudioSession::CategoryType m_category { AudioSession::CategoryType::None };
#if ENABLE(ROUTING_ARBITRATION)
bool m_setupArbitrationOngoing { false };
Modified: trunk/Source/WebCore/platform/audio/mac/AudioSessionMac.mm (280663 => 280664)
--- trunk/Source/WebCore/platform/audio/mac/AudioSessionMac.mm 2021-08-04 21:29:09 UTC (rev 280663)
+++ trunk/Source/WebCore/platform/audio/mac/AudioSessionMac.mm 2021-08-04 21:36:38 UTC (rev 280664)
@@ -125,9 +125,21 @@
return result;
session->m_sampleRate = narrowPrecisionToFloat(nominalSampleRate);
+
+ callOnMainThread([session] {
+ session->handleSampleRateChange();
+ });
+
return noErr;
}
+void AudioSessionMac::handleSampleRateChange() const
+{
+ m_configurationChangeObservers.forEach([this](auto& observer) {
+ observer.sampleRateDidChange(*this);
+ });
+}
+
void AudioSessionMac::addBufferSizeObserverIfNeeded() const
{
if (m_hasBufferSizeObserver)
@@ -163,9 +175,21 @@
return result;
session->m_bufferSize = bufferSize;
+
+ callOnMainThread([session] {
+ session->handleBufferSizeChange();
+ });
+
return noErr;
}
+void AudioSessionMac::handleBufferSizeChange() const
+{
+ m_configurationChangeObservers.forEach([this](auto& observer) {
+ observer.bufferSizeDidChange(*this);
+ });
+}
+
void AudioSessionMac::audioOutputDeviceChanged()
{
#if ENABLE(ROUTING_ARBITRATION)
@@ -272,6 +296,8 @@
RELEASE_LOG_ERROR(Media, "AudioSessionMac::sampleRate() - AudioObjectGetPropertyData() return an invalid sample rate");
m_sampleRate = 44100;
}
+
+ handleSampleRateChange();
}
return *m_sampleRate;
}
@@ -406,8 +432,10 @@
result = AudioObjectSetPropertyData(defaultDevice(), &preferredBufferSizeAddress, 0, 0, sizeof(bufferSizeOut), (void*)&bufferSizeOut);
- if (!result)
+ if (!result) {
m_bufferSize = bufferSizeOut;
+ handleBufferSizeChange();
+ }
#if !LOG_DISABLED
if (result)
@@ -459,17 +487,18 @@
if (m_lastMutedState && *m_lastMutedState == isCurrentlyMuted)
return;
- for (auto* observer : m_observers)
- observer->hardwareMutedStateDidChange(this);
+ m_lastMutedState = isCurrentlyMuted;
- m_lastMutedState = isCurrentlyMuted;
+ m_configurationChangeObservers.forEach([this](auto& observer) {
+ observer.hardwareMutedStateDidChange(*this);
+ });
}
-void AudioSessionMac::addMutedStateObserver(MutedStateObserver* observer)
+void AudioSessionMac::addConfigurationChangeObserver(ConfigurationChangeObserver& observer)
{
- m_observers.add(observer);
+ m_configurationChangeObservers.add(observer);
- if (m_observers.size() > 1)
+ if (m_configurationChangeObservers.computeSize() > 1)
return;
AudioObjectPropertyAddress muteAddress = {
@@ -486,9 +515,9 @@
AudioObjectAddPropertyListener(defaultDevice(), &muteAddress, handleMutePropertyChange, this);
}
-void AudioSessionMac::removeMutedStateObserver(MutedStateObserver* observer)
+void AudioSessionMac::removeConfigurationChangeObserver(ConfigurationChangeObserver& observer)
{
- if (m_observers.size() == 1) {
+ if (m_configurationChangeObservers.computeSize() == 1) {
AudioObjectPropertyAddress muteAddress = {
kAudioDevicePropertyMute,
kAudioDevicePropertyScopeOutput,
@@ -503,7 +532,7 @@
AudioObjectRemovePropertyListener(defaultDevice(), &muteAddress, handleMutePropertyChange, this);
}
- m_observers.remove(observer);
+ m_configurationChangeObservers.remove(observer);
}
}
Modified: trunk/Source/WebKit/ChangeLog (280663 => 280664)
--- trunk/Source/WebKit/ChangeLog 2021-08-04 21:29:09 UTC (rev 280663)
+++ trunk/Source/WebKit/ChangeLog 2021-08-04 21:36:38 UTC (rev 280664)
@@ -1,3 +1,36 @@
+2021-08-04 Peng Liu <[email protected]>
+
+ [Catalina][GPUP] Some API tests fail after GPU Process features are enabled
+ https://bugs.webkit.org/show_bug.cgi?id=228589
+
+ Reviewed by Jer Noble.
+
+ When an audio session's configuration changes, let `RemoteAudioSessionProxy`
+ in the GPU process send the latest audio session configuration to `RemoteAudioSession`
+ in the WebContent process through an IPC message (`RemoteAudioSession::ConfigurationChanged`).
+
+ * GPUProcess/media/RemoteAudioSessionProxy.cpp:
+ (WebKit::RemoteAudioSessionProxy::configurationChanged):
+ * GPUProcess/media/RemoteAudioSessionProxy.h:
+
+ * GPUProcess/media/RemoteAudioSessionProxyManager.cpp:
+ (WebKit::RemoteAudioSessionProxyManager::RemoteAudioSessionProxyManager):
+ (WebKit::RemoteAudioSessionProxyManager::~RemoteAudioSessionProxyManager):
+ (WebKit::RemoteAudioSessionProxyManager::beginAudioSessionInterruption):
+ (WebKit::RemoteAudioSessionProxyManager::endAudioSessionInterruption):
+ (WebKit::RemoteAudioSessionProxyManager::hardwareMutedStateDidChange):
+ (WebKit::RemoteAudioSessionProxyManager::bufferSizeDidChange):
+ (WebKit::RemoteAudioSessionProxyManager::sampleRateDidChange):
+ (WebKit::RemoteAudioSessionProxyManager::configurationDidChange):
+
+ * GPUProcess/media/RemoteAudioSessionProxyManager.h:
+ * WebProcess/GPU/media/RemoteAudioSession.cpp:
+ (WebKit::RemoteAudioSession::addConfigurationChangeObserver):
+ (WebKit::RemoteAudioSession::removeConfigurationChangeObserver):
+ (WebKit::RemoteAudioSession::configurationChanged):
+ * WebProcess/GPU/media/RemoteAudioSession.h:
+ * WebProcess/GPU/media/RemoteAudioSession.messages.in:
+
2021-08-04 Simon Fraser <[email protected]>
Crash in DisplayLink::notifyObserversDisplayWasRefreshed() on macOS
Modified: trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.cpp (280663 => 280664)
--- trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.cpp 2021-08-04 21:29:09 UTC (rev 280663)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.cpp 2021-08-04 21:36:38 UTC (rev 280664)
@@ -93,6 +93,11 @@
completion(m_active);
}
+void RemoteAudioSessionProxy::configurationChanged()
+{
+ connection().send(Messages::RemoteAudioSession::ConfigurationChanged(configuration()), { });
+}
+
void RemoteAudioSessionProxy::beginInterruption()
{
connection().send(Messages::RemoteAudioSession::BeginInterruption(), { });
Modified: trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.h (280663 => 280664)
--- trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.h 2021-08-04 21:29:09 UTC (rev 280663)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.h 2021-08-04 21:36:38 UTC (rev 280664)
@@ -57,6 +57,7 @@
size_t preferredBufferSize() const { return m_preferredBufferSize; }
bool isActive() const { return m_active; }
+ void configurationChanged();
void beginInterruption();
void endInterruption(WebCore::AudioSession::MayResume);
Modified: trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.cpp (280663 => 280664)
--- trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.cpp 2021-08-04 21:29:09 UTC (rev 280663)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.cpp 2021-08-04 21:36:38 UTC (rev 280664)
@@ -47,11 +47,13 @@
: m_session(AudioSession::create())
{
m_session->addInterruptionObserver(*this);
+ m_session->addConfigurationChangeObserver(*this);
}
RemoteAudioSessionProxyManager::~RemoteAudioSessionProxyManager()
{
m_session->removeInterruptionObserver(*this);
+ m_session->removeConfigurationChangeObserver(*this);
}
void RemoteAudioSessionProxyManager::addProxy(RemoteAudioSessionProxy& proxy)
@@ -173,20 +175,42 @@
void RemoteAudioSessionProxyManager::beginAudioSessionInterruption()
{
- for (auto& proxy : m_proxies) {
+ m_proxies.forEach([](auto& proxy) {
if (proxy.isActive())
proxy.beginInterruption();
- }
+ });
}
void RemoteAudioSessionProxyManager::endAudioSessionInterruption(AudioSession::MayResume mayResume)
{
- for (auto& proxy : m_proxies) {
+ m_proxies.forEach([mayResume](auto& proxy) {
if (proxy.isActive())
proxy.endInterruption(mayResume);
- }
+ });
}
+void RemoteAudioSessionProxyManager::hardwareMutedStateDidChange(const AudioSession& session)
+{
+ configurationDidChange(session);
}
+void RemoteAudioSessionProxyManager::bufferSizeDidChange(const AudioSession& session)
+{
+ configurationDidChange(session);
+}
+
+void RemoteAudioSessionProxyManager::sampleRateDidChange(const AudioSession& session)
+{
+ configurationDidChange(session);
+}
+
+void RemoteAudioSessionProxyManager::configurationDidChange(const WebCore::AudioSession&)
+{
+ m_proxies.forEach([](auto& proxy) {
+ proxy.configurationChanged();
+ });
+}
+
+}
+
#endif
Modified: trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.h (280663 => 280664)
--- trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.h 2021-08-04 21:29:09 UTC (rev 280663)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.h 2021-08-04 21:36:38 UTC (rev 280664)
@@ -37,7 +37,8 @@
class RemoteAudioSessionProxy;
class RemoteAudioSessionProxyManager
- : public WebCore::AudioSession::InterruptionObserver {
+ : private WebCore::AudioSession::InterruptionObserver
+ , private WebCore::AudioSession::ConfigurationChangeObserver {
WTF_MAKE_FAST_ALLOCATED;
public:
RemoteAudioSessionProxyManager();
@@ -58,6 +59,11 @@
void beginAudioSessionInterruption() final;
void endAudioSessionInterruption(WebCore::AudioSession::MayResume) final;
+ void hardwareMutedStateDidChange(const WebCore::AudioSession&) final;
+ void bufferSizeDidChange(const WebCore::AudioSession&) final;
+ void sampleRateDidChange(const WebCore::AudioSession&) final;
+ void configurationDidChange(const WebCore::AudioSession&);
+
UniqueRef<WebCore::AudioSession> m_session;
WeakHashSet<RemoteAudioSessionProxy> m_proxies;
};
Modified: trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.cpp (280663 => 280664)
--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.cpp 2021-08-04 21:29:09 UTC (rev 280663)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.cpp 2021-08-04 21:36:38 UTC (rev 280664)
@@ -122,6 +122,16 @@
return succeeded;
}
+void RemoteAudioSession::addConfigurationChangeObserver(ConfigurationChangeObserver& observer)
+{
+ m_configurationChangeObservers.add(observer);
+}
+
+void RemoteAudioSession::removeConfigurationChangeObserver(ConfigurationChangeObserver& observer)
+{
+ m_configurationChangeObservers.remove(observer);
+}
+
AudioSession::CategoryType RemoteAudioSession::category() const
{
#if PLATFORM(COCOA)
@@ -131,6 +141,26 @@
#endif
}
+void RemoteAudioSession::configurationChanged(RemoteAudioSessionConfiguration&& configuration)
+{
+ bool mutedStateChanged = !m_configuration || configuration.isMuted != (*m_configuration).isMuted;
+ bool bufferSizeChanged = !m_configuration || configuration.bufferSize != (*m_configuration).bufferSize;
+ bool sampleRateCahnged = !m_configuration || configuration.sampleRate != (*m_configuration).sampleRate;
+
+ m_configuration = WTFMove(configuration);
+
+ m_configurationChangeObservers.forEach([&](auto& observer) {
+ if (mutedStateChanged)
+ observer.hardwareMutedStateDidChange(*this);
+
+ if (bufferSizeChanged)
+ observer.bufferSizeDidChange(*this);
+
+ if (sampleRateCahnged)
+ observer.sampleRateDidChange(*this);
+ });
}
+}
+
#endif
Modified: trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.h (280663 => 280664)
--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.h 2021-08-04 21:29:09 UTC (rev 280663)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.h 2021-08-04 21:36:38 UTC (rev 280664)
@@ -68,6 +68,8 @@
void setCategory(CategoryType, WebCore::RouteSharingPolicy) final;
void setPreferredBufferSize(size_t) final;
bool tryToSetActiveInternal(bool) final;
+ void addConfigurationChangeObserver(ConfigurationChangeObserver&);
+ void removeConfigurationChangeObserver(ConfigurationChangeObserver&);
const RemoteAudioSessionConfiguration& configuration() const;
RemoteAudioSessionConfiguration& configuration();
@@ -86,6 +88,7 @@
WebProcess& m_process;
+ WeakHashSet<ConfigurationChangeObserver> m_configurationChangeObservers;
CategoryType m_category { CategoryType::None };
WebCore::RouteSharingPolicy m_routeSharingPolicy { WebCore::RouteSharingPolicy::Default };
std::optional<RemoteAudioSessionConfiguration> m_configuration;
Modified: trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.messages.in (280663 => 280664)
--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.messages.in 2021-08-04 21:29:09 UTC (rev 280663)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.messages.in 2021-08-04 21:36:38 UTC (rev 280664)
@@ -26,6 +26,7 @@
#if ENABLE(GPU_PROCESS) && USE(AUDIO_SESSION)
messages -> RemoteAudioSession NotRefCounted {
+ ConfigurationChanged(struct WebKit::RemoteAudioSessionConfiguration configuration)
BeginInterruption()
EndInterruption(WebCore::AudioSession::MayResume flags)
}
Modified: trunk/Tools/ChangeLog (280663 => 280664)
--- trunk/Tools/ChangeLog 2021-08-04 21:29:09 UTC (rev 280663)
+++ trunk/Tools/ChangeLog 2021-08-04 21:36:38 UTC (rev 280664)
@@ -1,3 +1,13 @@
+2021-08-04 Peng Liu <[email protected]>
+
+ [Catalina][GPUP] Some API tests fail after GPU Process features are enabled
+ https://bugs.webkit.org/show_bug.cgi?id=228589
+
+ Reviewed by Jer Noble.
+
+ * TestWebKitAPI/Tests/WebKitCocoa/AudioBufferSize.mm:
+ (TestWebKitAPI::TEST):
+
2021-08-04 Jonathan Bedard <[email protected]>
[check-github-mirror-integrity] Store remote cache in checkout
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/AudioBufferSize.mm (280663 => 280664)
--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/AudioBufferSize.mm 2021-08-04 21:29:09 UTC (rev 280663)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/AudioBufferSize.mm 2021-08-04 21:36:38 UTC (rev 280664)
@@ -56,7 +56,7 @@
return 0;
}
-TEST(WebKit, DISABLED_AudioBufferSize)
+TEST(WebKit, AudioBufferSize)
{
auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
auto context = adoptWK(TestWebKitAPI::Util::createContextForInjectedBundleTest("InternalsInjectedBundleTest"));