Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 62aac4712e428409da9ad8051bec78e8904e09c3
https://github.com/WebKit/WebKit/commit/62aac4712e428409da9ad8051bec78e8904e09c3
Author: Matt Woodrow <[email protected]>
Date: 2026-10-07 (Wed, 07 Oct 2026)
Changed paths:
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
M Source/WebKit/GPUProcess/graphics/RemoteSnapshot.cpp
M Source/WebKit/GPUProcess/graphics/RemoteSnapshot.h
M Source/WebKit/GPUProcess/graphics/RemoteSnapshotRecorder.cpp
M Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm
M Source/WebKit/WebProcess/WebPage/WebPage.cpp
M Source/WebKit/WebProcess/WebPage/WebPage.h
M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm
Log Message:
-----------
[Site Isolation] Printing kills a web process when a cross-site iframe
straddles a page break
https://bugs.webkit.org/show_bug.cgi?id=326284
<rdar://problem/189142157>
Reviewed by Ryosuke Niwa.
RemoteSnapshot expects to see each FrameId once, and we can record multiple
display lists if the iframe spans across pages.
As we record the display list for a RemoteSnapshot, keep the set of child frames
encoutered, and the union of the requested rects. Send a single IPC display
list recording to the subframe, that covers all the required pixels.
Add tests that confirm that we correctly composite the right subrect from the
combined recording.
Test: SiteIsolation.DrawPagesToPDFIncludesCrossSiteFrameOnEveryPageItSpans
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::sinkSnapshotRecorderIntoSnapshotFrame):
* Source/WebKit/GPUProcess/graphics/RemoteSnapshot.cpp:
(WebKit::RemoteSnapshot::addFrameReference):
(WebKit::RemoteSnapshot::setFrame):
* Source/WebKit/GPUProcess/graphics/RemoteSnapshot.h:
* Source/WebKit/GPUProcess/graphics/RemoteSnapshotRecorder.cpp:
(WebKit::RemoteSnapshotRecorder::drawSnapshotFrame):
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm:
(-[WKWebView _drawPagesToPDFSynchronouslyForTesting:pageCount:]): Takes the
number of pages to draw.
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::paintRemoteFrameContents):
(WebKit::WebPage::recordRemoteSnapshot):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm:
(TestWebKitAPI::TEST(SiteIsolation,
DrawPagesToPDFSynchronouslyIncludesCrossSiteFrames)):
(TestWebKitAPI::pdfPageHasColorAtPoint):
(TestWebKitAPI::TEST(SiteIsolation,
DrawPagesToPDFIncludesCrossSiteFrameOnEveryPageItSpans)):
Canonical link: https://commits.webkit.org/323018@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications