Title: [282995] branches/safari-612-branch/Source
Revision
282995
Author
[email protected]
Date
2021-09-23 13:14:03 -0700 (Thu, 23 Sep 2021)

Log Message

Cherry-pick r281597. rdar://problem/83460725

    [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.

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@281597 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Diff

Modified: branches/safari-612-branch/Source/WebCore/ChangeLog (282994 => 282995)


--- branches/safari-612-branch/Source/WebCore/ChangeLog	2021-09-23 20:13:57 UTC (rev 282994)
+++ branches/safari-612-branch/Source/WebCore/ChangeLog	2021-09-23 20:14:03 UTC (rev 282995)
@@ -1,5 +1,90 @@
 2021-09-23  Russell Epstein  <[email protected]>
 
+        Cherry-pick r281597. rdar://problem/83460725
+
+    [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.
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@281597 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    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-09-23  Russell Epstein  <[email protected]>
+
         Cherry-pick r281543. rdar://problem/83460773
 
     [Cocoa] Should video stop being live, time scrubber will not show

Modified: branches/safari-612-branch/Source/WebCore/platform/audio/AudioSession.cpp (282994 => 282995)


--- branches/safari-612-branch/Source/WebCore/platform/audio/AudioSession.cpp	2021-09-23 20:13:57 UTC (rev 282994)
+++ branches/safari-612-branch/Source/WebCore/platform/audio/AudioSession.cpp	2021-09-23 20:14:03 UTC (rev 282995)
@@ -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: branches/safari-612-branch/Source/WebCore/platform/audio/AudioSession.h (282994 => 282995)


--- branches/safari-612-branch/Source/WebCore/platform/audio/AudioSession.h	2021-09-23 20:13:57 UTC (rev 282994)
+++ branches/safari-612-branch/Source/WebCore/platform/audio/AudioSession.h	2021-09-23 20:14:03 UTC (rev 282995)
@@ -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: branches/safari-612-branch/Source/WebCore/platform/audio/ios/AudioSessionIOS.h (282994 => 282995)


--- branches/safari-612-branch/Source/WebCore/platform/audio/ios/AudioSessionIOS.h	2021-09-23 20:13:57 UTC (rev 282994)
+++ branches/safari-612-branch/Source/WebCore/platform/audio/ios/AudioSessionIOS.h	2021-09-23 20:14:03 UTC (rev 282995)
@@ -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: branches/safari-612-branch/Source/WebCore/platform/audio/ios/AudioSessionIOS.mm (282994 => 282995)


--- branches/safari-612-branch/Source/WebCore/platform/audio/ios/AudioSessionIOS.mm	2021-09-23 20:13:57 UTC (rev 282994)
+++ branches/safari-612-branch/Source/WebCore/platform/audio/ios/AudioSessionIOS.mm	2021-09-23 20:14:03 UTC (rev 282995)
@@ -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: branches/safari-612-branch/Source/WebCore/platform/audio/mac/AudioSessionMac.h (282994 => 282995)


--- branches/safari-612-branch/Source/WebCore/platform/audio/mac/AudioSessionMac.h	2021-09-23 20:13:57 UTC (rev 282994)
+++ branches/safari-612-branch/Source/WebCore/platform/audio/mac/AudioSessionMac.h	2021-09-23 20:14:03 UTC (rev 282995)
@@ -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: branches/safari-612-branch/Source/WebCore/platform/audio/mac/AudioSessionMac.mm (282994 => 282995)


--- branches/safari-612-branch/Source/WebCore/platform/audio/mac/AudioSessionMac.mm	2021-09-23 20:13:57 UTC (rev 282994)
+++ branches/safari-612-branch/Source/WebCore/platform/audio/mac/AudioSessionMac.mm	2021-09-23 20:14:03 UTC (rev 282995)
@@ -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: branches/safari-612-branch/Source/WebKit/ChangeLog (282994 => 282995)


--- branches/safari-612-branch/Source/WebKit/ChangeLog	2021-09-23 20:13:57 UTC (rev 282994)
+++ branches/safari-612-branch/Source/WebKit/ChangeLog	2021-09-23 20:14:03 UTC (rev 282995)
@@ -1,5 +1,69 @@
 2021-09-23  Russell Epstein  <[email protected]>
 
+        Cherry-pick r281597. rdar://problem/83460725
+
+    [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.
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@281597 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    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-09-23  Russell Epstein  <[email protected]>
+
         Cherry-pick r281579. rdar://problem/83461036
 
     [iOS] Crash when tapping <select> element and calling window.open()

Modified: branches/safari-612-branch/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.cpp (282994 => 282995)


--- branches/safari-612-branch/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.cpp	2021-09-23 20:13:57 UTC (rev 282994)
+++ branches/safari-612-branch/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.cpp	2021-09-23 20:14:03 UTC (rev 282995)
@@ -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: branches/safari-612-branch/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.h (282994 => 282995)


--- branches/safari-612-branch/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.h	2021-09-23 20:13:57 UTC (rev 282994)
+++ branches/safari-612-branch/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.h	2021-09-23 20:14:03 UTC (rev 282995)
@@ -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