Title: [279509] trunk/Source/WebKit
Revision
279509
Author
beid...@apple.com
Date
2021-07-02 10:57:12 -0700 (Fri, 02 Jul 2021)

Log Message

WebPageProxy::setAppHighlightsVisibility might send message from a background thread, ASSERTing
<rdar://80056481> and https://bugs.webkit.org/show_bug.cgi?id=227607

Reviewed by Chris Dumez.

* UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::setAppHighlightsVisibility):
(WebKit::WebPageProxy::setUpHighlightsObserver): The callback we get here is often on a background thread.
  So bounce it to main.

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (279508 => 279509)


--- trunk/Source/WebKit/ChangeLog	2021-07-02 17:55:45 UTC (rev 279508)
+++ trunk/Source/WebKit/ChangeLog	2021-07-02 17:57:12 UTC (rev 279509)
@@ -1,3 +1,15 @@
+2021-07-02  Brady Eidson  <beid...@apple.com>
+
+        WebPageProxy::setAppHighlightsVisibility might send message from a background thread, ASSERTing
+        <rdar://80056481> and https://bugs.webkit.org/show_bug.cgi?id=227607
+
+        Reviewed by Chris Dumez.
+
+        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
+        (WebKit::WebPageProxy::setAppHighlightsVisibility):
+        (WebKit::WebPageProxy::setUpHighlightsObserver): The callback we get here is often on a background thread.
+          So bounce it to main.
+
 2021-07-02  Philippe Normand  <pnorm...@igalia.com>
 
         [GTK] Add new revision variable in pkgconfig file

Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm (279508 => 279509)


--- trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm	2021-07-02 17:55:45 UTC (rev 279508)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm	2021-07-02 17:57:12 UTC (rev 279509)
@@ -587,6 +587,8 @@
 
 void WebPageProxy::setAppHighlightsVisibility(WebCore::HighlightVisibility appHighlightsVisibility)
 {
+    RELEASE_ASSERT(isMainRunLoop());
+    
     if (!hasRunningProcess())
         return;
 
@@ -604,9 +606,16 @@
 {
     if (m_appHighlightsObserver)
         return;
+
+    auto weakThis = makeWeakPtr(*this);
     auto updateAppHighlightsVisibility = ^(BOOL isVisible) {
-        setAppHighlightsVisibility(isVisible ? WebCore::HighlightVisibility::Visible : WebCore::HighlightVisibility::Hidden);
+        ensureOnMainRunLoop([weakThis, isVisible] {
+            if (!weakThis)
+                return;
+            weakThis->setAppHighlightsVisibility(isVisible ? WebCore::HighlightVisibility::Visible : WebCore::HighlightVisibility::Hidden);
+        });
     };
+    
     m_appHighlightsObserver = adoptNS([allocSYNotesActivationObserverInstance() initWithHandler:updateAppHighlightsVisibility]);
 }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to