Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: c417392ff6699863b87d98e0bac520a1d033f36f
https://github.com/WebKit/WebKit/commit/c417392ff6699863b87d98e0bac520a1d033f36f
Author: Lily Spiniolas <[email protected]>
Date: 2026-04-25 (Sat, 25 Apr 2026)
Changed paths:
M Source/WebKit/UIProcess/RemotePageProxy.cpp
M Source/WebKit/UIProcess/RemotePageProxy.h
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h
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] Swiping over scrollable web content in cross-origin frame
causes navigation instead of scrolling
https://bugs.webkit.org/show_bug.cgi?id=312311
rdar://174710629
Reviewed by Megan Gardner.
Check if every remote page can short circuit for horizontal wheel events
rather than only checking the page for the main frame process. WebPageProxy
now keeps track of whether the main frame process can short circuit, and
each RemotePageProxy keeps track of whether its respective page can short
circuit. When these values change, WebPageProxy updates a stored value
which represents whether the whole page should short circuit or not (including
cross-origin frames) based on each *PageProxy's
m_canShortCircuitHorizontalWheelEvents* value.
Updated the default value of m_canShortCircuitHorizontalWheelEvents in WebPage
from false to true so that, after layout, if it transitions from having no
scroll-bars to having scrollbars, this value will differ from the default and
trigger `updateCanShortCircuitHorizontalWheelEvents` to ensure
`m_canShortCircuitHorizontalWheelEvents` becomes `false` in `WebPageProxy`,
thus preventing scrolling from failing to work.
Test: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm
* Source/WebKit/UIProcess/RemotePageProxy.cpp:
(WebKit::RemotePageProxy::didReceiveMessage):
(WebKit::RemotePageProxy::setCanShortCircuitHorizontalWheelEvents):
* Source/WebKit/UIProcess/RemotePageProxy.h:
(WebKit::RemotePageProxy::canShortCircuitHorizontalWheelEvents const):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setCanShortCircuitHorizontalWheelEvents):
(WebKit::WebPageProxy::updateCanShortCircuitHorizontalWheelEvents):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::pageContainsAnyHorizontalScrollbars const):
(WebKit::WebPage::recomputeShortCircuitHorizontalWheelEventsState):
(WebKit::pageContainsAnyHorizontalScrollbars): Deleted.
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm:
(TestWebKitAPI::(SiteIsolation,
CrossOriginIframeWithHorizontalOverflowWillHandleHorizontalScrollEvents)):
(TestWebKitAPI::(SiteIsolation,
CrossOriginIframeWithoutHorizontalOverflowCanShortCircuitHorizontalScrollEvents)):
Canonical link: https://commits.webkit.org/312016@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications