Title: [277584] trunk/Source
Revision
277584
Author
peng.l...@apple.com
Date
2021-05-17 09:31:39 -0700 (Mon, 17 May 2021)

Log Message

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

Source/WebCore:

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):

Source/WebKit:

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:

Source/WebKitLegacy/mac:

* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences setAudioSessionCategoryOverride:]):

Modified Paths

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;
         }
     }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to