Title: [280936] trunk/Source/WebKit
- Revision
- 280936
- Author
- [email protected]
- Date
- 2021-08-11 15:54:12 -0700 (Wed, 11 Aug 2021)
Log Message
[BigSur] TestWebKitAPI.AudioRoutingArbitration.Updating fails after r280726
https://bugs.webkit.org/show_bug.cgi?id=228966
Reviewed by Eric Carlson.
Add an IPC message `RemoteAudioSessionProxy::SetIsPlayingToBluetoothOverride`
for testing purpose, so that the test `AudioRoutingArbitration.Updating` will
work as expected when "Media in GPU Process" is enabled.
No new tests. Fix an API test failure.
* GPUProcess/media/RemoteAudioSessionProxy.cpp:
(WebKit::RemoteAudioSessionProxy::setCategory):
(WebKit::RemoteAudioSessionProxy::setIsPlayingToBluetoothOverride):
* GPUProcess/media/RemoteAudioSessionProxy.h:
* GPUProcess/media/RemoteAudioSessionProxy.messages.in:
* WebProcess/GPU/media/RemoteAudioSession.cpp:
(WebKit::RemoteAudioSession::setCategory):
(WebKit::RemoteAudioSession::setIsPlayingToBluetoothOverride):
* WebProcess/GPU/media/RemoteAudioSession.h:
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (280935 => 280936)
--- trunk/Source/WebKit/ChangeLog 2021-08-11 22:33:17 UTC (rev 280935)
+++ trunk/Source/WebKit/ChangeLog 2021-08-11 22:54:12 UTC (rev 280936)
@@ -1,3 +1,26 @@
+2021-08-11 Peng Liu <[email protected]>
+
+ [BigSur] TestWebKitAPI.AudioRoutingArbitration.Updating fails after r280726
+ https://bugs.webkit.org/show_bug.cgi?id=228966
+
+ Reviewed by Eric Carlson.
+
+ Add an IPC message `RemoteAudioSessionProxy::SetIsPlayingToBluetoothOverride`
+ for testing purpose, so that the test `AudioRoutingArbitration.Updating` will
+ work as expected when "Media in GPU Process" is enabled.
+
+ No new tests. Fix an API test failure.
+
+ * GPUProcess/media/RemoteAudioSessionProxy.cpp:
+ (WebKit::RemoteAudioSessionProxy::setCategory):
+ (WebKit::RemoteAudioSessionProxy::setIsPlayingToBluetoothOverride):
+ * GPUProcess/media/RemoteAudioSessionProxy.h:
+ * GPUProcess/media/RemoteAudioSessionProxy.messages.in:
+ * WebProcess/GPU/media/RemoteAudioSession.cpp:
+ (WebKit::RemoteAudioSession::setCategory):
+ (WebKit::RemoteAudioSession::setIsPlayingToBluetoothOverride):
+ * WebProcess/GPU/media/RemoteAudioSession.h:
+
2021-08-11 David Kilzer <[email protected]>
ThreadSanitizer: data race in WTF::StringImpl::deref() under WebKit::NetworkCache::IOChannel::~IOChannel()
Modified: trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.cpp (280935 => 280936)
--- trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.cpp 2021-08-11 22:33:17 UTC (rev 280935)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.cpp 2021-08-11 22:54:12 UTC (rev 280936)
@@ -73,11 +73,12 @@
void RemoteAudioSessionProxy::setCategory(AudioSession::CategoryType category, RouteSharingPolicy policy)
{
- if (m_category == category && m_routeSharingPolicy == policy)
+ if (m_category == category && m_routeSharingPolicy == policy && !m_isPlayingToBluetoothOverrideChanged)
return;
m_category = category;
m_routeSharingPolicy = policy;
+ m_isPlayingToBluetoothOverrideChanged = false;
audioSessionManager().updateCategory();
}
@@ -93,6 +94,12 @@
completion(m_active);
}
+void RemoteAudioSessionProxy::setIsPlayingToBluetoothOverride(std::optional<bool>&& value)
+{
+ m_isPlayingToBluetoothOverrideChanged = true;
+ audioSessionManager().session().setIsPlayingToBluetoothOverride(WTFMove(value));
+}
+
void RemoteAudioSessionProxy::configurationChanged()
{
connection().send(Messages::RemoteAudioSession::ConfigurationChanged(configuration()), { });
Modified: trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.h (280935 => 280936)
--- trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.h 2021-08-11 22:33:17 UTC (rev 280935)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.h 2021-08-11 22:54:12 UTC (rev 280936)
@@ -74,6 +74,7 @@
void setPreferredBufferSize(uint64_t);
using SetActiveCompletion = CompletionHandler<void(bool)>;
void tryToSetActive(bool, SetActiveCompletion&&);
+ void setIsPlayingToBluetoothOverride(std::optional<bool>&& value);
RemoteAudioSessionProxyManager& audioSessionManager();
IPC::Connection& connection();
@@ -83,6 +84,7 @@
WebCore::RouteSharingPolicy m_routeSharingPolicy { WebCore::RouteSharingPolicy::Default };
size_t m_preferredBufferSize { 0 };
bool m_active { false };
+ bool m_isPlayingToBluetoothOverrideChanged { false };
};
}
Modified: trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.messages.in (280935 => 280936)
--- trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.messages.in 2021-08-11 22:33:17 UTC (rev 280935)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.messages.in 2021-08-11 22:54:12 UTC (rev 280936)
@@ -29,6 +29,7 @@
SetCategory(enum:uint8_t WebCore::AudioSession::CategoryType type, enum:uint8_t WebCore::RouteSharingPolicy policy)
SetPreferredBufferSize(uint64_t preferredBufferSize)
TryToSetActive(bool active) -> (bool suceeded) Synchronous
+ SetIsPlayingToBluetoothOverride(std::optional<bool> value)
}
#endif
Modified: trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.cpp (280935 => 280936)
--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.cpp 2021-08-11 22:33:17 UTC (rev 280935)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.cpp 2021-08-11 22:54:12 UTC (rev 280936)
@@ -94,11 +94,12 @@
void RemoteAudioSession::setCategory(CategoryType type, RouteSharingPolicy policy)
{
#if PLATFORM(COCOA)
- if (type == m_category && policy == m_routeSharingPolicy)
+ if (type == m_category && policy == m_routeSharingPolicy && !m_isPlayingToBluetoothOverrideChanged)
return;
m_category = type;
m_routeSharingPolicy = policy;
+ m_isPlayingToBluetoothOverrideChanged = false;
ensureConnection().send(Messages::RemoteAudioSessionProxy::SetCategory(type, policy), { });
#else
@@ -132,6 +133,14 @@
m_configurationChangeObservers.remove(observer);
}
+#if ENABLE(ROUTING_ARBITRATION)
+void RemoteAudioSession::setIsPlayingToBluetoothOverride(std::optional<bool> value)
+{
+ m_isPlayingToBluetoothOverrideChanged = true;
+ ensureConnection().send(Messages::RemoteAudioSessionProxy::SetIsPlayingToBluetoothOverride(value), { });
+}
+#endif
+
AudioSession::CategoryType RemoteAudioSession::category() const
{
#if PLATFORM(COCOA)
Modified: trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.h (280935 => 280936)
--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.h 2021-08-11 22:33:17 UTC (rev 280935)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.h 2021-08-11 22:54:12 UTC (rev 280936)
@@ -71,6 +71,10 @@
void addConfigurationChangeObserver(ConfigurationChangeObserver&);
void removeConfigurationChangeObserver(ConfigurationChangeObserver&);
+#if ENABLE(ROUTING_ARBITRATION)
+ void setIsPlayingToBluetoothOverride(std::optional<bool>) final;
+#endif
+
const RemoteAudioSessionConfiguration& configuration() const;
RemoteAudioSessionConfiguration& configuration();
void initializeConfigurationIfNecessary();
@@ -91,6 +95,7 @@
WeakHashSet<ConfigurationChangeObserver> m_configurationChangeObservers;
CategoryType m_category { CategoryType::None };
WebCore::RouteSharingPolicy m_routeSharingPolicy { WebCore::RouteSharingPolicy::Default };
+ bool m_isPlayingToBluetoothOverrideChanged { false };
std::optional<RemoteAudioSessionConfiguration> m_configuration;
WeakPtr<GPUProcessConnection> m_gpuProcessConnection;
};
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes