Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: ce23da46b48534c82ffcf00820055b85a6ccccb1
https://github.com/WebKit/WebKit/commit/ce23da46b48534c82ffcf00820055b85a6ccccb1
Author: Brady Eidson <[email protected]>
Date: 2026-01-28 (Wed, 28 Jan 2026)
Changed paths:
M
LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/open-close/open-features-is-popup-condition_combination-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/open-close/open-features-is-popup-condition_position-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/open-close/open-features-is-popup-condition_single-1-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/open-close/open-features-is-popup-condition_single-2-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/window-open-popup-behavior-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/window-open-windowfeatures-values-expected.txt
M LayoutTests/platform/mac-wk1/TestExpectations
M Source/WebCore/loader/EmptyClients.h
M Source/WebCore/page/BarProp.cpp
M Source/WebCore/page/BarProp.h
M Source/WebCore/page/Chrome.cpp
M Source/WebCore/page/Chrome.h
M Source/WebCore/page/ChromeClient.h
M Source/WebCore/page/LocalDOMWindow.cpp
M Source/WebKit/Shared/WebPageCreationParameters.h
M Source/WebKit/Shared/WebPageCreationParameters.serialization.in
M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h
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 Source/WebKit/WebProcess/WebPage/WebPage.messages.in
M Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.h
M Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/SiteIsolation.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm
Log Message:
-----------
`window.<blank>bar.visible` should be based on the "is popup" flag of the
window, and not the real UI values
rdar://166554327
https://bugs.webkit.org/show_bug.cgi?id=306442
Reviewed by Alex Christensen and Anne van Kesteren.
There exists the following accessors in JavaScript:
window.locationbar.visible
window.menubar.visible
window.personalbar.visible
window.scrollbars.visible
window.statusbar.visible
window.toolbar.visible
These properties were meant to give JavaScript information about the
decorations of the browser window
that surround the web content itself.
For decades, WebKit has attempted to report the accurate values for those
properties by allowing the
client (e.g. Safari) to keep the values updated.
However the spec changed to account for privacy and interop in the modern web.
https://html.spec.whatwg.org/multipage/nav-history-apis.html#browser-interface-elements
This patch changes the behavior of these accessors in WebCore such that they
solely report based on
the "is popup" flag, and completely ignore the actual visibility of the browser
interface elements.
When reporting "real" values, WebKit relied on the embedding app to keep the
values up to date via
UI delegate methods or property setters on `WKWebView`.
Since WebKit can do the "is popup" calculation itself, those methods are no
longer needed.
This patch removes them and/or makes them a no-op for bin-compat.
No new tests - Covered by changes to existing test expectations, and removed a
now irrelevant API test.
*
LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/open-close/open-features-is-popup-condition_combination-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/open-close/open-features-is-popup-condition_position-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/open-close/open-features-is-popup-condition_single-1-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/open-close/open-features-is-popup-condition_single-2-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/window-open-popup-behavior-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/window-open-windowfeatures-values-expected.txt:
* LayoutTests/platform/mac-wk1/TestExpectations:
* Source/WebCore/loader/EmptyClients.h:
* Source/WebCore/page/BarProp.cpp:
(WebCore::BarProp::BarProp):
(WebCore::BarProp::visible const):
* Source/WebCore/page/BarProp.h:
* Source/WebCore/page/Chrome.cpp:
(WebCore::Chrome::isPopup const):
(WebCore::Chrome::toolbarsVisible const): Deleted.
(WebCore::Chrome::statusbarVisible const): Deleted.
(WebCore::Chrome::scrollbarsVisible const): Deleted.
(WebCore::Chrome::menubarVisible const): Deleted.
* Source/WebCore/page/Chrome.h:
* Source/WebCore/page/ChromeClient.h:
* Source/WebCore/page/LocalDOMWindow.cpp:
(WebCore::LocalDOMWindow::locationbar):
(WebCore::LocalDOMWindow::menubar):
(WebCore::LocalDOMWindow::personalbar):
(WebCore::LocalDOMWindow::scrollbars):
(WebCore::LocalDOMWindow::statusbar):
(WebCore::LocalDOMWindow::toolbar):
* Source/WebKit/Shared/WebPageCreationParameters.h:
* Source/WebKit/Shared/WebPageCreationParameters.serialization.in:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setStatusBarIsVisible:]):
(-[WKWebView _statusBarIsVisible]):
(-[WKWebView _setMenuBarIsVisible:]):
(-[WKWebView _menuBarIsVisible]):
(-[WKWebView _setToolbarsAreVisible:]):
(-[WKWebView _toolbarsAreVisible]):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::m_pageForTesting):
(WebKit::WebPageProxy::creationParameters):
(WebKit::m_statusBarIsVisible): Deleted.
(WebKit::m_menuBarIsVisible): Deleted.
(WebKit::m_toolbarsAreVisible): Deleted.
(WebKit::WebPageProxy::setToolbarsAreVisible): Deleted.
(WebKit::WebPageProxy::setMenuBarIsVisible): Deleted.
(WebKit::WebPageProxy::setStatusBarIsVisible): Deleted.
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::createWindow):
(WebKit::WebChromeClient::isPopup const):
(WebKit::WebChromeClient::toolbarsVisible const): Deleted.
(WebKit::WebChromeClient::statusbarVisible const): Deleted.
(WebKit::WebChromeClient::scrollbarsVisible const): Deleted.
(WebKit::WebChromeClient::menubarVisible const): Deleted.
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::m_isPopup):
(WebKit::m_backgroundTextExtractionEnabled): Deleted.
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:
* Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.h:
* Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm:
(WebChromeClient::createWindow):
(WebChromeClient::isPopup const):
(WebChromeClient::setToolbarsVisible): Deleted.
(WebChromeClient::toolbarsVisible const): Deleted.
(WebChromeClient::setStatusbarVisible): Deleted.
(WebChromeClient::statusbarVisible const): Deleted.
(WebChromeClient::setScrollbarsVisible): Deleted.
(WebChromeClient::scrollbarsVisible const): Deleted.
(WebChromeClient::setMenubarVisible): Deleted.
(WebChromeClient::menubarVisible const): Deleted.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/SiteIsolation.mm:
(TestWebKitAPI::(SiteIsolation, StatusBarVisibility)):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
((WebKit, ToolbarVisible)): Deleted.
Canonical link: https://commits.webkit.org/306391@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications