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

Reply via email to