Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3a36d0249db3a536284e31496c9e88c6b0ef43ac
      
https://github.com/WebKit/WebKit/commit/3a36d0249db3a536284e31496c9e88c6b0ef43ac
  Author: Jean Haberer <[email protected]>
  Date:   2026-02-13 (Fri, 13 Feb 2026)

  Changed paths:
    M 
LayoutTests/model-element/immersive/model-element-immersive-iframe-restrictions-expected.txt
    M 
LayoutTests/model-element/immersive/model-element-immersive-iframe-restrictions.html
    M Source/WebCore/dom/DocumentImmersive.cpp
    M Source/WebCore/page/ChromeClient.h
    M Source/WebKit/Shared/WebPageCreationParameters.h
    M Source/WebKit/Shared/WebPageCreationParameters.serialization.in
    M Source/WebKit/UIProcess/API/APIPageConfiguration.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp
    M Source/WebKit/WebProcess/WebPage/WebPage.h
    M Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm

  Log Message:
  -----------
  Plumb WebView configuration signal to allow immersive elements
https://bugs.webkit.org/show_bug.cgi?id=307550
rdar://168579137

Reviewed by Etienne Segonzac.

Add a configuration parameter on WKWebViewConfiguration so that clients
can let webpages know that the immersive element feature is supported.
This enables websites to adapt their UI depending on the support of the feature.

* 
LayoutTests/model-element/immersive/model-element-immersive-iframe-restrictions-expected.txt:
* 
LayoutTests/model-element/immersive/model-element-immersive-iframe-restrictions.html:
Test is now passing!

* Source/WebCore/dom/DocumentImmersive.cpp:
(WebCore::immersiveAvailabilityError):
(WebCore::DocumentImmersive::immersiveEnabled):
(WebCore::DocumentImmersive::requestImmersive):
(WebCore::DocumentImmersive::beginImmersiveRequest):
(WebCore::DocumentImmersive::createModelPlayerForImmersive):
(WebCore::DocumentImmersive::presentImmersiveElement):
Refactor the error handling to avoid duplicate code.

* Source/WebCore/page/ChromeClient.h:
(WebCore::ChromeClient::supportsImmersiveElement const):
* Source/WebKit/Shared/WebPageCreationParameters.h:
* Source/WebKit/Shared/WebPageCreationParameters.serialization.in:
* Source/WebKit/UIProcess/API/APIPageConfiguration.h:
(API::PageConfiguration::allowsImmersiveEnvironments const):
(API::PageConfiguration::setAllowsImmersiveEnvironments):
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration _setAllowsImmersiveEnvironments:]):
(-[WKWebViewConfiguration _allowsImmersiveEnvironments]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::supportsImmersiveElement const):
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::m_allowsImmersiveEnvironments):
(WebKit::WebPage::allowsImmersiveEnvironments const):
(WebKit::m_isPopup): Deleted.
* Source/WebKit/WebProcess/WebPage/WebPage.h:
Plumb the configuration from the UI Process to the web process.

* Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::TestController::platformCreateWebView):
Add the configuration boolean in the test controller that runs
the Layout Tests since this one supports immersive elements.

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



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

Reply via email to