Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 3e82af88174cd6d92a259e777a6305ccb96c9242
https://github.com/WebKit/WebKit/commit/3e82af88174cd6d92a259e777a6305ccb96c9242
Author: Kiet Ho <[email protected]>
Date: 2026-06-03 (Wed, 03 Jun 2026)
Changed paths:
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/page/Frame.cpp
M Source/WebCore/page/FrameTreeSyncData.in
M Source/WebCore/page/Page.cpp
M Source/WebCore/page/RemoteFrame.cpp
A Source/WebCore/page/RemoteFrameLayoutInfo.cpp
M Source/WebCore/page/RemoteFrameLayoutInfo.h
M Source/WebCore/page/RemoteFrameView.cpp
M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
M Source/WebKit/UIProcess/WebFrameProxy.cpp
Log Message:
-----------
[Site Isolation] Make RemoteFrameLayoutInfo ref-counted
rdar://178482662
https://bugs.webkit.org/show_bug.cgi?id=316053
Reviewed by Megan Gardner.
RemoteFrameLayoutInfo is used as values in the ChildrenFrameLayoutInfo
hashmap in FrameTreeSyncData. HashMap values are limited to 150 bytes in
size, and upcoming patches will exceed this limit by adding 2
TransformationMatrix to the struct. Prepare for it by making
RemoteFrameLayoutInfo ref-counted and store it in the HashMap
as Ref<> instead.
Preferably we should use UniqueRef<>, but the way FrameTreeSyncData
is implemented involves lots of data copies. UniqueRef is not copyable,
so FrameTreeSyncData (more specifically, the code generator in
generate-process-sync-data.py) will have to be changed to avoid copying
stuff around in favor of moving, which is a project on its own.
Refactoring - tested by existing suites.
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/page/Frame.cpp:
(WebCore::Frame::updateFrameTreeSyncData):
* Source/WebCore/page/FrameTreeSyncData.in:
* Source/WebCore/page/Page.cpp:
(WebCore::Page::syncLocalFrameInfoToRemote):
* Source/WebCore/page/RemoteFrame.cpp:
(WebCore::RemoteFrame::usedZoomForChild const):
* Source/WebCore/page/RemoteFrameLayoutInfo.cpp: Copied from
Source/WebCore/page/RemoteFrameLayoutInfo.h.
(WebCore::RemoteFrameLayoutInfo::create):
(WebCore::RemoteFrameLayoutInfo::RemoteFrameLayoutInfo):
* Source/WebCore/page/RemoteFrameLayoutInfo.h:
(WebCore::RemoteFrameLayoutInfo::visibleRectInParent const):
(WebCore::RemoteFrameLayoutInfo::usedZoom const):
(WebCore::RemoteFrameLayoutInfo::contentBoxLocation const):
(WebCore::RemoteFrameLayoutInfo::ownerElementAppearance const):
* Source/WebCore/page/RemoteFrameView.cpp:
(WebCore::RemoteFrameView::visibleRectOfChild const):
(WebCore::RemoteFrameView::appearanceOfOwnerElementOfChildFrame const):
(WebCore::RemoteFrameView::childFrameOwnerContentBoxLocation const):
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::calculateFrameTreeSyncData const):
Canonical link: https://commits.webkit.org/314488@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications