Title: [281597] trunk/Source
Revision
281597
Author
[email protected]
Date
2021-08-25 16:07:06 -0700 (Wed, 25 Aug 2021)

Log Message

[GPUP] RemoteAudioSession doesn't implement begin/endInterruption
https://bugs.webkit.org/show_bug.cgi?id=229514
rdar://80896732

Reviewed by Jer Noble.

Source/WebCore:

Move the code necessary to deal with interruptions from AudioSessionIOS to the
base class so it can be shared with RemoteAudioSession.

Tested manually.

* platform/audio/AudioSession.cpp:
(WebCore::AudioSession::addInterruptionObserver): Move implementation from AudioSessionIOS
so it can be shared.
(WebCore::AudioSession::removeInterruptionObserver): Ditto.
(WebCore::AudioSession::beginInterruption): Ditto.
(WebCore::AudioSession::endInterruption): Ditto.
(WebCore::AudioSession::setCategoryOverride): Ditto.
(WebCore::AudioSession::categoryOverride const): Ditto.
* platform/audio/AudioSession.h:

* platform/audio/ios/AudioSessionIOS.h:
* platform/audio/ios/AudioSessionIOS.mm:
(WebCore::AudioSessionIOS::setCategoryOverride): Deleted.
(WebCore::AudioSessionIOS::categoryOverride const): Deleted.
(WebCore::AudioSessionIOS::addInterruptionObserver): Deleted.
(WebCore::AudioSessionIOS::removeInterruptionObserver): Deleted.
(WebCore::AudioSessionIOS::beginInterruption): Deleted.
(WebCore::AudioSessionIOS::endInterruption): Deleted.
* platform/audio/mac/AudioSessionMac.h:
* platform/audio/mac/AudioSessionMac.mm:
(WebCore::AudioSessionMac::setCategoryOverride): Deleted.

Source/WebKit:

* WebProcess/GPU/media/RemoteAudioSession.cpp:
(WebKit::RemoteAudioSession::setIsPlayingToBluetoothOverride): Remove
ENABLE_ROUTING_ARBITRATION guard because it isn't used in the base class.
* WebProcess/GPU/media/RemoteAudioSession.h: Change the order virtual methods are declared
so they match the base class, to make it easier to spot differences.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (281596 => 281597)


--- trunk/Source/WebCore/ChangeLog	2021-08-25 22:52:42 UTC (rev 281596)
+++ trunk/Source/WebCore/ChangeLog	2021-08-25 23:07:06 UTC (rev 281597)
@@ -1,3 +1,38 @@
+2021-08-25  Eric Carlson  <[email protected]>
+
+        [GPUP] RemoteAudioSession doesn't implement begin/endInterruption
+        https://bugs.webkit.org/show_bug.cgi?id=229514
+        rdar://80896732
+
+        Reviewed by Jer Noble.
+
+        Move the code necessary to deal with interruptions from AudioSessionIOS to the
+        base class so it can be shared with RemoteAudioSession.
+
+        Tested manually.
+
+        * platform/audio/AudioSession.cpp:
+        (WebCore::AudioSession::addInterruptionObserver): Move implementation from AudioSessionIOS
+        so it can be shared.
+        (WebCore::AudioSession::removeInterruptionObserver): Ditto.
+        (WebCore::AudioSession::beginInterruption): Ditto.
+        (WebCore::AudioSession::endInterruption): Ditto.
+        (WebCore::AudioSession::setCategoryOverride): Ditto.
+        (WebCore::AudioSession::categoryOverride const): Ditto.
+        * platform/audio/AudioSession.h:
+
+        * platform/audio/ios/AudioSessionIOS.h:
+        * platform/audio/ios/AudioSessionIOS.mm:
+        (WebCore::AudioSessionIOS::setCategoryOverride): Deleted.
+        (WebCore::AudioSessionIOS::categoryOverride const): Deleted.
+        (WebCore::AudioSessionIOS::addInterruptionObserver): Deleted.
+        (WebCore::AudioSessionIOS::removeInterruptionObserver): Deleted.
+        (WebCore::AudioSessionIOS::beginInterruption): Deleted.
+        (WebCore::AudioSessionIOS::endInterruption): Deleted.
+        * platform/audio/mac/AudioSessionMac.h:
+        * platform/audio/mac/AudioSessionMac.mm:
+        (WebCore::AudioSessionMac::setCategoryOverride): Deleted.
+
 2021-08-25  Alan Bujtas  <[email protected]>
 
         [LFC][IFC] Line spanning inline boxes should also be in the run list

Modified: trunk/Source/WebCore/platform/audio/AudioSession.cpp (281596 => 281597)


--- trunk/Source/WebCore/platform/audio/AudioSession.cpp	2021-08-25 22:52:42 UTC (rev 281596)
+++ trunk/Source/WebCore/platform/audio/AudioSession.cpp	2021-08-25 23:07:06 UTC (rev 281597)
@@ -103,24 +103,26 @@
     return true;
 }
 
-void AudioSession::addInterruptionObserver(InterruptionObserver&)
+void AudioSession::addInterruptionObserver(InterruptionObserver& observer)
 {
-    notImplemented();
+    m_interruptionObservers.add(observer);
 }
 
-void AudioSession::removeInterruptionObserver(InterruptionObserver&)
+void AudioSession::removeInterruptionObserver(InterruptionObserver& observer)
 {
-    notImplemented();
+    m_interruptionObservers.remove(observer);
 }
 
 void AudioSession::beginInterruption()
 {
-    notImplemented();
+    for (auto& observer : m_interruptionObservers)
+        observer.beginAudioSessionInterruption();
 }
 
-void AudioSession::endInterruption(MayResume)
+void AudioSession::endInterruption(MayResume mayResume)
 {
-    notImplemented();
+    for (auto& observer : m_interruptionObservers)
+        observer.endAudioSessionInterruption(mayResume);
 }
 
 void AudioSession::setCategory(CategoryType, RouteSharingPolicy)
@@ -128,15 +130,18 @@
     notImplemented();
 }
 
-AudioSession::CategoryType AudioSession::categoryOverride() const
+void AudioSession::setCategoryOverride(CategoryType category)
 {
-    notImplemented();
-    return AudioSession::CategoryType::None;
+    if (m_categoryOverride == category)
+        return;
+
+    m_categoryOverride = category;
+    setCategory(category, RouteSharingPolicy::Default);
 }
 
-void AudioSession::setCategoryOverride(CategoryType)
+AudioSession::CategoryType AudioSession::categoryOverride() const
 {
-    notImplemented();
+    return m_categoryOverride;
 }
 
 AudioSession::CategoryType AudioSession::category() const

Modified: trunk/Source/WebCore/platform/audio/AudioSession.h (281596 => 281597)


--- trunk/Source/WebCore/platform/audio/AudioSession.h	2021-08-25 22:52:42 UTC (rev 281596)
+++ trunk/Source/WebCore/platform/audio/AudioSession.h	2021-08-25 23:07:06 UTC (rev 281597)
@@ -136,7 +136,10 @@
 
     virtual bool tryToSetActiveInternal(bool);
 
+    WeakHashSet<InterruptionObserver> m_interruptionObservers;
+
     WeakPtr<AudioSessionRoutingArbitrationClient> m_routingArbitrationClient;
+    AudioSession::CategoryType m_categoryOverride { AudioSession::CategoryType::None };
     bool m_active { false }; // Used only for testing.
 
     static bool s_shouldManageAudioSessionCategory;

Modified: trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.h (281596 => 281597)


--- trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.h	2021-08-25 22:52:42 UTC (rev 281596)
+++ trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.h	2021-08-25 23:07:06 UTC (rev 281597)
@@ -46,8 +46,6 @@
     // AudioSession
     CategoryType category() const final;
     void setCategory(CategoryType, RouteSharingPolicy) final;
-    AudioSession::CategoryType categoryOverride() const final;
-    void setCategoryOverride(CategoryType) final;
     float sampleRate() const final;
     size_t bufferSize() const final;
     size_t numberOfOutputChannels() const final;
@@ -59,14 +57,8 @@
     void setPreferredBufferSize(size_t) final;
     bool isMuted() const final;
     void handleMutedStateChange() final;
-    void addInterruptionObserver(InterruptionObserver&) final;
-    void removeInterruptionObserver(InterruptionObserver&) final;
-    void beginInterruption() final;
-    void endInterruption(MayResume) final;
 
-    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/ios/AudioSessionIOS.mm (281596 => 281597)


--- trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.mm	2021-08-25 22:52:42 UTC (rev 281596)
+++ trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.mm	2021-08-25 23:07:06 UTC (rev 281597)
@@ -232,20 +232,6 @@
 #endif
 }
 
-void AudioSessionIOS::setCategoryOverride(CategoryType category)
-{
-    if (m_categoryOverride == category)
-        return;
-
-    m_categoryOverride = category;
-    setCategory(category, RouteSharingPolicy::Default);
-}
-
-AudioSession::CategoryType AudioSessionIOS::categoryOverride() const
-{
-    return m_categoryOverride;
-}
-
 float AudioSessionIOS::sampleRate() const
 {
     return [[PAL::getAVAudioSessionClass() sharedInstance] sampleRate];
@@ -314,28 +300,6 @@
 {
 }
 
-void AudioSessionIOS::addInterruptionObserver(InterruptionObserver& observer)
-{
-    m_interruptionObservers.add(observer);
 }
 
-void AudioSessionIOS::removeInterruptionObserver(InterruptionObserver& observer)
-{
-    m_interruptionObservers.remove(observer);
-}
-
-void AudioSessionIOS::beginInterruption()
-{
-    for (auto& observer : m_interruptionObservers)
-        observer.beginAudioSessionInterruption();
-}
-
-void AudioSessionIOS::endInterruption(MayResume mayResume)
-{
-    for (auto& observer : m_interruptionObservers)
-        observer.endAudioSessionInterruption(mayResume);
-}
-
-}
-
 #endif // USE(AUDIO_SESSION) && PLATFORM(IOS_FAMILY)

Modified: trunk/Source/WebCore/platform/audio/mac/AudioSessionMac.h (281596 => 281597)


--- trunk/Source/WebCore/platform/audio/mac/AudioSessionMac.h	2021-08-25 22:52:42 UTC (rev 281596)
+++ trunk/Source/WebCore/platform/audio/mac/AudioSessionMac.h	2021-08-25 23:07:06 UTC (rev 281597)
@@ -53,8 +53,6 @@
     void audioOutputDeviceChanged() final;
     void setIsPlayingToBluetoothOverride(std::optional<bool>) final;
     void setCategory(CategoryType, RouteSharingPolicy) final;
-    AudioSession::CategoryType categoryOverride() const final { return m_categoryOverride; }
-    void setCategoryOverride(CategoryType) final;
     float sampleRate() const final;
     size_t bufferSize() const final;
     size_t numberOfOutputChannels() const final;
@@ -78,7 +76,6 @@
     std::optional<bool> m_playingToBluetooth;
     std::optional<bool> m_playingToBluetoothOverride;
 #endif
-    AudioSession::CategoryType m_categoryOverride { AudioSession::CategoryType::None };
     mutable bool m_hasSampleRateObserver { false };
     mutable bool m_hasBufferSizeObserver { false };
     mutable std::optional<double> m_sampleRate;

Modified: trunk/Source/WebCore/platform/audio/mac/AudioSessionMac.mm (281596 => 281597)


--- trunk/Source/WebCore/platform/audio/mac/AudioSessionMac.mm	2021-08-25 22:52:42 UTC (rev 281596)
+++ trunk/Source/WebCore/platform/audio/mac/AudioSessionMac.mm	2021-08-25 23:07:06 UTC (rev 281597)
@@ -257,15 +257,6 @@
 #endif
 }
 
-void AudioSessionMac::setCategoryOverride(CategoryType category)
-{
-    if (m_categoryOverride == category)
-        return;
-
-    m_categoryOverride = category;
-    setCategory(category, RouteSharingPolicy::Default);
-}
-
 float AudioSessionMac::sampleRate() const
 {
     if (!m_sampleRate) {

Modified: trunk/Source/WebKit/ChangeLog (281596 => 281597)


--- trunk/Source/WebKit/ChangeLog	2021-08-25 22:52:42 UTC (rev 281596)
+++ trunk/Source/WebKit/ChangeLog	2021-08-25 23:07:06 UTC (rev 281597)
@@ -1,3 +1,17 @@
+2021-08-25  Eric Carlson  <[email protected]>
+
+        [GPUP] RemoteAudioSession doesn't implement begin/endInterruption
+        https://bugs.webkit.org/show_bug.cgi?id=229514
+        rdar://80896732
+
+        Reviewed by Jer Noble.
+
+        * WebProcess/GPU/media/RemoteAudioSession.cpp:
+        (WebKit::RemoteAudioSession::setIsPlayingToBluetoothOverride): Remove 
+        ENABLE_ROUTING_ARBITRATION guard because it isn't used in the base class.
+        * WebProcess/GPU/media/RemoteAudioSession.h: Change the order virtual methods are declared
+        so they match the base class, to make it easier to spot differences.
+
 2021-08-25  Per Arne Vollan  <[email protected]>
 
         Build error preprocessing sandbox

Modified: trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.cpp (281596 => 281597)


--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.cpp	2021-08-25 22:52:42 UTC (rev 281596)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.cpp	2021-08-25 23:07:06 UTC (rev 281597)
@@ -133,13 +133,11 @@
     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
 {

Modified: trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.h (281596 => 281597)


--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.h	2021-08-25 22:52:42 UTC (rev 281596)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.h	2021-08-25 23:07:06 UTC (rev 281597)
@@ -66,30 +66,35 @@
 
     // AudioSession
     void setCategory(CategoryType, WebCore::RouteSharingPolicy) final;
-    void setPreferredBufferSize(size_t) final;
-    bool tryToSetActiveInternal(bool) final;
-    void addConfigurationChangeObserver(ConfigurationChangeObserver&);
-    void removeConfigurationChangeObserver(ConfigurationChangeObserver&);
+    CategoryType category() const final;
 
-#if ENABLE(ROUTING_ARBITRATION)
-    void setIsPlayingToBluetoothOverride(std::optional<bool>) final;
-#endif
-
-    const RemoteAudioSessionConfiguration& configuration() const;
-    RemoteAudioSessionConfiguration& configuration();
-    void initializeConfigurationIfNecessary();
-
-    CategoryType category() const final;
     WebCore::RouteSharingPolicy routeSharingPolicy() const final { return m_routeSharingPolicy; }
     String routingContextUID() const final { return configuration().routingContextUID; }
+
     float sampleRate() const final { return configuration().sampleRate; }
     size_t bufferSize() const final { return configuration().bufferSize; }
     size_t numberOfOutputChannels() const final { return configuration().numberOfOutputChannels; }
     size_t maximumNumberOfOutputChannels() const final { return configuration().maximumNumberOfOutputChannels; }
+
+    bool tryToSetActiveInternal(bool) final;
+
     size_t preferredBufferSize() const final { return configuration().preferredBufferSize; }
+    void setPreferredBufferSize(size_t) final;
+        
+    void addConfigurationChangeObserver(ConfigurationChangeObserver&) final;
+    void removeConfigurationChangeObserver(ConfigurationChangeObserver&) final;
+
+    void setIsPlayingToBluetoothOverride(std::optional<bool>) final;
+
     bool isMuted() const final { return configuration().isMuted; }
+
     bool isActive() const final { return configuration().isActive; }
 
+    const RemoteAudioSessionConfiguration& configuration() const;
+    RemoteAudioSessionConfiguration& configuration();
+    void initializeConfigurationIfNecessary();
+
+
     WebProcess& m_process;
 
     WeakHashSet<ConfigurationChangeObserver> m_configurationChangeObservers;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to