- 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;