Title: [279983] trunk/Source/WebKit
Revision
279983
Author
[email protected]
Date
2021-07-16 04:16:13 -0700 (Fri, 16 Jul 2021)

Log Message

[GTK][WPE] PSON: accessibility doesn't work after a cross site navigation
https://bugs.webkit.org/show_bug.cgi?id=228021

Reviewed by Adrian Perez de Castro.

The provisional page is not handling the BindAccessibilityTree message and we never embed the new web process
plug into the UI process socket.

* UIProcess/ProvisionalPageProxy.cpp:
(WebKit::ProvisionalPageProxy::bindAccessibilityTree): Save the a11y plug ID.
(WebKit::ProvisionalPageProxy::didReceiveMessage): Handle BindAccessibilityTree message.
* UIProcess/ProvisionalPageProxy.h:
(WebKit::ProvisionalPageProxy::accessibilityPlugID): Returns the a11y plug ID.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::swapToProvisionalPage): If the provisional page has a plug ID, bind the a11y tree.

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (279982 => 279983)


--- trunk/Source/WebKit/ChangeLog	2021-07-16 08:43:04 UTC (rev 279982)
+++ trunk/Source/WebKit/ChangeLog	2021-07-16 11:16:13 UTC (rev 279983)
@@ -1,3 +1,21 @@
+2021-07-16  Carlos Garcia Campos  <[email protected]>
+
+        [GTK][WPE] PSON: accessibility doesn't work after a cross site navigation
+        https://bugs.webkit.org/show_bug.cgi?id=228021
+
+        Reviewed by Adrian Perez de Castro.
+
+        The provisional page is not handling the BindAccessibilityTree message and we never embed the new web process
+        plug into the UI process socket.
+
+        * UIProcess/ProvisionalPageProxy.cpp:
+        (WebKit::ProvisionalPageProxy::bindAccessibilityTree): Save the a11y plug ID.
+        (WebKit::ProvisionalPageProxy::didReceiveMessage): Handle BindAccessibilityTree message.
+        * UIProcess/ProvisionalPageProxy.h:
+        (WebKit::ProvisionalPageProxy::accessibilityPlugID): Returns the a11y plug ID.
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::swapToProvisionalPage): If the provisional page has a plug ID, bind the a11y tree.
+
 2021-07-15  Wenson Hsieh  <[email protected]>
 
         [iOS] WKMouseGestureRecognizer should not have failure requirements on WKDeferringGestureRecognizer

Modified: trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp (279982 => 279983)


--- trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp	2021-07-16 08:43:04 UTC (rev 279982)
+++ trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp	2021-07-16 11:16:13 UTC (rev 279983)
@@ -411,6 +411,13 @@
 }
 #endif
 
+#if PLATFORM(GTK) || PLATFORM(WPE)
+void ProvisionalPageProxy::bindAccessibilityTree(const String& plugID)
+{
+    m_accessibilityPlugID = plugID;
+}
+#endif
+
 #if ENABLE(CONTENT_FILTERING)
 void ProvisionalPageProxy::contentFilterDidBlockLoadForFrame(const WebCore::ContentFilterUnblockHandler& unblockHandler, FrameIdentifier frameID)
 {
@@ -470,6 +477,13 @@
     }
 #endif
 
+#if PLATFORM(GTK) || PLATFORM(WPE)
+    if (decoder.messageName() == Messages::WebPageProxy::BindAccessibilityTree::name()) {
+        IPC::handleMessage<Messages::WebPageProxy::BindAccessibilityTree>(decoder, this, &ProvisionalPageProxy::bindAccessibilityTree);
+        return;
+    }
+#endif
+
     if (decoder.messageName() == Messages::WebPageProxy::LogDiagnosticMessageFromWebProcess::name()) {
         IPC::handleMessage<Messages::WebPageProxy::LogDiagnosticMessageFromWebProcess>(decoder, this, &ProvisionalPageProxy::logDiagnosticMessageFromWebProcess);
         return;

Modified: trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.h (279982 => 279983)


--- trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.h	2021-07-16 08:43:04 UTC (rev 279982)
+++ trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.h	2021-07-16 11:16:13 UTC (rev 279983)
@@ -90,6 +90,9 @@
 #if PLATFORM(COCOA)
     Vector<uint8_t> takeAccessibilityToken() { return WTFMove(m_accessibilityToken); }
 #endif
+#if PLATFORM(GTK) || PLATFORM(WPE)
+    const String& accessibilityPlugID() { return m_accessibilityPlugID; }
+#endif
 #if HAVE(VISIBILITY_PROPAGATION_VIEW)
     LayerHostingContextID contextIDForVisibilityPropagationInWebProcess() const { return m_contextIDForVisibilityPropagationInWebProcess; }
 #if ENABLE(GPU_PROCESS)
@@ -145,6 +148,9 @@
 #if PLATFORM(COCOA)
     void registerWebProcessAccessibilityToken(const IPC::DataReference&);
 #endif
+#if PLATFORM(GTK) || PLATFORM(WPE)
+    void bindAccessibilityTree(const String&);
+#endif
 #if ENABLE(CONTENT_FILTERING)
     void contentFilterDidBlockLoadForFrame(const WebCore::ContentFilterUnblockHandler&, WebCore::FrameIdentifier);
 #endif
@@ -170,6 +176,9 @@
 #if PLATFORM(COCOA)
     Vector<uint8_t> m_accessibilityToken;
 #endif
+#if PLATFORM(GTK) || PLATFORM(WPE)
+    String m_accessibilityPlugID;
+#endif
 #if PLATFORM(IOS_FAMILY)
     UniqueRef<ProcessThrottler::ForegroundActivity> m_provisionalLoadActivity;
 #endif

Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (279982 => 279983)


--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2021-07-16 08:43:04 UTC (rev 279982)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2021-07-16 11:16:13 UTC (rev 279983)
@@ -969,6 +969,11 @@
     if (!accessibilityToken.isEmpty())
         registerWebProcessAccessibilityToken({ accessibilityToken.data(), accessibilityToken.size() });
 #endif
+#if PLATFORM(GTK) || PLATFORM(WPE)
+    auto accessibilityPlugID = provisionalPage->accessibilityPlugID();
+    if (!accessibilityPlugID.isEmpty())
+        bindAccessibilityTree(accessibilityPlugID);
+#endif
 }
 
 void WebPageProxy::finishAttachingToWebProcess(ProcessLaunchReason reason)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to