Diff
Modified: trunk/Source/WebCore/ChangeLog (272708 => 272709)
--- trunk/Source/WebCore/ChangeLog 2021-02-11 06:26:32 UTC (rev 272708)
+++ trunk/Source/WebCore/ChangeLog 2021-02-11 07:24:24 UTC (rev 272709)
@@ -1,3 +1,21 @@
+2021-02-10 Jer Noble <jer.no...@apple.com>
+
+ Move AudioHardwareListener into the GPU Process
+ https://bugs.webkit.org/show_bug.cgi?id=221455
+
+ Reviewed by Eric Carlson.
+
+ Allow clients to override the creation method for AudioHardwareListener::create().
+
+ * platform/audio/AudioHardwareListener.cpp:
+ (WebCore::audioHardwareListenerCreationFunction):
+ (WebCore::AudioHardwareListener::setCreationFunction):
+ (WebCore::AudioHardwareListener::resetCreationFunction):
+ (WebCore::AudioHardwareListener::create):
+ * platform/audio/AudioHardwareListener.h:
+ * platform/audio/mac/AudioHardwareListenerMac.cpp:
+ (WebCore::AudioHardwareListener::create): Deleted.
+
2021-02-10 Rob Buis <rb...@igalia.com>
Use event loop to set title
Modified: trunk/Source/WebCore/platform/audio/AudioHardwareListener.cpp (272708 => 272709)
--- trunk/Source/WebCore/platform/audio/AudioHardwareListener.cpp 2021-02-11 06:26:32 UTC (rev 272708)
+++ trunk/Source/WebCore/platform/audio/AudioHardwareListener.cpp 2021-02-11 07:24:24 UTC (rev 272709)
@@ -26,15 +26,45 @@
#include "config.h"
#include "AudioHardwareListener.h"
+#include <wtf/Function.h>
+#include <wtf/NeverDestroyed.h>
+
+#if PLATFORM(MAC)
+#include "AudioHardwareListenerMac.h"
+#endif
+
namespace WebCore {
-#if !PLATFORM(MAC)
-Ref<AudioHardwareListener> AudioHardwareListener::create(Client& client)
+static AudioHardwareListener::CreationFunction& audioHardwareListenerCreationFunction()
{
- return adoptRef(*new AudioHardwareListener(client));
+ static NeverDestroyed<AudioHardwareListener::CreationFunction> creationFunction;
+ return creationFunction;
}
+
+void AudioHardwareListener::setCreationFunction(CreationFunction&& function)
+{
+ audioHardwareListenerCreationFunction() = WTFMove(function);
+}
+
+void AudioHardwareListener::resetCreationFunction()
+{
+ audioHardwareListenerCreationFunction() = [] (AudioHardwareListener::Client& client) {
+#if PLATFORM(MAC)
+ return AudioHardwareListenerMac::create(client);
+#else
+ return adoptRef(*new AudioHardwareListener(client));
#endif
+ };
+}
+Ref<AudioHardwareListener> AudioHardwareListener::create(Client& client)
+{
+ if (!audioHardwareListenerCreationFunction())
+ resetCreationFunction();
+
+ return audioHardwareListenerCreationFunction()(client);
+}
+
AudioHardwareListener::AudioHardwareListener(Client& client)
: m_client(client)
{
Modified: trunk/Source/WebCore/platform/audio/AudioHardwareListener.h (272708 => 272709)
--- trunk/Source/WebCore/platform/audio/AudioHardwareListener.h 2021-02-11 06:26:32 UTC (rev 272708)
+++ trunk/Source/WebCore/platform/audio/AudioHardwareListener.h 2021-02-11 07:24:24 UTC (rev 272709)
@@ -47,6 +47,10 @@
virtual void audioOutputDeviceChanged() = 0;
};
+ using CreationFunction = Function<Ref<AudioHardwareListener>(AudioHardwareListener::Client&)>;
+ WEBCORE_EXPORT static void setCreationFunction(CreationFunction&&);
+ WEBCORE_EXPORT static void resetCreationFunction();
+
WEBCORE_EXPORT static Ref<AudioHardwareListener> create(Client&);
virtual ~AudioHardwareListener() = default;
@@ -61,7 +65,7 @@
BufferSizeRange supportedBufferSizes() const { return m_supportedBufferSizes; }
protected:
- AudioHardwareListener(Client&);
+ WEBCORE_EXPORT AudioHardwareListener(Client&);
void setHardwareActivity(AudioHardwareActivityType activity) { m_activity = activity; }
void setSupportedBufferSizes(BufferSizeRange sizes) { m_supportedBufferSizes = sizes; }
Modified: trunk/Source/WebCore/platform/audio/mac/AudioHardwareListenerMac.cpp (272708 => 272709)
--- trunk/Source/WebCore/platform/audio/mac/AudioHardwareListenerMac.cpp 2021-02-11 06:26:32 UTC (rev 272708)
+++ trunk/Source/WebCore/platform/audio/mac/AudioHardwareListenerMac.cpp 2021-02-11 07:24:24 UTC (rev 272709)
@@ -109,11 +109,6 @@
return outputDeviceProperty;
}
-Ref<AudioHardwareListener> AudioHardwareListener::create(Client& client)
-{
- return AudioHardwareListenerMac::create(client);
-}
-
Ref<AudioHardwareListenerMac> AudioHardwareListenerMac::create(Client& client)
{
return adoptRef(*new AudioHardwareListenerMac(client));
Modified: trunk/Source/WebKit/CMakeLists.txt (272708 => 272709)
--- trunk/Source/WebKit/CMakeLists.txt 2021-02-11 06:26:32 UTC (rev 272708)
+++ trunk/Source/WebKit/CMakeLists.txt 2021-02-11 07:24:24 UTC (rev 272709)
@@ -222,6 +222,7 @@
WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy
WebProcess/GPU/graphics/RemoteRenderingBackendProxy
+ WebProcess/GPU/media/RemoteAudioHardwareListener
WebProcess/GPU/media/MediaPlayerPrivateRemote
WebProcess/GPU/media/MediaSourcePrivateRemote
WebProcess/GPU/media/RemoteAudioSession
Modified: trunk/Source/WebKit/ChangeLog (272708 => 272709)
--- trunk/Source/WebKit/ChangeLog 2021-02-11 06:26:32 UTC (rev 272708)
+++ trunk/Source/WebKit/ChangeLog 2021-02-11 07:24:24 UTC (rev 272709)
@@ -1,3 +1,47 @@
+2021-02-10 Jer Noble <jer.no...@apple.com>
+
+ Move AudioHardwareListener into the GPU Process
+ https://bugs.webkit.org/show_bug.cgi?id=221455
+
+ Reviewed by Eric Carlson.
+
+ Add a new Remote pair of classes, RemoteAudioHardwareListener/Proxy.
+
+ * CMakeLists.txt:
+ * DerivedSources-input.xcfilelist:
+ * DerivedSources-output.xcfilelist:
+ * DerivedSources.make:
+ * GPUProcess/GPUConnectionToWebProcess.cpp:
+ (WebKit::GPUConnectionToWebProcess::createAudioHardwareListener):
+ (WebKit::GPUConnectionToWebProcess::releaseAudioHardwareListener):
+ * GPUProcess/GPUConnectionToWebProcess.h:
+ * GPUProcess/GPUConnectionToWebProcess.messages.in:
+ * GPUProcess/media/RemoteAudioHardwareListenerProxy.cpp:
+ (WebKit::RemoteAudioHardwareListenerProxy::RemoteAudioHardwareListenerProxy):
+ (WebKit::RemoteAudioHardwareListenerProxy::audioHardwareDidBecomeActive):
+ (WebKit::RemoteAudioHardwareListenerProxy::audioHardwareDidBecomeInactive):
+ (WebKit::RemoteAudioHardwareListenerProxy::audioOutputDeviceChanged):
+ * GPUProcess/media/RemoteAudioHardwareListenerProxy.h:
+ * GPUProcess/media/RemoteLegacyCDMFactoryProxy.cpp:
+ * Scripts/webkit/messages.py:
+ * Sources.txt:
+ * SourcesCocoa.txt:
+ * WebKit.xcodeproj/project.pbxproj:
+ * WebProcess/GPU/media/RemoteAudioHardwareListener.cpp: Added.
+ (WebKit::RemoteAudioHardwareListener::create):
+ (WebKit::RemoteAudioHardwareListener::RemoteAudioHardwareListener):
+ (WebKit::RemoteAudioHardwareListener::~RemoteAudioHardwareListener):
+ (WebKit::RemoteAudioHardwareListener::gpuProcessConnectionDidClose):
+ (WebKit::RemoteAudioHardwareListener::audioHardwareDidBecomeActive):
+ (WebKit::RemoteAudioHardwareListener::audioHardwareDidBecomeInactive):
+ (WebKit::RemoteAudioHardwareListener::audioOutputDeviceChanged):
+ * WebProcess/GPU/media/RemoteAudioHardwareListener.h:
+ * WebProcess/GPU/media/RemoteAudioHardwareListener.messages.in:
+ * WebProcess/GPU/media/RemoteAudioHardwareListenerIdentifier.h:
+ * WebProcess/GPU/webrtc/MediaRecorderPrivate.h:
+ * WebProcess/WebProcess.cpp:
+ (WebKit::WebProcess::setUseGPUProcessForMedia):
+
2021-02-10 Jiewen Tan <jiewen_...@apple.com>
[WebAuthn] Update - [ASCAppleIDCredential initWithUser:...] to match the latest SPI
Modified: trunk/Source/WebKit/DerivedSources-input.xcfilelist (272708 => 272709)
--- trunk/Source/WebKit/DerivedSources-input.xcfilelist 2021-02-11 06:26:32 UTC (rev 272708)
+++ trunk/Source/WebKit/DerivedSources-input.xcfilelist 2021-02-11 07:24:24 UTC (rev 272709)
@@ -142,6 +142,7 @@
$(PROJECT_DIR)/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.messages.in
$(PROJECT_DIR)/WebProcess/GPU/media/MediaPlayerPrivateRemote.messages.in
$(PROJECT_DIR)/WebProcess/GPU/media/MediaSourcePrivateRemote.messages.in
+$(PROJECT_DIR)/WebProcess/GPU/media/RemoteAudioHardwareListener.messages.in
$(PROJECT_DIR)/WebProcess/GPU/media/RemoteAudioSession.messages.in
$(PROJECT_DIR)/WebProcess/GPU/media/RemoteAudioSourceProviderManager.messages.in
$(PROJECT_DIR)/WebProcess/GPU/media/RemoteCDMInstance.messages.in
Modified: trunk/Source/WebKit/DerivedSources-output.xcfilelist (272708 => 272709)
--- trunk/Source/WebKit/DerivedSources-output.xcfilelist 2021-02-11 06:26:32 UTC (rev 272708)
+++ trunk/Source/WebKit/DerivedSources-output.xcfilelist 2021-02-11 07:24:24 UTC (rev 272709)
@@ -138,6 +138,9 @@
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/RemoteAudioDestinationManagerMessages.cpp
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/RemoteAudioDestinationManagerMessages.h
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/RemoteAudioDestinationManagerMessagesReplies.h
+$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/RemoteAudioHardwareListenerMessageReceiver.cpp
+$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/RemoteAudioHardwareListenerMessages.h
+$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/RemoteAudioHardwareListenerMessagesReplies.h
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/RemoteAudioMediaStreamTrackRendererManagerMessageReceiver.cpp
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/RemoteAudioMediaStreamTrackRendererManagerMessages.h
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/RemoteAudioMediaStreamTrackRendererManagerMessagesReplies.h
Modified: trunk/Source/WebKit/DerivedSources.make (272708 => 272709)
--- trunk/Source/WebKit/DerivedSources.make 2021-02-11 06:26:32 UTC (rev 272708)
+++ trunk/Source/WebKit/DerivedSources.make 2021-02-11 07:24:24 UTC (rev 272709)
@@ -178,6 +178,7 @@
WebProcess/GPU/webrtc/SampleBufferDisplayLayer \
WebProcess/GPU/media/MediaPlayerPrivateRemote \
WebProcess/GPU/media/MediaSourcePrivateRemote \
+ WebProcess/GPU/media/RemoteAudioHardwareListener \
WebProcess/GPU/media/RemoteAudioSession \
WebProcess/GPU/media/RemoteAudioSourceProviderManager \
WebProcess/GPU/media/RemoteCDMInstance \
Modified: trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp (272708 => 272709)
--- trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp 2021-02-11 06:26:32 UTC (rev 272708)
+++ trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp 2021-02-11 07:24:24 UTC (rev 272709)
@@ -37,6 +37,7 @@
#include "LibWebRTCCodecsProxy.h"
#include "LibWebRTCCodecsProxyMessages.h"
#include "Logging.h"
+#include "RemoteAudioHardwareListenerProxy.h"
#include "RemoteAudioMediaStreamTrackRendererManager.h"
#include "RemoteMediaPlayerManagerProxy.h"
#include "RemoteMediaPlayerManagerProxyMessages.h"
@@ -404,6 +405,20 @@
}
#endif
+void GPUConnectionToWebProcess::createAudioHardwareListener(RemoteAudioHardwareListenerIdentifier identifier)
+{
+ auto addResult = m_remoteAudioHardwareListenerMap.ensure(identifier, [&]() {
+ return makeUnique<RemoteAudioHardwareListenerProxy>(*this, WTFMove(identifier));
+ });
+ ASSERT_UNUSED(addResult, addResult.isNewEntry);
+}
+
+void GPUConnectionToWebProcess::releaseAudioHardwareListener(RemoteAudioHardwareListenerIdentifier identifier)
+{
+ bool found = m_remoteAudioHardwareListenerMap.remove(identifier);
+ ASSERT_UNUSED(found, found);
+}
+
bool GPUConnectionToWebProcess::dispatchMessage(IPC::Connection& connection, IPC::Decoder& decoder)
{
#if ENABLE(WEB_AUDIO)
Modified: trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h (272708 => 272709)
--- trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h 2021-02-11 06:26:32 UTC (rev 272708)
+++ trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h 2021-02-11 07:24:24 UTC (rev 272709)
@@ -30,6 +30,7 @@
#include "Connection.h"
#include "GPUConnectionToWebProcessMessages.h"
#include "MessageReceiverMap.h"
+#include "RemoteAudioHardwareListenerIdentifier.h"
#include "RemoteAudioSessionIdentifier.h"
#include "RenderingBackendIdentifier.h"
@@ -50,6 +51,7 @@
class GPUProcess;
class LibWebRTCCodecsProxy;
class RemoteAudioDestinationManager;
+class RemoteAudioHardwareListenerProxy;
class RemoteAudioMediaStreamTrackRendererManager;
class RemoteAudioSessionProxy;
class RemoteAudioSessionProxyManager;
@@ -156,6 +158,9 @@
void ensureMediaSessionHelper();
#endif
+ void createAudioHardwareListener(RemoteAudioHardwareListenerIdentifier);
+ void releaseAudioHardwareListener(RemoteAudioHardwareListenerIdentifier);
+
// IPC::Connection::Client
void didClose(IPC::Connection&) final;
void didReceiveInvalidMessage(IPC::Connection&, IPC::MessageName) final;
@@ -230,6 +235,9 @@
#endif
std::unique_ptr<RemoteMediaEngineConfigurationFactoryProxy> m_mediaEngineConfigurationFactoryProxy;
+
+ using RemoteAudioHardwareListenerMap = HashMap<RemoteAudioHardwareListenerIdentifier, std::unique_ptr<RemoteAudioHardwareListenerProxy>>;
+ RemoteAudioHardwareListenerMap m_remoteAudioHardwareListenerMap;
};
} // namespace WebKit
Modified: trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.messages.in (272708 => 272709)
--- trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.messages.in 2021-02-11 06:26:32 UTC (rev 272708)
+++ trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.messages.in 2021-02-11 07:24:24 UTC (rev 272709)
@@ -40,6 +40,8 @@
#if ENABLE(VP9)
EnableVP9Decoders(bool shouldEnableVP8Decoder, bool shouldEnableVP9Decoder, bool shouldEnableVP9SWDecoder)
#endif
+ CreateAudioHardwareListener(WebKit::RemoteAudioHardwareListenerIdentifier identifier)
+ ReleaseAudioHardwareListener(WebKit::RemoteAudioHardwareListenerIdentifier identifier)
}
#endif // ENABLE(GPU_PROCESS)
Copied: trunk/Source/WebKit/GPUProcess/media/RemoteAudioHardwareListenerProxy.cpp (from rev 272708, trunk/Source/WebCore/platform/audio/AudioHardwareListener.cpp) (0 => 272709)
--- trunk/Source/WebKit/GPUProcess/media/RemoteAudioHardwareListenerProxy.cpp (rev 0)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteAudioHardwareListenerProxy.cpp 2021-02-11 07:24:24 UTC (rev 272709)
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2021 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 "RemoteAudioHardwareListenerProxy.h"
+
+#if ENABLE(GPU_PROCESS)
+
+#include "GPUConnectionToWebProcess.h"
+#include "RemoteAudioHardwareListenerMessages.h"
+
+namespace WebKit {
+
+RemoteAudioHardwareListenerProxy::RemoteAudioHardwareListenerProxy(GPUConnectionToWebProcess& gpuConnection, RemoteAudioHardwareListenerIdentifier&& identifier)
+ : m_gpuConnection(gpuConnection)
+ , m_identifier(WTFMove(identifier))
+ , m_listener(WebCore::AudioHardwareListener::create(*this))
+{
+}
+
+RemoteAudioHardwareListenerProxy::~RemoteAudioHardwareListenerProxy() = default;
+
+void RemoteAudioHardwareListenerProxy::audioHardwareDidBecomeActive()
+{
+ m_gpuConnection.connection().send(Messages::RemoteAudioHardwareListener::AudioHardwareDidBecomeActive(), m_identifier);
+}
+
+void RemoteAudioHardwareListenerProxy::audioHardwareDidBecomeInactive()
+{
+ m_gpuConnection.connection().send(Messages::RemoteAudioHardwareListener::AudioHardwareDidBecomeInactive(), m_identifier);
+}
+
+void RemoteAudioHardwareListenerProxy::audioOutputDeviceChanged()
+{
+ auto supportedBufferSizes = m_listener->supportedBufferSizes();
+ m_gpuConnection.connection().send(Messages::RemoteAudioHardwareListener::AudioOutputDeviceChanged(supportedBufferSizes.minimum, supportedBufferSizes.maximum), m_identifier);
+}
+
+}
+
+#endif
Copied: trunk/Source/WebKit/GPUProcess/media/RemoteAudioHardwareListenerProxy.h (from rev 272708, trunk/Source/WebCore/platform/audio/AudioHardwareListener.cpp) (0 => 272709)
--- trunk/Source/WebKit/GPUProcess/media/RemoteAudioHardwareListenerProxy.h (rev 0)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteAudioHardwareListenerProxy.h 2021-02-11 07:24:24 UTC (rev 272709)
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2021 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.
+ */
+
+#pragma once
+
+#if ENABLE(GPU_PROCESS)
+
+#include "MessageReceiver.h"
+#include "RemoteAudioHardwareListenerIdentifier.h"
+#include <WebCore/AudioHardwareListener.h>
+#include <wtf/UniqueRef.h>
+
+namespace IPC {
+class Connection;
+}
+
+namespace WebKit {
+
+class GPUConnectionToWebProcess;
+
+class RemoteAudioHardwareListenerProxy final : private WebCore::AudioHardwareListener::Client {
+ WTF_MAKE_FAST_ALLOCATED;
+public:
+ RemoteAudioHardwareListenerProxy(GPUConnectionToWebProcess&, RemoteAudioHardwareListenerIdentifier&&);
+ virtual ~RemoteAudioHardwareListenerProxy();
+
+private:
+ // AudioHardwareListener::Client
+ void audioHardwareDidBecomeActive() final;
+ void audioHardwareDidBecomeInactive() final;
+ void audioOutputDeviceChanged() final;
+
+ GPUConnectionToWebProcess& m_gpuConnection;
+ RemoteAudioHardwareListenerIdentifier m_identifier;
+ Ref<WebCore::AudioHardwareListener> m_listener;
+};
+
+}
+
+#endif
Modified: trunk/Source/WebKit/GPUProcess/media/RemoteLegacyCDMFactoryProxy.cpp (272708 => 272709)
--- trunk/Source/WebKit/GPUProcess/media/RemoteLegacyCDMFactoryProxy.cpp 2021-02-11 06:26:32 UTC (rev 272708)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteLegacyCDMFactoryProxy.cpp 2021-02-11 07:24:24 UTC (rev 272709)
@@ -28,6 +28,7 @@
#if ENABLE(GPU_PROCESS) && ENABLE(LEGACY_ENCRYPTED_MEDIA)
+#include "GPUConnectionToWebProcess.h"
#include "RemoteLegacyCDMProxy.h"
#include "RemoteLegacyCDMProxyMessages.h"
#include "RemoteLegacyCDMSessionProxy.h"
Modified: trunk/Source/WebKit/Scripts/webkit/messages.py (272708 => 272709)
--- trunk/Source/WebKit/Scripts/webkit/messages.py 2021-02-11 06:26:32 UTC (rev 272708)
+++ trunk/Source/WebKit/Scripts/webkit/messages.py 2021-02-11 07:24:24 UTC (rev 272709)
@@ -308,6 +308,7 @@
'WebKit::PDFPluginIdentifier',
'WebKit::PlaybackSessionContextIdentifier',
'WebKit::RemoteAudioDestinationIdentifier',
+ 'WebKit::RemoteAudioHardwareListenerIdentifier',
'WebKit::RemoteAudioSessionIdentifier',
'WebKit::RemoteCDMIdentifier',
'WebKit::RemoteCDMInstanceIdentifier',
Modified: trunk/Source/WebKit/Sources.txt (272708 => 272709)
--- trunk/Source/WebKit/Sources.txt 2021-02-11 06:26:32 UTC (rev 272708)
+++ trunk/Source/WebKit/Sources.txt 2021-02-11 07:24:24 UTC (rev 272709)
@@ -28,6 +28,7 @@
GPUProcess/graphics/RemoteRenderingBackend.cpp
GPUProcess/graphics/RemoteGraphicsContextGL.cpp
GPUProcess/graphics/RemoteResourceCache.cpp
+GPUProcess/media/RemoteAudioHardwareListenerProxy.cpp
GPUProcess/media/RemoteAudioSessionProxy.cpp
GPUProcess/media/RemoteAudioSessionProxyManager.cpp
GPUProcess/media/RemoteAudioTrackProxy.cpp
@@ -585,6 +586,7 @@
WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp
WebProcess/GPU/media/MediaSourcePrivateRemote.cpp
WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp
+WebProcess/GPU/media/RemoteAudioHardwareListener.cpp
WebProcess/GPU/media/RemoteAudioSession.cpp
WebProcess/GPU/media/RemoteCDM.cpp
WebProcess/GPU/media/RemoteCDMFactory.cpp
Modified: trunk/Source/WebKit/SourcesCocoa.txt (272708 => 272709)
--- trunk/Source/WebKit/SourcesCocoa.txt 2021-02-11 06:26:32 UTC (rev 272708)
+++ trunk/Source/WebKit/SourcesCocoa.txt 2021-02-11 07:24:24 UTC (rev 272709)
@@ -694,6 +694,7 @@
MessageArgumentDescriptions.cpp @no-unify
MessageNames.cpp
RemoteAudioDestinationManagerMessageReceiver.cpp
+RemoteAudioHardwareListenerMessageReceiver.cpp
RemoteAudioSessionMessageReceiver.cpp
RemoteAudioSessionProxyMessageReceiver.cpp
RemoteAudioMediaStreamTrackRendererManagerMessageReceiver.cpp
Modified: trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj (272708 => 272709)
--- trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2021-02-11 06:26:32 UTC (rev 272708)
+++ trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2021-02-11 07:24:24 UTC (rev 272709)
@@ -5490,6 +5490,15 @@
CD19A26A1A13E821008D650E /* WebDiagnosticLoggingClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDiagnosticLoggingClient.h; sourceTree = "<group>"; };
CD19D2E82046406F0017074A /* FullscreenTouchSecheuristic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FullscreenTouchSecheuristic.h; path = ios/fullscreen/FullscreenTouchSecheuristic.h; sourceTree = "<group>"; };
CD19D2E92046406F0017074A /* FullscreenTouchSecheuristic.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FullscreenTouchSecheuristic.cpp; path = ios/fullscreen/FullscreenTouchSecheuristic.cpp; sourceTree = "<group>"; };
+ CD20CE6E25CC90510069B542 /* RemoteAudioHardwareListener.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteAudioHardwareListener.h; sourceTree = "<group>"; };
+ CD20CE6F25CC90510069B542 /* RemoteAudioHardwareListener.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteAudioHardwareListener.cpp; sourceTree = "<group>"; };
+ CD20CE7125CC92E80069B542 /* RemoteAudioHardwareListener.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = RemoteAudioHardwareListener.messages.in; sourceTree = "<group>"; };
+ CD20CE7325CC96500069B542 /* RemoteAudioHardwareListenerIdentifier.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteAudioHardwareListenerIdentifier.h; sourceTree = "<group>"; };
+ CD20CE7425CC999F0069B542 /* RemoteAudioHardwareListenerProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteAudioHardwareListenerProxy.h; sourceTree = "<group>"; };
+ CD20CE7525CC999F0069B542 /* RemoteAudioHardwareListenerProxy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteAudioHardwareListenerProxy.cpp; sourceTree = "<group>"; };
+ CD20CE7725CD2B9D0069B542 /* RemoteAudioHardwareListenerMessageReceiver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteAudioHardwareListenerMessageReceiver.cpp; sourceTree = "<group>"; };
+ CD20CE7825CD2B9D0069B542 /* RemoteAudioHardwareListenerMessagesReplies.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteAudioHardwareListenerMessagesReplies.h; sourceTree = "<group>"; };
+ CD20CE7925CD2B9E0069B542 /* RemoteAudioHardwareListenerMessages.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteAudioHardwareListenerMessages.h; sourceTree = "<group>"; };
CD3EEF3125799618006563BB /* RemoteMediaEngineConfigurationFactory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteMediaEngineConfigurationFactory.h; sourceTree = "<group>"; };
CD3EEF3225799618006563BB /* RemoteMediaEngineConfigurationFactory.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteMediaEngineConfigurationFactory.cpp; sourceTree = "<group>"; };
CD3EEF3325799717006563BB /* RemoteMediaEngineConfigurationFactoryProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteMediaEngineConfigurationFactoryProxy.h; sourceTree = "<group>"; };
@@ -5967,6 +5976,10 @@
1DF29018257F202F003C28AF /* MediaSourcePrivateRemote.messages.in */,
9B5BEC29240101580070C6EF /* RemoteAudioDestinationProxy.cpp */,
9B5BEC28240101580070C6EF /* RemoteAudioDestinationProxy.h */,
+ CD20CE6F25CC90510069B542 /* RemoteAudioHardwareListener.cpp */,
+ CD20CE6E25CC90510069B542 /* RemoteAudioHardwareListener.h */,
+ CD20CE7125CC92E80069B542 /* RemoteAudioHardwareListener.messages.in */,
+ CD20CE7325CC96500069B542 /* RemoteAudioHardwareListenerIdentifier.h */,
CDBB49F5240D8AC60017C292 /* RemoteAudioSession.cpp */,
CDBB49F4240D8AC60017C292 /* RemoteAudioSession.h */,
CDD5356F240DD34300F7B8C4 /* RemoteAudioSession.messages.in */,
@@ -6040,6 +6053,8 @@
9B1229CC23FF25F2008CA751 /* RemoteAudioDestinationManager.cpp */,
9B1229CB23FF25F2008CA751 /* RemoteAudioDestinationManager.h */,
9B1229CF23FF2814008CA751 /* RemoteAudioDestinationManager.messages.in */,
+ CD20CE7525CC999F0069B542 /* RemoteAudioHardwareListenerProxy.cpp */,
+ CD20CE7425CC999F0069B542 /* RemoteAudioHardwareListenerProxy.h */,
CDBB49F7240D8C950017C292 /* RemoteAudioSessionProxy.cpp */,
CDBB49F6240D8C950017C292 /* RemoteAudioSessionProxy.h */,
CDBB49F8240D8D530017C292 /* RemoteAudioSessionProxy.messages.in */,
@@ -10809,6 +10824,9 @@
1A043B5C124D5E9D00FFBFB5 /* PluginProcessProxyMessages.h */,
1A8EFA6E1252B84100F7067F /* PluginProxyMessageReceiver.cpp */,
1A8EFA6F1252B84100F7067F /* PluginProxyMessages.h */,
+ CD20CE7725CD2B9D0069B542 /* RemoteAudioHardwareListenerMessageReceiver.cpp */,
+ CD20CE7925CD2B9E0069B542 /* RemoteAudioHardwareListenerMessages.h */,
+ CD20CE7825CD2B9D0069B542 /* RemoteAudioHardwareListenerMessagesReplies.h */,
CDD53576240DDE0700F7B8C4 /* RemoteAudioSessionMessageReceiver.cpp */,
CDD53575240DDE0700F7B8C4 /* RemoteAudioSessionMessages.h */,
CDD53574240DDE0700F7B8C4 /* RemoteAudioSessionMessagesReplies.h */,
Added: trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioHardwareListener.cpp (0 => 272709)
--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioHardwareListener.cpp (rev 0)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioHardwareListener.cpp 2021-02-11 07:24:24 UTC (rev 272709)
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2021 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 "RemoteAudioHardwareListener.h"
+
+#if ENABLE(GPU_PROCESS)
+
+#include "GPUConnectionToWebProcessMessages.h"
+#include "GPUProcessProxy.h"
+#include "RemoteAudioHardwareListenerMessages.h"
+#include "WebProcess.h"
+
+namespace WebKit {
+
+using namespace WebCore;
+
+Ref<RemoteAudioHardwareListener> RemoteAudioHardwareListener::create(AudioHardwareListener::Client& client, WebProcess& webProcess)
+{
+ return adoptRef(*new RemoteAudioHardwareListener(client, webProcess));
+}
+
+RemoteAudioHardwareListener::RemoteAudioHardwareListener(AudioHardwareListener::Client& client, WebProcess& webProcess)
+ : AudioHardwareListener(client)
+ , m_process(webProcess)
+ , m_identifier(RemoteAudioHardwareListenerIdentifier::generate())
+{
+ auto& connection = WebProcess::singleton().ensureGPUProcessConnection();
+ connection.addClient(*this);
+ connection.messageReceiverMap().addMessageReceiver(Messages::RemoteAudioHardwareListener::messageReceiverName(), m_identifier.toUInt64(), *this);
+ connection.connection().send(Messages::GPUConnectionToWebProcess::CreateAudioHardwareListener(m_identifier), { });
+}
+
+RemoteAudioHardwareListener::~RemoteAudioHardwareListener()
+{
+ auto& connection = WebProcess::singleton().ensureGPUProcessConnection();
+ connection.messageReceiverMap().removeMessageReceiver(*this);
+ connection.connection().send(Messages::GPUConnectionToWebProcess::ReleaseAudioHardwareListener(m_identifier), 0);
+}
+
+void RemoteAudioHardwareListener::gpuProcessConnectionDidClose(GPUProcessConnection&)
+{
+ audioHardwareDidBecomeInactive();
+}
+
+void RemoteAudioHardwareListener::audioHardwareDidBecomeActive()
+{
+ setHardwareActivity(AudioHardwareActivityType::IsActive);
+ m_client.audioHardwareDidBecomeActive();
+}
+
+void RemoteAudioHardwareListener::audioHardwareDidBecomeInactive()
+{
+ setHardwareActivity(AudioHardwareActivityType::IsInactive);
+ m_client.audioHardwareDidBecomeInactive();
+}
+
+void RemoteAudioHardwareListener::audioOutputDeviceChanged(size_t bufferSizeMinimum, size_t bufferSizeMaximum)
+{
+ setSupportedBufferSizes({ bufferSizeMinimum, bufferSizeMaximum });
+ m_client.audioOutputDeviceChanged();
+}
+
+}
+
+#endif
Copied: trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioHardwareListener.h (from rev 272708, trunk/Source/WebCore/platform/audio/AudioHardwareListener.cpp) (0 => 272709)
--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioHardwareListener.h (rev 0)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioHardwareListener.h 2021-02-11 07:24:24 UTC (rev 272709)
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2021 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.
+ */
+
+#pragma once
+
+#if ENABLE(GPU_PROCESS)
+
+#include "GPUProcessConnection.h"
+#include "MessageReceiver.h"
+#include "RemoteAudioHardwareListenerIdentifier.h"
+#include <WebCore/AudioHardwareListener.h>
+
+namespace IPC {
+class Connection;
+}
+
+namespace WebKit {
+
+class GPUProcessConnection;
+class WebProcess;
+
+class RemoteAudioHardwareListener final
+ : public WebCore::AudioHardwareListener
+ , private GPUProcessConnection::Client
+ , private IPC::MessageReceiver {
+ WTF_MAKE_FAST_ALLOCATED;
+public:
+ static Ref<RemoteAudioHardwareListener> create(WebCore::AudioHardwareListener::Client&, WebProcess&);
+ ~RemoteAudioHardwareListener();
+
+private:
+ RemoteAudioHardwareListener(WebCore::AudioHardwareListener::Client&, WebProcess&);
+
+ // IPC::MessageReceiver
+ void didReceiveMessage(IPC::Connection&, IPC::Decoder&) final;
+
+ // GPUProcessConnection::Client
+ void gpuProcessConnectionDidClose(GPUProcessConnection&) final;
+
+ // Messages
+ void audioHardwareDidBecomeActive();
+ void audioHardwareDidBecomeInactive();
+ void audioOutputDeviceChanged(size_t bufferSizeMinimum, size_t bufferSizeMaximum);
+
+ WebProcess& m_process;
+ RemoteAudioHardwareListenerIdentifier m_identifier;
+};
+
+}
+
+#endif
Copied: trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioHardwareListener.messages.in (from rev 272708, trunk/Source/WebCore/platform/audio/AudioHardwareListener.cpp) (0 => 272709)
--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioHardwareListener.messages.in (rev 0)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioHardwareListener.messages.in 2021-02-11 07:24:24 UTC (rev 272709)
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2021 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.
+ */
+
+#if ENABLE(GPU_PROCESS)
+
+messages -> RemoteAudioHardwareListener {
+ AudioHardwareDidBecomeActive()
+ AudioHardwareDidBecomeInactive()
+ AudioOutputDeviceChanged(uint64_t bufferSizeMinimum, uint64_t bufferSizeMaximum)
+}
+
+#endif
Copied: trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioHardwareListenerIdentifier.h (from rev 272708, trunk/Source/WebCore/platform/audio/AudioHardwareListener.cpp) (0 => 272709)
--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioHardwareListenerIdentifier.h (rev 0)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioHardwareListenerIdentifier.h 2021-02-11 07:24:24 UTC (rev 272709)
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 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.
+ */
+
+#pragma once
+
+#if ENABLE(GPU_PROCESS)
+
+#include <wtf/ObjectIdentifier.h>
+
+namespace WebKit {
+
+enum RemoteAudioHardwareListenerIdentifierType { };
+using RemoteAudioHardwareListenerIdentifier = ObjectIdentifier<RemoteAudioHardwareListenerIdentifierType>;
+
+} // namespace WebKit
+
+#endif
Modified: trunk/Source/WebKit/WebProcess/WebProcess.cpp (272708 => 272709)
--- trunk/Source/WebKit/WebProcess/WebProcess.cpp 2021-02-11 06:26:32 UTC (rev 272708)
+++ trunk/Source/WebKit/WebProcess/WebProcess.cpp 2021-02-11 07:24:24 UTC (rev 272709)
@@ -43,6 +43,7 @@
#include "NetworkSessionCreationParameters.h"
#include "PluginProcessConnectionManager.h"
#include "ProcessAssertion.h"
+#include "RemoteAudioHardwareListener.h"
#include "RemoteAudioSession.h"
#include "RemoteLegacyCDMFactory.h"
#include "RemoteMediaEngineConfigurationFactory.h"
@@ -1952,6 +1953,11 @@
ensureGPUProcessConnection().mediaEngineConfigurationFactory().registerFactory();
else
MediaEngineConfigurationFactory::resetFactories();
+
+ if (useGPUProcessForMedia)
+ WebCore::AudioHardwareListener::setCreationFunction([this] (WebCore::AudioHardwareListener::Client& client) { return RemoteAudioHardwareListener::create(client, *this); });
+ else
+ WebCore::AudioHardwareListener::resetCreationFunction();
}
bool WebProcess::shouldUseRemoteRenderingFor(RenderingPurpose purpose)