Diff
Modified: trunk/Source/WebCore/ChangeLog (277583 => 277584)
--- trunk/Source/WebCore/ChangeLog 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebCore/ChangeLog 2021-05-17 16:31:39 UTC (rev 277584)
@@ -1,3 +1,34 @@
+2021-05-17 Peng Liu <peng.l...@apple.com>
+
+ [GPUP] WebContent process should not pull audio session category from the GPU Process
+ https://bugs.webkit.org/show_bug.cgi?id=225826
+
+ Reviewed by Darin Adler.
+
+ Change AudioSession::Category to be an enum class.
+
+ * platform/audio/AudioSession.cpp:
+ (WebCore::AudioSession::categoryOverride const):
+ (WebCore::AudioSession::category const):
+ * platform/audio/AudioSession.h:
+ * platform/audio/cocoa/MediaSessionManagerCocoa.mm:
+ (WebCore::MediaSessionManagerCocoa::updateSessionState):
+ * platform/audio/ios/AudioSessionIOS.mm:
+ (WebCore::AudioSessionPrivate::AudioSessionPrivate):
+ (WebCore::AudioSession::setCategory):
+ (WebCore::AudioSession::category const):
+ * platform/audio/mac/AudioSessionMac.mm:
+ (WebCore::AudioSession::setCategory):
+ * platform/audio/mac/SharedRoutingArbitrator.h:
+ * platform/audio/mac/SharedRoutingArbitrator.mm:
+ (WebCore::SharedRoutingArbitrator::beginRoutingArbitrationForToken):
+ * platform/mediastream/mac/BaseAudioSharedUnit.cpp:
+ (WebCore::BaseAudioSharedUnit::startUnit):
+ * platform/mock/MockRealtimeAudioSource.cpp:
+ (WebCore::MockRealtimeAudioSource::startProducingData):
+ * testing/Internals.cpp:
+ (WebCore::Internals::audioSessionCategory const):
+
2021-05-17 Rob Buis <rb...@igalia.com>
will-change: contain should create a containing block
Modified: trunk/Source/WebCore/page/DeprecatedGlobalSettings.cpp (277583 => 277584)
--- trunk/Source/WebCore/page/DeprecatedGlobalSettings.cpp 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebCore/page/DeprecatedGlobalSettings.cpp 2021-05-17 16:31:39 UTC (rev 277584)
@@ -154,7 +154,7 @@
unsigned DeprecatedGlobalSettings::audioSessionCategoryOverride()
{
- return AudioSession::sharedSession().categoryOverride();
+ return static_cast<unsigned>(AudioSession::sharedSession().categoryOverride());
}
void DeprecatedGlobalSettings::setNetworkDataUsageTrackingEnabled(bool trackingEnabled)
Modified: trunk/Source/WebCore/platform/audio/AudioSession.cpp (277583 => 277584)
--- trunk/Source/WebCore/platform/audio/AudioSession.cpp 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebCore/platform/audio/AudioSession.cpp 2021-05-17 16:31:39 UTC (rev 277584)
@@ -102,7 +102,7 @@
AudioSession::CategoryType AudioSession::categoryOverride() const
{
notImplemented();
- return None;
+ return AudioSession::CategoryType::None;
}
void AudioSession::setCategoryOverride(CategoryType)
@@ -113,7 +113,7 @@
AudioSession::CategoryType AudioSession::category() const
{
notImplemented();
- return None;
+ return AudioSession::CategoryType::None;
}
float AudioSession::sampleRate() const
Modified: trunk/Source/WebCore/platform/audio/AudioSession.h (277583 => 277584)
--- trunk/Source/WebCore/platform/audio/AudioSession.h 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebCore/platform/audio/AudioSession.h 2021-05-17 16:31:39 UTC (rev 277584)
@@ -60,7 +60,7 @@
static AudioSession& sharedSession();
virtual ~AudioSession();
- enum CategoryType : uint8_t {
+ enum class CategoryType : uint8_t {
None,
AmbientSound,
SoloAmbientSound,
Modified: trunk/Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm (277583 => 277584)
--- trunk/Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm 2021-05-17 16:31:39 UTC (rev 277584)
@@ -131,14 +131,14 @@
return;
RouteSharingPolicy policy = RouteSharingPolicy::Default;
- AudioSession::CategoryType category = AudioSession::None;
+ auto category = AudioSession::CategoryType::None;
if (captureCount)
- category = AudioSession::PlayAndRecord;
+ category = AudioSession::CategoryType::PlayAndRecord;
else if (hasAudibleAudioOrVideoMediaType) {
- category = AudioSession::MediaPlayback;
+ category = AudioSession::CategoryType::MediaPlayback;
policy = RouteSharingPolicy::LongFormAudio;
} else if (webAudioCount)
- category = AudioSession::AmbientSound;
+ category = AudioSession::CategoryType::AmbientSound;
ALWAYS_LOG(LOGIDENTIFIER, "setting category = ", category, ", policy = ", policy);
AudioSession::sharedSession().setCategory(category, policy);
Modified: trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.mm (277583 => 277584)
--- trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.mm 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.mm 2021-05-17 16:31:39 UTC (rev 277584)
@@ -108,7 +108,7 @@
};
AudioSessionPrivate::AudioSessionPrivate(AudioSession* session)
- : m_categoryOverride(AudioSession::None)
+ : m_categoryOverride(AudioSession::CategoryType::None)
{
BEGIN_BLOCK_OBJC_EXCEPTIONS
m_interruptionObserverHelper = adoptNS([[WebInterruptionObserverHelper alloc] initWithCallback:session]);
@@ -138,7 +138,7 @@
LOG(Media, "AudioSession::setCategory() - category = %s", convertEnumerationToString(newCategory).ascii().data());
- if (categoryOverride() && categoryOverride() != newCategory) {
+ if (categoryOverride() != CategoryType::None && categoryOverride() != newCategory) {
LOG(Media, "AudioSession::setCategory() - override set, NOT changing");
return;
}
@@ -148,27 +148,27 @@
AVAudioSessionCategoryOptions options = 0;
switch (newCategory) {
- case AmbientSound:
+ case CategoryType::AmbientSound:
categoryString = AVAudioSessionCategoryAmbient;
break;
- case SoloAmbientSound:
+ case CategoryType::SoloAmbientSound:
categoryString = AVAudioSessionCategorySoloAmbient;
break;
- case MediaPlayback:
+ case CategoryType::MediaPlayback:
categoryString = AVAudioSessionCategoryPlayback;
break;
- case RecordAudio:
+ case CategoryType::RecordAudio:
categoryString = AVAudioSessionCategoryRecord;
break;
- case PlayAndRecord:
+ case CategoryType::PlayAndRecord:
categoryString = AVAudioSessionCategoryPlayAndRecord;
categoryMode = AVAudioSessionModeVideoChat;
options |= AVAudioSessionCategoryOptionAllowBluetooth | AVAudioSessionCategoryOptionAllowBluetoothA2DP | AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionAllowAirPlay;
break;
- case AudioProcessing:
+ case CategoryType::AudioProcessing:
categoryString = AVAudioSessionCategoryAudioProcessing;
break;
- case None:
+ case CategoryType::None:
categoryString = AVAudioSessionCategoryAmbient;
break;
}
@@ -184,18 +184,18 @@
{
NSString *categoryString = [[PAL::getAVAudioSessionClass() sharedInstance] category];
if ([categoryString isEqual:AVAudioSessionCategoryAmbient])
- return AmbientSound;
+ return CategoryType::AmbientSound;
if ([categoryString isEqual:AVAudioSessionCategorySoloAmbient])
- return SoloAmbientSound;
+ return CategoryType::SoloAmbientSound;
if ([categoryString isEqual:AVAudioSessionCategoryPlayback])
- return MediaPlayback;
+ return CategoryType::MediaPlayback;
if ([categoryString isEqual:AVAudioSessionCategoryRecord])
- return RecordAudio;
+ return CategoryType::RecordAudio;
if ([categoryString isEqual:AVAudioSessionCategoryPlayAndRecord])
- return PlayAndRecord;
+ return CategoryType::PlayAndRecord;
if ([categoryString isEqual:AVAudioSessionCategoryAudioProcessing])
- return AudioProcessing;
- return None;
+ return CategoryType::AudioProcessing;
+ return CategoryType::None;
}
RouteSharingPolicy AudioSession::routeSharingPolicy() const
Modified: trunk/Source/WebCore/platform/audio/mac/AudioSessionMac.mm (277583 => 277584)
--- trunk/Source/WebCore/platform/audio/mac/AudioSessionMac.mm 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebCore/platform/audio/mac/AudioSessionMac.mm 2021-05-17 16:31:39 UTC (rev 277584)
@@ -94,7 +94,7 @@
static OSStatus handleBufferSizeChange(AudioObjectID, UInt32, const AudioObjectPropertyAddress*, void* inClientData);
Optional<bool> lastMutedState;
- AudioSession::CategoryType category { AudioSession::None };
+ AudioSession::CategoryType category { AudioSession::CategoryType::None };
#if ENABLE(ROUTING_ARBITRATION)
bool setupArbitrationOngoing { false };
Optional<bool> playingToBluetooth;
@@ -228,7 +228,7 @@
m_routingArbitrationClient->leaveRoutingAbritration();
}
- if (category == AmbientSound || category == SoloAmbientSound || category == AudioProcessing || category == None)
+ if (category == CategoryType::AmbientSound || category == CategoryType::SoloAmbientSound || category == CategoryType::AudioProcessing || category == CategoryType::None)
return;
using RoutingArbitrationError = AudioSessionRoutingArbitrationClient::RoutingArbitrationError;
Modified: trunk/Source/WebCore/platform/audio/mac/SharedRoutingArbitrator.h (277583 => 277584)
--- trunk/Source/WebCore/platform/audio/mac/SharedRoutingArbitrator.h 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebCore/platform/audio/mac/SharedRoutingArbitrator.h 2021-05-17 16:31:39 UTC (rev 277584)
@@ -55,7 +55,7 @@
void endRoutingArbitrationForToken(const Token&);
private:
- Optional<AudioSession::CategoryType> m_currentCategory { AudioSession::None };
+ Optional<AudioSession::CategoryType> m_currentCategory { AudioSession::CategoryType::None };
WeakHashSet<Token> m_tokens;
Vector<ArbitrationCallback> m_enqueuedCallbacks;
bool m_setupArbitrationOngoing { false };
Modified: trunk/Source/WebCore/platform/audio/mac/SharedRoutingArbitrator.mm (277583 => 277584)
--- trunk/Source/WebCore/platform/audio/mac/SharedRoutingArbitrator.mm 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebCore/platform/audio/mac/SharedRoutingArbitrator.mm 2021-05-17 16:31:39 UTC (rev 277584)
@@ -79,13 +79,13 @@
AVAudioRoutingArbitrationCategory arbitrationCategory = AVAudioRoutingArbitrationCategoryPlayback;
switch (requestedCategory) {
- case AudioSession::MediaPlayback:
+ case AudioSession::CategoryType::MediaPlayback:
arbitrationCategory = AVAudioRoutingArbitrationCategoryPlayback;
break;
- case AudioSession::RecordAudio:
+ case AudioSession::CategoryType::RecordAudio:
arbitrationCategory = AVAudioRoutingArbitrationCategoryPlayAndRecord;
break;
- case AudioSession::PlayAndRecord:
+ case AudioSession::CategoryType::PlayAndRecord:
arbitrationCategory = AVAudioRoutingArbitrationCategoryPlayAndRecordVoice;
break;
default:
Modified: trunk/Source/WebCore/platform/mediastream/mac/BaseAudioSharedUnit.cpp (277583 => 277584)
--- trunk/Source/WebCore/platform/mediastream/mac/BaseAudioSharedUnit.cpp 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebCore/platform/mediastream/mac/BaseAudioSharedUnit.cpp 2021-05-17 16:31:39 UTC (rev 277584)
@@ -103,7 +103,7 @@
forEachClient([](auto& client) {
client.audioUnitWillStart();
});
- ASSERT(!DeprecatedGlobalSettings::shouldManageAudioSessionCategory() || AudioSession::sharedSession().category() == AudioSession::PlayAndRecord);
+ ASSERT(!DeprecatedGlobalSettings::shouldManageAudioSessionCategory() || AudioSession::sharedSession().category() == AudioSession::CategoryType::PlayAndRecord);
if (auto error = startInternal()) {
captureFailed();
Modified: trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp (277583 => 277584)
--- trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp 2021-05-17 16:31:39 UTC (rev 277584)
@@ -138,7 +138,7 @@
#if PLATFORM(IOS_FAMILY)
RealtimeMediaSourceCenter::singleton().audioCaptureFactory().setActiveSource(*this);
PlatformMediaSessionManager::sharedManager().sessionCanProduceAudioChanged();
- ASSERT(AudioSession::sharedSession().category() == AudioSession::PlayAndRecord);
+ ASSERT(AudioSession::sharedSession().category() == AudioSession::CategoryType::PlayAndRecord);
#endif
if (!sampleRate())
Modified: trunk/Source/WebCore/testing/Internals.cpp (277583 => 277584)
--- trunk/Source/WebCore/testing/Internals.cpp 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebCore/testing/Internals.cpp 2021-05-17 16:31:39 UTC (rev 277584)
@@ -5405,19 +5405,19 @@
{
#if USE(AUDIO_SESSION)
switch (AudioSession::sharedSession().category()) {
- case AudioSession::AmbientSound:
+ case AudioSession::CategoryType::AmbientSound:
return "AmbientSound"_s;
- case AudioSession::SoloAmbientSound:
+ case AudioSession::CategoryType::SoloAmbientSound:
return "SoloAmbientSound"_s;
- case AudioSession::MediaPlayback:
+ case AudioSession::CategoryType::MediaPlayback:
return "MediaPlayback"_s;
- case AudioSession::RecordAudio:
+ case AudioSession::CategoryType::RecordAudio:
return "RecordAudio"_s;
- case AudioSession::PlayAndRecord:
+ case AudioSession::CategoryType::PlayAndRecord:
return "PlayAndRecord"_s;
- case AudioSession::AudioProcessing:
+ case AudioSession::CategoryType::AudioProcessing:
return "AudioProcessing"_s;
- case AudioSession::None:
+ case AudioSession::CategoryType::None:
return "None"_s;
}
#endif
Modified: trunk/Source/WebKit/ChangeLog (277583 => 277584)
--- trunk/Source/WebKit/ChangeLog 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebKit/ChangeLog 2021-05-17 16:31:39 UTC (rev 277584)
@@ -1,3 +1,41 @@
+2021-05-17 Peng Liu <peng.l...@apple.com>
+
+ [GPUP] WebContent process should not pull audio session category from the GPU Process
+ https://bugs.webkit.org/show_bug.cgi?id=225826
+
+ Reviewed by Darin Adler.
+
+ Remove `category` and `routeSharingPolicy` from `RemoteAudioSessionConfiguration`
+ because we should not pull these properties from the GPU process.
+
+ Remove IPC message `RemoteAudioSession::ConfigurationChanged` because it is not used.
+
+ * GPUProcess/mac/LocalAudioSessionRoutingArbitrator.h:
+ * GPUProcess/media/RemoteAudioSessionProxy.cpp:
+ (WebKit::RemoteAudioSessionProxy::configuration):
+ * GPUProcess/media/RemoteAudioSessionProxy.h:
+
+ * GPUProcess/media/RemoteAudioSessionProxyManager.cpp:
+ (WebKit::categoryCanMixWithOthers):
+ (WebKit::RemoteAudioSessionProxyManager::updateCategory):
+
+ * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
+
+ * UIProcess/Media/AudioSessionRoutingArbitratorProxy.h:
+
+ * WebProcess/GPU/media/RemoteAudioSession.cpp:
+ (WebKit::RemoteAudioSession::setCategory):
+ (WebKit::RemoteAudioSession::category const):
+ (WebKit::RemoteAudioSession::configurationChanged): Deleted.
+ * WebProcess/GPU/media/RemoteAudioSession.h:
+ * WebProcess/GPU/media/RemoteAudioSession.messages.in:
+
+ * WebProcess/GPU/media/RemoteAudioSessionConfiguration.h:
+ (WebKit::RemoteAudioSessionConfiguration::encode const):
+ (WebKit::RemoteAudioSessionConfiguration::decode):
+
+ * WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.cpp:
+
2021-05-14 Jer Noble <jer.no...@apple.com>
MediaSessionCoordinator survives page reload/navigation
Modified: trunk/Source/WebKit/GPUProcess/mac/LocalAudioSessionRoutingArbitrator.h (277583 => 277584)
--- trunk/Source/WebKit/GPUProcess/mac/LocalAudioSessionRoutingArbitrator.h 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebKit/GPUProcess/mac/LocalAudioSessionRoutingArbitrator.h 2021-05-17 16:31:39 UTC (rev 277584)
@@ -61,7 +61,7 @@
void leaveRoutingAbritration() final;
UniqueRef<WebCore::SharedRoutingArbitrator::Token> m_token;
- WebCore::AudioSession::CategoryType m_category { WebCore::AudioSession::None };
+ WebCore::AudioSession::CategoryType m_category { WebCore::AudioSession::CategoryType::None };
ArbitrationStatus m_arbitrationStatus { ArbitrationStatus::None };
WallTime m_arbitrationUpdateTime;
};
Modified: trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.cpp (277583 => 277584)
--- trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.cpp 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.cpp 2021-05-17 16:31:39 UTC (rev 277584)
@@ -60,8 +60,6 @@
{
auto& session = audioSessionManager().session();
return {
- session.category(),
- session.routeSharingPolicy(),
session.routingContextUID(),
session.sampleRate(),
session.bufferSize(),
Modified: trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.h (277583 => 277584)
--- trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.h 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.h 2021-05-17 16:31:39 UTC (rev 277584)
@@ -78,7 +78,7 @@
IPC::Connection& connection();
GPUConnectionToWebProcess& m_gpuConnection;
- WebCore::AudioSession::CategoryType m_category { WebCore::AudioSession::None };
+ WebCore::AudioSession::CategoryType m_category { WebCore::AudioSession::CategoryType::None };
WebCore::RouteSharingPolicy m_routeSharingPolicy { WebCore::RouteSharingPolicy::Default };
size_t m_preferredBufferSize { 0 };
bool m_active { false };
Modified: trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.cpp (277583 => 277584)
--- trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.cpp 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.cpp 2021-05-17 16:31:39 UTC (rev 277584)
@@ -40,7 +40,7 @@
static bool categoryCanMixWithOthers(AudioSession::CategoryType category)
{
- return category == AudioSession::AmbientSound;
+ return category == AudioSession::CategoryType::AmbientSound;
}
RemoteAudioSessionProxyManager::RemoteAudioSessionProxyManager()
@@ -70,7 +70,7 @@
void RemoteAudioSessionProxyManager::updateCategory()
{
- AudioSession::CategoryType category = AudioSession::None;
+ AudioSession::CategoryType category = AudioSession::CategoryType::None;
RouteSharingPolicy policy = RouteSharingPolicy::Default;
HashCountedSet<AudioSession::CategoryType, WTF::IntHash<AudioSession::CategoryType>, WTF::StrongEnumHashTraits<AudioSession::CategoryType>> categoryCounts;
@@ -80,20 +80,20 @@
policyCounts.add(otherProxy.routeSharingPolicy());
}
- if (categoryCounts.contains(AudioSession::PlayAndRecord))
- category = AudioSession::PlayAndRecord;
- else if (categoryCounts.contains(AudioSession::RecordAudio))
- category = AudioSession::RecordAudio;
- else if (categoryCounts.contains(AudioSession::MediaPlayback))
- category = AudioSession::MediaPlayback;
- else if (categoryCounts.contains(AudioSession::SoloAmbientSound))
- category = AudioSession::SoloAmbientSound;
- else if (categoryCounts.contains(AudioSession::AmbientSound))
- category = AudioSession::AmbientSound;
- else if (categoryCounts.contains(AudioSession::AudioProcessing))
- category = AudioSession::AudioProcessing;
+ if (categoryCounts.contains(AudioSession::CategoryType::PlayAndRecord))
+ category = AudioSession::CategoryType::PlayAndRecord;
+ else if (categoryCounts.contains(AudioSession::CategoryType::RecordAudio))
+ category = AudioSession::CategoryType::RecordAudio;
+ else if (categoryCounts.contains(AudioSession::CategoryType::MediaPlayback))
+ category = AudioSession::CategoryType::MediaPlayback;
+ else if (categoryCounts.contains(AudioSession::CategoryType::SoloAmbientSound))
+ category = AudioSession::CategoryType::SoloAmbientSound;
+ else if (categoryCounts.contains(AudioSession::CategoryType::AmbientSound))
+ category = AudioSession::CategoryType::AmbientSound;
+ else if (categoryCounts.contains(AudioSession::CategoryType::AudioProcessing))
+ category = AudioSession::CategoryType::AudioProcessing;
else
- category = AudioSession::None;
+ category = AudioSession::CategoryType::None;
policy = RouteSharingPolicy::Default;
if (policyCounts.contains(RouteSharingPolicy::LongFormVideo))
Modified: trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp (277583 => 277584)
--- trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp 2021-05-17 16:31:39 UTC (rev 277584)
@@ -103,7 +103,7 @@
auto bufferSize = AudioSession::sharedSession().sampleRate() / 50;
if (AudioSession::sharedSession().preferredBufferSize() > bufferSize)
AudioSession::sharedSession().setPreferredBufferSize(bufferSize);
- AudioSession::sharedSession().setCategory(AudioSession::PlayAndRecord, RouteSharingPolicy::Default);
+ AudioSession::sharedSession().setCategory(AudioSession::CategoryType::PlayAndRecord, RouteSharingPolicy::Default);
}
void start()
Modified: trunk/Source/WebKit/UIProcess/Media/AudioSessionRoutingArbitratorProxy.h (277583 => 277584)
--- trunk/Source/WebKit/UIProcess/Media/AudioSessionRoutingArbitratorProxy.h 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebKit/UIProcess/Media/AudioSessionRoutingArbitratorProxy.h 2021-05-17 16:31:39 UTC (rev 277584)
@@ -74,7 +74,7 @@
void endRoutingArbitration();
WebProcessProxy& m_process;
- WebCore::AudioSession::CategoryType m_category { WebCore::AudioSession::None };
+ WebCore::AudioSession::CategoryType m_category { WebCore::AudioSession::CategoryType::None };
ArbitrationStatus m_arbitrationStatus { ArbitrationStatus::None };
WallTime m_arbitrationUpdateTime;
Modified: trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.cpp (277583 => 277584)
--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.cpp 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.cpp 2021-05-17 16:31:39 UTC (rev 277584)
@@ -94,12 +94,11 @@
void RemoteAudioSession::setCategory(CategoryType type, RouteSharingPolicy policy)
{
#if PLATFORM(COCOA)
- auto& configuration = this->configuration();
- if (type == configuration.category && policy == configuration.routeSharingPolicy)
+ if (type == m_category && policy == m_routeSharingPolicy)
return;
- configuration.category = type;
- configuration.routeSharingPolicy = policy;
+ m_category = type;
+ m_routeSharingPolicy = policy;
ensureConnection().send(Messages::RemoteAudioSessionProxy::SetCategory(type, policy), { });
#else
@@ -125,22 +124,12 @@
AudioSession::CategoryType RemoteAudioSession::category() const
{
#if PLATFORM(COCOA)
- return configuration().category;
+ return m_category;
#else
- return None;
+ return AudioSession::CategoryType::None;
#endif
}
-void RemoteAudioSession::configurationChanged(RemoteAudioSessionConfiguration&& configuration)
-{
- bool mutedStateChanged = !m_configuration || configuration.isMuted != m_configuration->isMuted;
-
- m_configuration = WTFMove(configuration);
-
- if (mutedStateChanged)
- handleMutedStateChange();
}
-}
-
#endif
Modified: trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.h (277583 => 277584)
--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.h 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.h 2021-05-17 16:31:39 UTC (rev 277584)
@@ -74,7 +74,7 @@
void initializeConfigurationIfNecessary();
CategoryType category() const final;
- WebCore::RouteSharingPolicy routeSharingPolicy() const final { return configuration().routeSharingPolicy; }
+ 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; }
@@ -85,6 +85,9 @@
bool isActive() const final { return configuration().isActive; }
WebProcess& m_process;
+
+ CategoryType m_category { CategoryType::None };
+ WebCore::RouteSharingPolicy m_routeSharingPolicy { WebCore::RouteSharingPolicy::Default };
Optional<RemoteAudioSessionConfiguration> m_configuration;
WeakPtr<GPUProcessConnection> m_gpuProcessConnection;
};
Modified: trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.messages.in (277583 => 277584)
--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.messages.in 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.messages.in 2021-05-17 16:31:39 UTC (rev 277584)
@@ -26,7 +26,6 @@
#if ENABLE(GPU_PROCESS) && USE(AUDIO_SESSION)
messages -> RemoteAudioSession NotRefCounted {
- ConfigurationChanged(struct WebKit::RemoteAudioSessionConfiguration configuration)
BeginInterruption()
EndInterruption(WebCore::AudioSession::MayResume flags)
}
Modified: trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSessionConfiguration.h (277583 => 277584)
--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSessionConfiguration.h 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteAudioSessionConfiguration.h 2021-05-17 16:31:39 UTC (rev 277584)
@@ -32,9 +32,6 @@
namespace WebKit {
struct RemoteAudioSessionConfiguration {
-
- WebCore::AudioSession::CategoryType category { WebCore::AudioSession::CategoryType::None };
- WebCore::RouteSharingPolicy routeSharingPolicy { WebCore::RouteSharingPolicy::Default };
String routingContextUID;
float sampleRate { 0 };
size_t bufferSize { 0 };
@@ -47,8 +44,6 @@
template<class Encoder>
void encode(Encoder& encoder) const
{
- encoder << category;
- encoder << routeSharingPolicy;
encoder << routingContextUID;
encoder << sampleRate;
encoder << bufferSize;
@@ -62,16 +57,6 @@
template <class Decoder>
static Optional<RemoteAudioSessionConfiguration> decode(Decoder& decoder)
{
- Optional<WebCore::AudioSession::CategoryType> category;
- decoder >> category;
- if (!category)
- return WTF::nullopt;
-
- Optional<WebCore::RouteSharingPolicy> routeSharingPolicy;
- decoder >> routeSharingPolicy;
- if (!routeSharingPolicy)
- return WTF::nullopt;
-
Optional<String> routingContextUID;
decoder >> routingContextUID;
if (!routingContextUID)
@@ -113,8 +98,6 @@
return WTF::nullopt;
return {{
- WTFMove(*category),
- WTFMove(*routeSharingPolicy),
WTFMove(*routingContextUID),
*sampleRate,
*bufferSize,
Modified: trunk/Source/WebKit/WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.cpp (277583 => 277584)
--- trunk/Source/WebKit/WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.cpp 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebKit/WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.cpp 2021-05-17 16:31:39 UTC (rev 277584)
@@ -153,7 +153,7 @@
auto bufferSize = AudioSession::sharedSession().sampleRate() / 50;
if (AudioSession::sharedSession().preferredBufferSize() > bufferSize)
AudioSession::sharedSession().setPreferredBufferSize(bufferSize);
- AudioSession::sharedSession().setCategory(AudioSession::PlayAndRecord, RouteSharingPolicy::Default);
+ AudioSession::sharedSession().setCategory(AudioSession::CategoryType::PlayAndRecord, RouteSharingPolicy::Default);
#endif
}
Modified: trunk/Source/WebKitLegacy/mac/ChangeLog (277583 => 277584)
--- trunk/Source/WebKitLegacy/mac/ChangeLog 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebKitLegacy/mac/ChangeLog 2021-05-17 16:31:39 UTC (rev 277584)
@@ -1,3 +1,14 @@
+2021-05-17 Peng Liu <peng.l...@apple.com>
+
+ [GPUP] WebContent process should not pull audio session category from the GPU Process
+ https://bugs.webkit.org/show_bug.cgi?id=225826
+
+ Reviewed by Darin Adler.
+
+ * WebView/WebPreferences.mm:
+ (+[WebPreferences initialize]):
+ (-[WebPreferences setAudioSessionCategoryOverride:]):
+
2021-05-15 Ryosuke Niwa <rn...@webkit.org>
Delete WebSQL code from WebKit2
Modified: trunk/Source/WebKitLegacy/mac/Plugins/WebPluginController.mm (277583 => 277584)
--- trunk/Source/WebKitLegacy/mac/Plugins/WebPluginController.mm 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebKitLegacy/mac/Plugins/WebPluginController.mm 2021-05-17 16:31:39 UTC (rev 277584)
@@ -114,7 +114,7 @@
if (!WebCore::IOSApplication::isMobileSafari())
return;
- WebCore::AudioSession::sharedSession().setCategory(WebCore::AudioSession::MediaPlayback, WebCore::RouteSharingPolicy::Default);
+ WebCore::AudioSession::sharedSession().setCategory(WebCore::AudioSession::CategoryType::MediaPlayback, WebCore::RouteSharingPolicy::Default);
}
#endif
Modified: trunk/Source/WebKitLegacy/mac/WebView/WebPreferences.mm (277583 => 277584)
--- trunk/Source/WebKitLegacy/mac/WebView/WebPreferences.mm 2021-05-17 16:31:31 UTC (rev 277583)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebPreferences.mm 2021-05-17 16:31:39 UTC (rev 277584)
@@ -423,7 +423,7 @@
#if PLATFORM(IOS_FAMILY)
@NO, WebKitStorageTrackerEnabledPreferenceKey,
- @(AudioSession::None), WebKitAudioSessionCategoryOverride,
+ @(static_cast<unsigned>(AudioSession::CategoryType::None)), WebKitAudioSessionCategoryOverride,
// Per-Origin Quota on iOS is 25MB. When the quota is reached for a particular origin
// the quota for that origin can be increased. See also webView:exceededApplicationCacheOriginQuotaForSecurityOrigin:totalSpaceNeeded in WebUI/WebUIDelegate.m.
@@ -2066,30 +2066,30 @@
- (void)setAudioSessionCategoryOverride:(unsigned)override
{
- if (override > AudioSession::AudioProcessing) {
+ if (override > static_cast<unsigned>(AudioSession::CategoryType::AudioProcessing)) {
// Clients are passing us OSTypes values from AudioToolbox/AudioSession.h,
// which need to be translated into AudioSession::CategoryType:
switch (override) {
case WebKitAudioSessionCategoryAmbientSound:
- override = AudioSession::AmbientSound;
+ override = static_cast<unsigned>(AudioSession::CategoryType::AmbientSound);
break;
case WebKitAudioSessionCategorySoloAmbientSound:
- override = AudioSession::SoloAmbientSound;
+ override = static_cast<unsigned>(AudioSession::CategoryType::SoloAmbientSound);
break;
case WebKitAudioSessionCategoryMediaPlayback:
- override = AudioSession::MediaPlayback;
+ override = static_cast<unsigned>(AudioSession::CategoryType::MediaPlayback);
break;
case WebKitAudioSessionCategoryRecordAudio:
- override = AudioSession::RecordAudio;
+ override = static_cast<unsigned>(AudioSession::CategoryType::RecordAudio);
break;
case WebKitAudioSessionCategoryPlayAndRecord:
- override = AudioSession::PlayAndRecord;
+ override = static_cast<unsigned>(AudioSession::CategoryType::PlayAndRecord);
break;
case WebKitAudioSessionCategoryAudioProcessing:
- override = AudioSession::AudioProcessing;
+ override = static_cast<unsigned>(AudioSession::CategoryType::AudioProcessing);
break;
default:
- override = AudioSession::None;
+ override = static_cast<unsigned>(AudioSession::CategoryType::None);
break;
}
}