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

Reply via email to