Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 8cf00b546db13546cf8d873cde72e8ab44ad8375
      
https://github.com/WebKit/WebKit/commit/8cf00b546db13546cf8d873cde72e8ab44ad8375
  Author: Alex Christensen <[email protected]>
  Date:   2026-09-14 (Mon, 14 Sep 2026)

  Changed paths:
    M Source/WebKit/UIProcess/WebPageProxy.cpp

  Log Message:
  -----------
  Ignore more messages from a site isolated frame's old process after 
committing navigation to new process
https://bugs.webkit.org/show_bug.cgi?id=323994
rdar://186044136

Reviewed by Charlie Wolfe.

This is similar to 316899@main.

After a load commits in a new process, we send LoadDidCommitInAnotherProcess to 
the old process,
but before that is received the old process continues operating uninformedly, 
and it can send any message.
Some messages need to be ignored because it's coming from an old process.

WebPageProxy::didSameDocumentNavigationForFrame manipulates 
WebFrameProxy::m_frameLoadState.m_url,
which can cause a future call to 
WebPageProxy::didSameDocumentNavigationForFrameViaJS to have messed up
state.  Ignoring the first call from the wrong process should help fix this 
issue.

I noticed WebPageProxy::didUpdateHistoryTitle had the same message check using 
m_legacyMainFrameProcess
so I updated it too.

This fixes an IPC-timing-dependent edge case that can't be hit reliably with a 
unit test.
Because of our fragment navigation limits, we can't even write a unit test that 
tries until it hits it.

* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
(WebKit::WebPageProxy::didUpdateHistoryTitle):

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



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

Reply via email to