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

Reply via email to