Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 7a7b9adb21714c7261570a31a84d3f5fde2eda9a
https://github.com/WebKit/WebKit/commit/7a7b9adb21714c7261570a31a84d3f5fde2eda9a
Author: Ben Nham <[email protected]>
Date: 2026-09-30 (Wed, 30 Sep 2026)
Changed paths:
M Source/WebCore/page/RemoteFrameView.cpp
M Source/WebCore/page/RemoteFrameView.h
M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm
Log Message:
-----------
[Site Isolation] Scrolling in one process should not trigger redisplay in
another process
https://bugs.webkit.org/show_bug.cgi?id=325677
rdar://problem/188727951
Reviewed by Simon Fraser.
When a local frame scrolls, it broadcasts its scroll position to the other
processes in the
page. Each of those processes then applies the scroll position to the
RemoteFrameView associated
with that frame. This eventually calls ScrollView::scrollContentsSlowPath,
which sends a
PageDidScroll IPC to the UIProcess and schedules a redisplay of the process's
drawing area.
This work is unnecessary. The process that scrolled already sends a
PageDidScroll IPC and already
repaints the scrolled frame's contents.
Fix this by making RemoteFrameView::scrollContentsSlowPath a no-op.
Test: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm
* Source/WebCore/page/RemoteFrameView.cpp:
(WebCore::RemoteFrameView::scrollContentsSlowPath):
* Source/WebCore/page/RemoteFrameView.h:
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm:
(-[SiteIsolationPageScrollCounter _webViewDidScroll:]):
(TestWebKitAPI::(SiteIsolation,
CrossSiteIframeProcessesDoNotReportMainFrameScroll)):
Canonical link: https://commits.webkit.org/322289@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications