Title: [279797] branches/safari-612.1.23-branch/Source/WebKit
Revision
279797
Author
rubent...@apple.com
Date
2021-07-09 15:00:07 -0700 (Fri, 09 Jul 2021)

Log Message

Cherry-pick r279591. rdar://problem/80395422

    Collect Accessibility preferences on a background queue
    https://bugs.webkit.org/show_bug.cgi?id=227617
    <rdar://80055168>

    Reviewed by Brent Fulgham.

    To avoid blocking the main thread of the UI process, collect Media Accessibility preferences on a background thread,
    and send them to the WebContent process(es).

    * Shared/AccessibilityPreferences.cpp:
    (IPC::ArgumentCoder<WebKit::AccessibilityPreferences>::encode):
    (IPC::ArgumentCoder<WebKit::AccessibilityPreferences>::decode):
    * Shared/AccessibilityPreferences.h:
    * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
    (WebKit::accessibilityPreferences):
    (WebKit::WebProcessPool::setMediaAccessibilityPreferences):
    (WebKit::WebProcessPool::mediaAccessibilityPreferencesChangedCallback):
    (WebKit::WebProcessPool::registerNotificationObservers):
    * UIProcess/WebProcessPool.cpp:
    (WebKit::WebProcessPool::initializeNewWebProcess):
    * UIProcess/WebProcessPool.h:
    * WebProcess/WebProcess.h:
    * WebProcess/WebProcess.messages.in:
    * WebProcess/cocoa/WebProcessCocoa.mm:
    (WebKit::WebProcess::accessibilityPreferencesDidChange):
    (WebKit::WebProcess::setMediaAccessibilityPreferences):

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

Modified Paths

Diff

Modified: branches/safari-612.1.23-branch/Source/WebKit/ChangeLog (279796 => 279797)


--- branches/safari-612.1.23-branch/Source/WebKit/ChangeLog	2021-07-09 21:54:43 UTC (rev 279796)
+++ branches/safari-612.1.23-branch/Source/WebKit/ChangeLog	2021-07-09 22:00:07 UTC (rev 279797)
@@ -1,3 +1,66 @@
+2021-07-09  Ruben Turcios  <rubent...@apple.com>
+
+        Cherry-pick r279591. rdar://problem/80395422
+
+    Collect Accessibility preferences on a background queue
+    https://bugs.webkit.org/show_bug.cgi?id=227617
+    <rdar://80055168>
+    
+    Reviewed by Brent Fulgham.
+    
+    To avoid blocking the main thread of the UI process, collect Media Accessibility preferences on a background thread,
+    and send them to the WebContent process(es).
+    
+    * Shared/AccessibilityPreferences.cpp:
+    (IPC::ArgumentCoder<WebKit::AccessibilityPreferences>::encode):
+    (IPC::ArgumentCoder<WebKit::AccessibilityPreferences>::decode):
+    * Shared/AccessibilityPreferences.h:
+    * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
+    (WebKit::accessibilityPreferences):
+    (WebKit::WebProcessPool::setMediaAccessibilityPreferences):
+    (WebKit::WebProcessPool::mediaAccessibilityPreferencesChangedCallback):
+    (WebKit::WebProcessPool::registerNotificationObservers):
+    * UIProcess/WebProcessPool.cpp:
+    (WebKit::WebProcessPool::initializeNewWebProcess):
+    * UIProcess/WebProcessPool.h:
+    * WebProcess/WebProcess.h:
+    * WebProcess/WebProcess.messages.in:
+    * WebProcess/cocoa/WebProcessCocoa.mm:
+    (WebKit::WebProcess::accessibilityPreferencesDidChange):
+    (WebKit::WebProcess::setMediaAccessibilityPreferences):
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@279591 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2021-07-06  Per Arne  <pvol...@apple.com>
+
+            Collect Accessibility preferences on a background queue
+            https://bugs.webkit.org/show_bug.cgi?id=227617
+            <rdar://80055168>
+
+            Reviewed by Brent Fulgham.
+
+            To avoid blocking the main thread of the UI process, collect Media Accessibility preferences on a background thread,
+            and send them to the WebContent process(es).
+
+            * Shared/AccessibilityPreferences.cpp:
+            (IPC::ArgumentCoder<WebKit::AccessibilityPreferences>::encode):
+            (IPC::ArgumentCoder<WebKit::AccessibilityPreferences>::decode):
+            * Shared/AccessibilityPreferences.h:
+            * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
+            (WebKit::accessibilityPreferences):
+            (WebKit::WebProcessPool::setMediaAccessibilityPreferences):
+            (WebKit::WebProcessPool::mediaAccessibilityPreferencesChangedCallback):
+            (WebKit::WebProcessPool::registerNotificationObservers):
+            * UIProcess/WebProcessPool.cpp:
+            (WebKit::WebProcessPool::initializeNewWebProcess):
+            * UIProcess/WebProcessPool.h:
+            * WebProcess/WebProcess.h:
+            * WebProcess/WebProcess.messages.in:
+            * WebProcess/cocoa/WebProcessCocoa.mm:
+            (WebKit::WebProcess::accessibilityPreferencesDidChange):
+            (WebKit::WebProcess::setMediaAccessibilityPreferences):
+
 2021-07-06  Youenn Fablet  <you...@apple.com>
 
         NetworkRTCUDPSocketCocoa should update the port of its m_address field

Modified: branches/safari-612.1.23-branch/Source/WebKit/Shared/AccessibilityPreferences.cpp (279796 => 279797)


--- branches/safari-612.1.23-branch/Source/WebKit/Shared/AccessibilityPreferences.cpp	2021-07-09 21:54:43 UTC (rev 279796)
+++ branches/safari-612.1.23-branch/Source/WebKit/Shared/AccessibilityPreferences.cpp	2021-07-09 22:00:07 UTC (rev 279797)
@@ -37,10 +37,6 @@
     encoder << preferences.darkenSystemColors;
     encoder << preferences.invertColorsEnabled;
 #endif
-#if HAVE(MEDIA_ACCESSIBILITY_FRAMEWORK)
-    encoder << preferences.captionDisplayMode;
-    encoder << preferences.preferredLanguages;
-#endif
 }
 
 std::optional<WebKit::AccessibilityPreferences> ArgumentCoder<WebKit::AccessibilityPreferences>::decode(Decoder& decoder)
@@ -58,12 +54,6 @@
     if (!decoder.decode(preferences.invertColorsEnabled))
         return std::nullopt;
 #endif
-#if HAVE(MEDIA_ACCESSIBILITY_FRAMEWORK)
-    if (!decoder.decode(preferences.captionDisplayMode))
-        return std::nullopt;
-    if (!decoder.decode(preferences.preferredLanguages))
-        return std::nullopt;
-#endif
     return preferences;
 }
 

Modified: branches/safari-612.1.23-branch/Source/WebKit/Shared/AccessibilityPreferences.h (279796 => 279797)


--- branches/safari-612.1.23-branch/Source/WebKit/Shared/AccessibilityPreferences.h	2021-07-09 21:54:43 UTC (rev 279796)
+++ branches/safari-612.1.23-branch/Source/WebKit/Shared/AccessibilityPreferences.h	2021-07-09 22:00:07 UTC (rev 279797)
@@ -27,10 +27,6 @@
 
 #include "ArgumentCoders.h"
 
-#if HAVE(MEDIA_ACCESSIBILITY_FRAMEWORK)
-#include <WebCore/CaptionUserPreferences.h>
-#endif
-
 #if HAVE(PER_APP_ACCESSIBILITY_PREFERENCES)
 #include "AccessibilitySupportSPI.h"
 #endif
@@ -45,10 +41,6 @@
     AXValueState darkenSystemColors { AXValueStateEmpty };
     AXValueState invertColorsEnabled { AXValueStateEmpty };
 #endif
-#if HAVE(MEDIA_ACCESSIBILITY_FRAMEWORK)
-    WebCore::CaptionUserPreferences::CaptionDisplayMode captionDisplayMode;
-    Vector<String> preferredLanguages;
-#endif
 };
 
 } // namespace WebKit

Modified: branches/safari-612.1.23-branch/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (279796 => 279797)


--- branches/safari-612.1.23-branch/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm	2021-07-09 21:54:43 UTC (rev 279796)
+++ branches/safari-612.1.23-branch/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm	2021-07-09 22:00:07 UTC (rev 279797)
@@ -168,6 +168,35 @@
     return m_bundleParameters.get();
 }
 
+static AccessibilityPreferences accessibilityPreferences()
+{
+    AccessibilityPreferences preferences;
+#if HAVE(PER_APP_ACCESSIBILITY_PREFERENCES)
+    auto appId = WebCore::applicationBundleIdentifier().createCFString();
+
+    preferences.reduceMotionEnabled = _AXSReduceMotionEnabledApp(appId.get());
+    preferences.increaseButtonLegibility = _AXSIncreaseButtonLegibilityApp(appId.get());
+    preferences.enhanceTextLegibility = _AXSEnhanceTextLegibilityEnabledApp(appId.get());
+    preferences.darkenSystemColors = _AXDarkenSystemColorsApp(appId.get());
+    preferences.invertColorsEnabled = _AXSInvertColorsEnabledApp(appId.get());
+#endif
+    return preferences;
+}
+
+#if HAVE(MEDIA_ACCESSIBILITY_FRAMEWORK)
+void WebProcessPool::setMediaAccessibilityPreferences(WebProcessProxy& process)
+{
+    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), [weakProcess = makeWeakPtr(process)] {
+        auto captionDisplayMode = WebCore::CaptionUserPreferencesMediaAF::platformCaptionDisplayMode();
+        auto preferredLanguages = WebCore::CaptionUserPreferencesMediaAF::platformPreferredLanguages();
+        callOnMainRunLoop([weakProcess, captionDisplayMode, preferredLanguages] {
+            if (weakProcess)
+                weakProcess->send(Messages::WebProcess::SetMediaAccessibilityPreferences(captionDisplayMode, preferredLanguages), 0);
+        });
+    });
+}
+#endif
+
 void WebProcessPool::platformInitialize()
 {
     registerUserDefaultsIfNeeded();
@@ -273,25 +302,6 @@
 #endif
 }
 
-static AccessibilityPreferences accessibilityPreferences()
-{
-    AccessibilityPreferences preferences;
-#if HAVE(PER_APP_ACCESSIBILITY_PREFERENCES)
-    auto appId = WebCore::applicationBundleIdentifier().createCFString();
-
-    preferences.reduceMotionEnabled = _AXSReduceMotionEnabledApp(appId.get());
-    preferences.increaseButtonLegibility = _AXSIncreaseButtonLegibilityApp(appId.get());
-    preferences.enhanceTextLegibility = _AXSEnhanceTextLegibilityEnabledApp(appId.get());
-    preferences.darkenSystemColors = _AXDarkenSystemColorsApp(appId.get());
-    preferences.invertColorsEnabled = _AXSInvertColorsEnabledApp(appId.get());
-#endif
-#if HAVE(MEDIA_ACCESSIBILITY_FRAMEWORK)
-    preferences.captionDisplayMode = WebCore::CaptionUserPreferencesMediaAF::platformCaptionDisplayMode();
-    preferences.preferredLanguages = WebCore::CaptionUserPreferencesMediaAF::platformPreferredLanguages();
-#endif
-    return preferences;
-}
-
 void WebProcessPool::platformInitializeWebProcess(const WebProcessProxy& process, WebProcessCreationParameters& parameters)
 {
     parameters.mediaMIMETypes = process.mediaMIMETypes();
@@ -598,6 +608,16 @@
     pool->sendToAllProcesses(Messages::WebProcess::AccessibilityPreferencesDidChange(accessibilityPreferences()));
 }
 
+#if HAVE(MEDIA_ACCESSIBILITY_FRAMEWORK)
+void WebProcessPool::mediaAccessibilityPreferencesChangedCallback(CFNotificationCenterRef, void *observer, CFStringRef name, const void *, CFDictionaryRef userInfo)
+{
+    auto* pool = reinterpret_cast<WebProcessPool*>(observer);
+    auto captionDisplayMode = WebCore::CaptionUserPreferencesMediaAF::platformCaptionDisplayMode();
+    auto preferredLanguages = WebCore::CaptionUserPreferencesMediaAF::platformPreferredLanguages();
+    pool->sendToAllProcesses(Messages::WebProcess::SetMediaAccessibilityPreferences(captionDisplayMode, preferredLanguages));
+}
+#endif
+
 #if PLATFORM(MAC)
 void WebProcessPool::colorPreferencesDidChangeCallback(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo)
 {
@@ -735,7 +755,7 @@
     CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), this, accessibilityPreferencesChangedCallback, kAXSInvertColorsEnabledNotification, nullptr, CFNotificationSuspensionBehaviorCoalesce);
 #endif
 #if HAVE(MEDIA_ACCESSIBILITY_FRAMEWORK)
-    CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), this, accessibilityPreferencesChangedCallback, kMAXCaptionAppearanceSettingsChangedNotification, nullptr, CFNotificationSuspensionBehaviorCoalesce);
+    CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), this, mediaAccessibilityPreferencesChangedCallback, kMAXCaptionAppearanceSettingsChangedNotification, nullptr, CFNotificationSuspensionBehaviorCoalesce);
 #endif
 }
 

Modified: branches/safari-612.1.23-branch/Source/WebKit/UIProcess/WebProcessPool.cpp (279796 => 279797)


--- branches/safari-612.1.23-branch/Source/WebKit/UIProcess/WebProcessPool.cpp	2021-07-09 21:54:43 UTC (rev 279796)
+++ branches/safari-612.1.23-branch/Source/WebKit/UIProcess/WebProcessPool.cpp	2021-07-09 22:00:07 UTC (rev 279797)
@@ -814,6 +814,10 @@
 
     process.send(Messages::WebProcess::InitializeWebProcess(parameters), 0);
 
+#if HAVE(MEDIA_ACCESSIBILITY_FRAMEWORK)
+    setMediaAccessibilityPreferences(process);
+#endif
+
     if (m_automationSession)
         process.send(Messages::WebProcess::EnsureAutomationSessionProxy(m_automationSession->sessionIdentifier()), 0);
 

Modified: branches/safari-612.1.23-branch/Source/WebKit/UIProcess/WebProcessPool.h (279796 => 279797)


--- branches/safari-612.1.23-branch/Source/WebKit/UIProcess/WebProcessPool.h	2021-07-09 21:54:43 UTC (rev 279796)
+++ branches/safari-612.1.23-branch/Source/WebKit/UIProcess/WebProcessPool.h	2021-07-09 22:00:07 UTC (rev 279797)
@@ -575,6 +575,10 @@
     static void accessibilityPreferencesChangedCallback(CFNotificationCenterRef, void *observer, CFStringRef name, const void *, CFDictionaryRef userInfo);
 #endif
 
+#if HAVE(MEDIA_ACCESSIBILITY_FRAMEWORK)
+    static void mediaAccessibilityPreferencesChangedCallback(CFNotificationCenterRef, void *observer, CFStringRef name, const void *, CFDictionaryRef userInfo);
+#endif
+
 #if PLATFORM(MAC)
     static void colorPreferencesDidChangeCallback(CFNotificationCenterRef, void *observer, CFStringRef name, const void *, CFDictionaryRef userInfo);
 #endif
@@ -591,6 +595,10 @@
     void systemDidWake() final;
 #endif
 
+#if HAVE(MEDIA_ACCESSIBILITY_FRAMEWORK)
+    void setMediaAccessibilityPreferences(WebProcessProxy&);
+#endif
+
     Ref<API::ProcessPoolConfiguration> m_configuration;
 
     IPC::MessageReceiverMap m_messageReceiverMap;

Modified: branches/safari-612.1.23-branch/Source/WebKit/WebProcess/WebProcess.h (279796 => 279797)


--- branches/safari-612.1.23-branch/Source/WebKit/WebProcess/WebProcess.h	2021-07-09 21:54:43 UTC (rev 279796)
+++ branches/safari-612.1.23-branch/Source/WebKit/WebProcess/WebProcess.h	2021-07-09 22:00:07 UTC (rev 279797)
@@ -71,6 +71,10 @@
 #include <WebCore/PlatformDisplayLibWPE.h>
 #endif
 
+#if HAVE(MEDIA_ACCESSIBILITY_FRAMEWORK)
+#include <WebCore/CaptionUserPreferences.h>
+#endif
+
 namespace API {
 class Object;
 }
@@ -567,6 +571,9 @@
 #endif
 
     void accessibilityPreferencesDidChange(const AccessibilityPreferences&);
+#if HAVE(MEDIA_ACCESSIBILITY_FRAMEWORK)
+    void setMediaAccessibilityPreferences(WebCore::CaptionUserPreferences::CaptionDisplayMode, const Vector<String>&);
+#endif
 
 #if PLATFORM(MAC) || PLATFORM(MACCATALYST)
     void colorPreferencesDidChange();

Modified: branches/safari-612.1.23-branch/Source/WebKit/WebProcess/WebProcess.messages.in (279796 => 279797)


--- branches/safari-612.1.23-branch/Source/WebKit/WebProcess/WebProcess.messages.in	2021-07-09 21:54:43 UTC (rev 279796)
+++ branches/safari-612.1.23-branch/Source/WebKit/WebProcess/WebProcess.messages.in	2021-07-09 22:00:07 UTC (rev 279797)
@@ -202,4 +202,8 @@
     ConsumeAudioComponentRegistrations(IPC::SharedBufferDataReference registrationData)
     AccessibilityPreferencesDidChange(struct WebKit::AccessibilityPreferences accessibilityPreferences)
 #endif
+
+#if HAVE(MEDIA_ACCESSIBILITY_FRAMEWORK)
+    SetMediaAccessibilityPreferences(WebCore::CaptionUserPreferences::CaptionDisplayMode displayMode, Vector<String> languages)
+#endif
 }

Modified: branches/safari-612.1.23-branch/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm (279796 => 279797)


--- branches/safari-612.1.23-branch/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm	2021-07-09 21:54:43 UTC (rev 279796)
+++ branches/safari-612.1.23-branch/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm	2021-07-09 22:00:07 UTC (rev 279797)
@@ -1111,11 +1111,15 @@
     if (_AXSInvertColorsEnabledApp(appID) != invertColorsEnabled)
         _AXSInvertColorsSetEnabledApp(invertColorsEnabled, appID);
 #endif
+}
+
 #if HAVE(MEDIA_ACCESSIBILITY_FRAMEWORK)
-    WebCore::CaptionUserPreferencesMediaAF::setCachedCaptionDisplayMode(preferences.captionDisplayMode);
-    WebCore::CaptionUserPreferencesMediaAF::setCachedPreferredLanguages(preferences.preferredLanguages);
+void WebProcess::setMediaAccessibilityPreferences(WebCore::CaptionUserPreferences::CaptionDisplayMode captionDisplayMode, const Vector<String>& preferredLanguages)
+{
+    WebCore::CaptionUserPreferencesMediaAF::setCachedCaptionDisplayMode(captionDisplayMode);
+    WebCore::CaptionUserPreferencesMediaAF::setCachedPreferredLanguages(preferredLanguages);
+}
 #endif
-}
 
 #if PLATFORM(MAC) || PLATFORM(MACCATALYST)
 void WebProcess::colorPreferencesDidChange()
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to