Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 918b43fcb7463e13f68137b9632551a9e1d0d1d6
      
https://github.com/WebKit/WebKit/commit/918b43fcb7463e13f68137b9632551a9e1d0d1d6
  Author: Lily Spiniolas <[email protected]>
  Date:   2026-06-01 (Mon, 01 Jun 2026)

  Changed paths:
    M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
    M Source/WTF/wtf/PlatformEnableCocoa.h
    M Source/WTF/wtf/cocoa/RuntimeApplicationChecksCocoa.h
    M Source/WebCore/page/Chrome.cpp
    M Source/WebCore/page/Chrome.h
    M Source/WebCore/page/ChromeClient.h
    M Source/WebCore/page/LocalFrameView.cpp
    M Source/WebCore/page/LocalFrameView.h
    M Source/WebCore/platform/BoxSides.h
    M Source/WebCore/platform/ScrollableArea.cpp
    M Source/WebCore/platform/ScrollableArea.h
    M Source/WebKit/Shared/Cocoa/WebPreferencesDefaultValuesCocoa.mm
    M Source/WebKit/Shared/WebPreferencesDefaultValues.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm
    M Source/WebKit/UIProcess/API/mac/WKWebViewMac.mm
    A Source/WebKit/UIProcess/Cocoa/TransientZoomState.h
    M Source/WebKit/UIProcess/PageClient.h
    M 
Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeDrawingAreaProxyMac.mm
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/UIProcess/WebPageProxy.messages.in
    M Source/WebKit/UIProcess/mac/PageClientImplMac.h
    M Source/WebKit/UIProcess/mac/PageClientImplMac.mm
    M Source/WebKit/UIProcess/mac/WebViewImpl.h
    M Source/WebKit/UIProcess/mac/WebViewImpl.mm
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp
    M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ObscuredContentInsets.mm

  Log Message:
  -----------
  [macOS] Page colors & content should not be visible in horizontal obscured 
content inset areas if banner view overlays installed
https://bugs.webkit.org/show_bug.cgi?id=315494
rdar://175474208

Reviewed by Aditya Keerthi.

When horizontal banner view overlays are installed on the page (more on this in
a later change), we don't want any page content or colors to display in the
leading obscured content inset area on page load; we only want the system 
background
color. While a page initially shouldn't have content or colors visible in the 
leading
inset area, if the user scrolls horizontally or pinches to zoom in a manner 
which
causes content to scroll underneath the leading inset area, then we should show
colors or content.

To achieve this when horizontal banner view overlays are detected, we install 
two new
color extensions on the left and right of the page which always use the system
background color. They move based on the scroll position of the web page to 
allow
content to display under inset areas when appropriate. We resize and relocate 
the top
scroll pocket in the same manner so that any sampled header colors don't display
in the horizontal inset areas until other page content or colors do as well. 
Finally,
sampled color extensions for left or right fixed elements now start with size 
zero
on the leading side on page load. After scrolling or zooming, the color 
extension
grows in order to stay aligned to the scroll pocket.

Test: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ObscuredContentInsets.mm

* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WTF/wtf/PlatformEnableCocoa.h:
* Source/WTF/wtf/cocoa/RuntimeApplicationChecksCocoa.h:
* Source/WebCore/page/Chrome.cpp:
(WebCore::Chrome::scrollOriginDidChange const):
* Source/WebCore/page/Chrome.h:
* Source/WebCore/page/ChromeClient.h:
(WebCore::ChromeClient::scrollOriginDidChange const):
* Source/WebCore/page/LocalFrameView.cpp:
(WebCore::LocalFrameView::scrollOriginDidChange):
* Source/WebCore/page/LocalFrameView.h:
* Source/WebCore/platform/BoxSides.h:
(WebCore::nameForBoxSide):
* Source/WebCore/platform/ScrollableArea.cpp:
(WebCore::ScrollableArea::setScrollOrigin):
* Source/WebCore/platform/ScrollableArea.h:
(WebCore::ScrollableArea::scrollOriginDidChange):
* Source/WebKit/Shared/Cocoa/WebPreferencesDefaultValuesCocoa.mm:
(WebKit::defaultHorizontalBannerViewOverlaysEnabled):
* Source/WebKit/Shared/WebPreferencesDefaultValues.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
(-[WKWebView _updateFixedColorExtensionViews]):
(-[WKWebView _updateFixedColorExtensionViewFrames]):
(-[WKWebView _hasDetectedHorizontalBannerViewOverlays]):
(-[WKWebView _updateAppearanceForSystemBackgroundColorExtensionViews]):
(-[WKWebView _shouldAdjustColorExtensionsForHorizontalBannerViewOverlays]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm:
(-[WKWebView 
_enableColorExtensionBehaviorForHorizontalBannerViewOverlaysForTesting]):
(-[WKWebView 
_disableColorExtensionBehaviorForHorizontalBannerViewOverlaysForTesting]):
(-[WKWebView 
_clearColorExtensionBehaviorOverridesForHorizontalBannerViewOverlaysForTesting]):
(-[WKWebView _cancelFixedColorExtensionFadeAnimationsForTesting]):
* Source/WebKit/UIProcess/API/mac/WKWebViewMac.mm:
(-[WKWebView viewDidChangeEffectiveAppearance]):
* Source/WebKit/UIProcess/Cocoa/TransientZoomState.h: Added.
* Source/WebKit/UIProcess/PageClient.h:
(WebKit::PageClient::didUpdateTransientZoomStateForScrollPocket):
(WebKit::PageClient::pageDidScroll):
* 
Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeDrawingAreaProxyMac.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxyMac::applyTransientZoomToLayer):
(WebKit::RemoteLayerTreeDrawingAreaProxyMac::removeTransientZoomFromLayer):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::pageDidScroll):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.messages.in:
* Source/WebKit/UIProcess/mac/PageClientImplMac.h:
* Source/WebKit/UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::pageDidScroll):
(WebKit::PageClientImpl::didUpdateTransientZoomStateForScrollPocket):
* Source/WebKit/UIProcess/mac/WebViewImpl.h:
* Source/WebKit/UIProcess/mac/WebViewImpl.mm:
(WebKit::WebViewImpl::setFrameSize):
(WebKit::WebViewImpl::setObscuredContentInsets):
(WebKit::WebViewImpl::pageDidScroll):
(WebKit::WebViewImpl::didChangeContentSize):
(WebKit::WebViewImpl::didUpdateTransientZoomStateForScrollPocket):
(WebKit::WebViewImpl::updateWebContentDistancesFromEdges):
(WebKit::WebViewImpl::updateScrollPocket):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::scrollOriginDidChange const):
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::pageDidScroll):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ObscuredContentInsets.mm:
(TestWebKitAPI::TEST(ObscuredContentInsets, 
ResizeScrollPocketWithoutHorizontalBannerView)):
(TestWebKitAPI::TEST(ObscuredContentInsets, 
ResizeScrollPocketWithHorizontalBannerView)):
(TestWebKitAPI::HorizontalBannerOverlays::setUpWebView):
(TestWebKitAPI::HorizontalBannerOverlays::capturePageState):
(TestWebKitAPI::HorizontalBannerOverlays::scrollTo):
(TestWebKitAPI::HorizontalBannerOverlays::computeExpectedFrames):
(TestWebKitAPI::HorizontalBannerOverlays::expectFrameEqualWithTolerance):
(TestWebKitAPI::HorizontalBannerOverlays::verifyFrames):
(TestWebKitAPI::HorizontalBannerOverlays::runSubcases):
(TestWebKitAPI::TEST(ObscuredContentInsets, 
HorizontalBannerOverlaysNoOverflow)):
(TestWebKitAPI::TEST(ObscuredContentInsets, 
HorizontalBannerOverlaysLeftToRightOverflow)):
(TestWebKitAPI::TEST(ObscuredContentInsets, 
HorizontalBannerOverlaysLeftToRightOverflowWithFixedHeader)):
(TestWebKitAPI::TEST(ObscuredContentInsets, 
HorizontalBannerOverlaysLeftToRightOverflowWithFixedHeaderAndSidebar)):
(TestWebKitAPI::TEST(ObscuredContentInsets, 
HorizontalBannerOverlaysRightToLeftOverflow)):
(TestWebKitAPI::TEST(ObscuredContentInsets, 
HorizontalBannerOverlaysRightToLeftOverflowWithFixedHeader)):
(TestWebKitAPI::TEST(ObscuredContentInsets, 
HorizontalBannerOverlaysRightToLeftOverflowWithFixedHeaderAndSidebar)):
(TestWebKitAPI::TEST(ObscuredContentInsets, 
HorizontalBannerOverlaysSystemBackgroundColorTracksAppearance)):
(TestWebKitAPI::TEST(ObscuredContentInsets, ResizeScrollPocket)):

Canonical link: https://commits.webkit.org/314338@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to