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