[webkit-changes] [WebKit/WebKit] a11141: Regression(284719 at main): Message check in NetworkC...

Sihui noreply at github.com
Tue Oct 22 12:14:41 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a11141aec40e4c9852477bc6634d7a57f4a80b81
      https://github.com/WebKit/WebKit/commit/a11141aec40e4c9852477bc6634d7a57f4a80b81
  Author: Sihui Liu <sihui_liu at apple.com>
  Date:   2024-10-22 (Tue, 22 Oct 2024)

  Changed paths:
    M Source/WebKit/UIProcess/API/APINavigationAction.h
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/Navigation.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm

  Log Message:
  -----------
  Regression(284719 at main): Message check in NetworkConnectionToWebProcess::cookiesEnabled failed
https://bugs.webkit.org/show_bug.cgi?id=281896
rdar://137986334

Reviewed by Alex Christensen.

284719 at main added an early return in WebPageProxy::receivedNavigationActionPolicyDecision, so that process does not swap
when navigated frame is main frame but does not equal to the main frame of WebPageProxy. This is not right because a
navigated frame does not necessarily equal to the main frame of WebPageProxy, and we still need to swap process in that
case.

See the new API test for an example: on first redirection from site1.example to site2.example, a new main frame is
created and loaded in a new web process, and WebPageProxy still tracks the old main frame since the load is not
committed yet; on second redirection from site2.example to site1.example, the navigated frame is the new frame, which
does not match the main frame of WebPageProxy. With existing implementation, the load of site1.example will continue in
the process of site2.example (due to the early return), but that process is not prepared for the load, i.e.
AddAllowedFirstPartyForCookies for site1.example is not sent to that process, and that leads to message check failure
when site1.example (loaded in process of site2.example) performs cookie operations.

To fix this, this patch takes a different approach from 284719 at main by only making early return in
receivedNavigationActionPolicyDecisionwhen main frame of WebPageProxy is changed after receving navigation request and
before decision is made.

Test: ProcessSwap.CookieAccessAfterMultipleRedirects

* Source/WebKit/UIProcess/API/APINavigationAction.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::receivedNavigationActionPolicyDecision):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/Navigation.mm:
(TEST(WKNavigation, HTTPSOnlyWithHTTPRedirect)):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
((ProcessSwap, CookieAccessAfterMultipleRedirects)):

Canonical link: https://commits.webkit.org/285565@main



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list