You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
Copy file name to clipboardExpand all lines: LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/open-close/open-features-is-popup-condition_combination-expected.txt
+9-9Lines changed: 9 additions & 9 deletions
Original file line number
Diff line number
Diff line change
@@ -2,15 +2,15 @@
2
2
PASS "location,toolbar,menubar,resizable,scrollbars,status" should set BarProp visibility to true
3
3
PASS "location,menubar,resizable,scrollbars,status" should set BarProp visibility to true
4
4
PASS "toolbar,menubar,resizable,scrollbars,status" should set BarProp visibility to true
5
-
FAIL "resizable,scrollbars,status" should set BarProp visibility to false assert_equals: window.locationbar.visible expected false but got true
6
-
FAIL "location=no,menubar=no,resizable,scrollbars,status" should set BarProp visibility to false assert_equals: window.locationbar.visible expected false but got true
7
-
FAIL "location,toolbar,resizable,scrollbars,status" should set BarProp visibility to false assert_equals: window.locationbar.visible expected false but got true
5
+
PASS "resizable,scrollbars,status" should set BarProp visibility to false
6
+
PASS "location=no,menubar=no,resizable,scrollbars,status" should set BarProp visibility to false
7
+
PASS "location,toolbar,resizable,scrollbars,status" should set BarProp visibility to false
8
8
PASS "location,toolbar,menubar,scrollbars,status" should set BarProp visibility to true
9
-
FAIL "location,toolbar,menubar,resizable=no,scrollbars,status" should set BarProp visibility to false assert_equals: window.locationbar.visible expected false but got true
10
-
FAIL "location,toolbar,menubar,resizable,status" should set BarProp visibility to false assert_equals: window.locationbar.visible expected false but got true
11
-
FAIL "location,toolbar,menubar,resizable,scrollbars" should set BarProp visibility to false assert_equals: window.locationbar.visible expected false but got true
12
-
FAIL "popup=1,location,toolbar,menubar,resizable,scrollbars,status" should set BarProp visibility to false assert_equals: window.locationbar.visible expected false but got true
13
-
FAIL "popup=yes,location,toolbar,menubar,resizable,scrollbars,status" should set BarProp visibility to false assert_equals: window.locationbar.visible expected false but got true
14
-
FAIL "popup=true,location,toolbar,menubar,resizable,scrollbars,status" should set BarProp visibility to false assert_equals: window.locationbar.visible expected false but got true
9
+
PASS "location,toolbar,menubar,resizable=no,scrollbars,status" should set BarProp visibility to false
10
+
PASS "location,toolbar,menubar,resizable,status" should set BarProp visibility to false
11
+
PASS "location,toolbar,menubar,resizable,scrollbars" should set BarProp visibility to false
12
+
PASS "popup=1,location,toolbar,menubar,resizable,scrollbars,status" should set BarProp visibility to false
13
+
PASS "popup=yes,location,toolbar,menubar,resizable,scrollbars,status" should set BarProp visibility to false
14
+
PASS "popup=true,location,toolbar,menubar,resizable,scrollbars,status" should set BarProp visibility to false
15
15
PASS "popup=0,location,toolbar,menubar,resizable,scrollbars" should set BarProp visibility to true
Copy file name to clipboardExpand all lines: LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/window-open-popup-behavior-expected.txt
+18-18Lines changed: 18 additions & 18 deletions
Original file line number
Diff line number
Diff line change
@@ -3,51 +3,51 @@ PASS undefined (expect tab)
3
3
PASS (expect tab)
4
4
PASS ,noopener (expect tab)
5
5
PASS ,noreferrer (expect tab)
6
-
FAIL ,popup (expect popup) assert_equals: Popup state expected true but got false
6
+
PASS ,popup (expect popup)
7
7
PASS ,noopener,noreferrer,popup (expect tab)
8
-
FAIL resizable=yes,scrollbars=yes,status=yes (expect popup) assert_equals: Popup state expected true but got false
0 commit comments