Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 48950a6b5f62f770bd1c0f66e070addc5ce8320b
https://github.com/WebKit/WebKit/commit/48950a6b5f62f770bd1c0f66e070addc5ce8320b
Author: Kiet Ho <[email protected]>
Date: 2026-01-13 (Tue, 13 Jan 2026)
Changed paths:
M Source/WebCore/page/FrameTreeSyncData.in
M Source/WebCore/page/LocalFrameView.cpp
M Source/WebCore/page/LocalFrameView.h
M Source/WebCore/page/Page.cpp
M Source/WebCore/page/Page.h
M Source/WebCore/page/RemoteFrameView.cpp
M Source/WebKit/UIProcess/WebFrameProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.cpp
Log Message:
-----------
[Site Isolation] [intersection-observer] Synchronize layoutViewportRect and
visibleRectOfChild to RemoteFrameView
rdar://166915894
https://bugs.webkit.org/show_bug.cgi?id=304534
Reviewed by Simon Fraser.
Following 304640@main, this patch made LocalFrameView::{layoutViewportRect,
visibleRectOfChild}
available in the corresponding RemoteFrameView. After page rendering update,
the properties are
synchroinzed to RemoteFrameView using FrameTreeSyncData. layoutViewportRect is
synchronized as
the rect, while for visibleRectOfChild, we synchronize a pre-computed HashMap
of visible rects
for each child. RemoteFrameView then simply look up the HashMap to return the
visible rect.
* Source/WebCore/page/FrameTreeSyncData.in:
* Source/WebCore/page/LocalFrameView.cpp:
(WebCore::LocalFrameView::updateLayoutViewportRect):
* Source/WebCore/page/LocalFrameView.h:
* Source/WebCore/page/Page.cpp:
(WebCore::Page::syncLocalFrameInfoToRemote):
(WebCore::Page::doAfterUpdateRendering):
* Source/WebCore/page/Page.h:
* Source/WebCore/page/RemoteFrameView.cpp:
(WebCore::RemoteFrameView::layoutViewportRect const):
(WebCore::RemoteFrameView::visibleRectOfChild const):
* Source/WebKit/UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::calculateFrameTreeSyncData const):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::broadcastFrameTreeSyncData):
- Because of how layoutViewportRect/visibleRectOfChild is synchronized,
during navigation,
it's possible for the sync message to arrive at UI process after process
swapping. The UI
process will then MESSAGE_CHECK, because the process owns the frame when
the message is
sent, but then process swapping occurs and it no longer owns the frame. For
now, don't
MESSAGE_CHECK in this situation, and just silently ignore the message
instead.
Canonical link: https://commits.webkit.org/305560@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications