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

Reply via email to