Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 794f0ec1309b56e62c53019b8906a24942cd8c50
      
https://github.com/WebKit/WebKit/commit/794f0ec1309b56e62c53019b8906a24942cd8c50
  Author: Jean Haberer <[email protected]>
  Date:   2026-04-14 (Tue, 14 Apr 2026)

  Changed paths:
    M Source/WebCore/dom/DocumentImmersive.cpp
    M Source/WebCore/dom/DocumentImmersive.h
    M Source/WebKit/Shared/API/Cocoa/WebKit.h
    M Source/WebKit/Shared/API/Cocoa/WebKitPrivate.h
    M Source/WebKit/SourcesCocoa.txt
    A Source/WebKit/UIProcess/API/Cocoa/WKImmersiveEnvironment.h
    A Source/WebKit/UIProcess/API/Cocoa/WKImmersiveEnvironment.mm
    A Source/WebKit/UIProcess/API/Cocoa/WKImmersiveEnvironmentDelegate.h
    A Source/WebKit/UIProcess/API/Cocoa/WKImmersiveEnvironmentInternal.h
    A Source/WebKit/UIProcess/API/Cocoa/WKImmersiveEnvironmentPrivate.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebView.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration+Extras.swift
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecord.mm
    R Source/WebKit/UIProcess/API/Cocoa/_WKImmersiveEnvironmentDelegate.h
    M Source/WebKit/UIProcess/API/Swift/WebPage+Configuration.swift
    M Source/WebKit/UIProcess/API/Swift/WebPage+FrameInfo.swift
    A Source/WebKit/UIProcess/API/Swift/WebPage+ImmersiveEnvironment.swift
    M Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.h
    M Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm
    M Source/WebKit/UIProcess/Downloads/DownloadProxyMap.h
    M Source/WebKit/UIProcess/PageClient.h
    M Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalConnection.mm
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/UIProcess/ios/WKVisibilityPropagationView.mm
    M Source/WebKit/UIProcess/ios/forms/WKFileUploadPanel.mm
    M Source/WebKit/UIProcess/mac/WebViewImpl.h
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp
    M Source/WebKit/WebProcess/WebPage/WebPage.h
    M Source/WebKit/WebProcess/WebPage/WebPage.messages.in
    M Source/WebKit/_WebKit_SwiftUI/API/View+WebViewModifiers.swift
    A Source/WebKit/_WebKit_SwiftUI/API/WebViewImmersiveEnvironmentView.swift
    M 
Source/WebKit/_WebKit_SwiftUI/Implementation/EnvironmentValues+Extras.swift
    M Source/WebKit/_WebKit_SwiftUI/Implementation/ViewModifierContexts.swift
    M Source/WebKit/_WebKit_SwiftUI/Implementation/WebViewRepresentable.swift
    M Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm
    M Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm
    M Tools/WebKitTestRunner/ios/TestControllerIOS.mm

  Log Message:
  -----------
  Move Client Website Environment SPI to API
https://bugs.webkit.org/show_bug.cgi?id=311751
rdar://164244457

Reviewed by Etienne Segonzac and Abrar Rahman Protyasha.

Promote immersive environment SPI to public API

* Source/WebCore/dom/DocumentImmersive.cpp:
* Source/WebCore/dom/DocumentImmersive.h:
Add CompletionHandler parameter so callers can await dismissal.

* Source/WebKit/UIProcess/API/Cocoa/WKImmersiveEnvironment.h: Added.
* Source/WebKit/UIProcess/API/Cocoa/WKImmersiveEnvironment.mm: Added.
* Source/WebKit/UIProcess/API/Cocoa/WKImmersiveEnvironmentInternal.h: Added.
* Source/WebKit/UIProcess/API/Cocoa/WKImmersiveEnvironmentPrivate.h: Added.
New public class wrapping a website-provided immersive environment.

* Source/WebKit/UIProcess/API/Cocoa/WKImmersiveEnvironmentDelegate.h: Added.
New public delegate protocol for authorization, presentation, and dismissal.

* Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:
Add public immersive environment delegate and dismiss API.
Adopt new delegate protocol and WKImmersiveEnvironment object.

* Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
Rename from underscore-prefixed SPI selectors.

* Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration+Extras.swift:
Forward allowsImmersiveEnvironments from Swift Configuration wrapper.

* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecord.mm:
* Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:
*Source/WebKit/UIProcess/ios/forms/WKFileUploadPanel.mm:
* Source/WebKit/UIProcess/ios/WKVisibilityPropagationView.mm:
Unified source build fix.

* Source/WebKit/UIProcess/API/Swift/WebPage+FrameInfo.swift:
Make init @_spi(CrossImportOverlay) public for _WebKit_SwiftUI access.

* Source/WebKit/UIProcess/API/Swift/WebPage+Configuration.swift:
* Source/WebKit/UIProcess/API/Swift/WebPage+ImmersiveEnvironment.swift: Added.
* Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.h:
* Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm:
* Source/WebKit/UIProcess/PageClient.h:
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
Switch from URL tracking to FrameInfo tracking with security origin
comparison. Make exitImmersive async with sendWithAsyncReply.

* Source/WebKit/_WebKit_SwiftUI/API/View+WebViewModifiers.swift:
New SwiftUI modifier for immersive environment lifecycle management.

* Source/WebKit/_WebKit_SwiftUI/API/WebViewImmersiveEnvironmentView.swift: 
Added.
* Source/WebKit/_WebKit_SwiftUI/Implementation/EnvironmentValues+Extras.swift:
* Source/WebKit/_WebKit_SwiftUI/Implementation/ViewModifierContexts.swift:
* Source/WebKit/_WebKit_SwiftUI/Implementation/WebViewRepresentable.swift:
Add ImmersiveEnvironmentDelegateAdapter bridging SwiftUI callbacks to
WKImmersiveEnvironmentDelegate. Wire up in coordinator update.

* Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm:
* Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:
* Tools/WebKitTestRunner/ios/TestControllerIOS.mm:
Adopt WKImmersiveEnvironmentDelegate public protocol and updated selectors.

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



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

Reply via email to