From a557f327c69c40e6a32af242c6789ba2d123fdda Mon Sep 17 00:00:00 2001 From: Tooru Fujisawa Date: Tue, 12 Oct 2021 17:50:49 +0900 Subject: [PATCH] Make BarProp not to expose browser interface visibility Fixes #4431 Standardize the value of BarProp attributes, while hiding the actual visibility from the web content for privacy reasons. --- source | 101 +++++++++++++++++++++++++++++++++------------------------ 1 file changed, 59 insertions(+), 42 deletions(-) diff --git a/source b/source index 706ed718947..3b50f31ef81 100644 --- a/source +++ b/source @@ -81459,8 +81459,11 @@ dictionary WindowPostMessageOptions : StructuredSeri

Browser interface elements

-

To allow web pages to integrate with web browsers, certain web browser interface elements are - exposed in a limited way to scripts in web pages.

+

For historical reasons, Window object has some attributes + that represents certain web browser interface elements.

+ +

For privacy and interoperability reasons, those attributes return the same + value, regardless of whether the interface element is visible or not.

Each interface element is represented by a BarProp object:

@@ -81471,22 +81474,15 @@ interface BarProp {
window.locationbar.visible
-

Returns true if the location bar is visible; otherwise, returns false.

-
window.menubar.visible
-

Returns true if the menu bar is visible; otherwise, returns false.

-
window.personalbar.visible
-

Returns true if the personal bar is visible; otherwise, returns false.

-
window.scrollbars.visible
-

Returns true if the scrollbars are visible; otherwise, returns false.

-
window.statusbar.visible
-

Returns true if the status bar is visible; otherwise, returns false.

-
window.toolbar.visible
-

Returns true if the toolbar is visible; otherwise, returns false.

+
+

Returns true if the top-level browsing context is not a + popup; otherwise, returns false.

+
@@ -81495,51 +81491,72 @@ interface BarProp { must run these steps:

    -
  1. If this BarProp object's relevant global object's browsing context is null, then return false.

  2. - -
  3. If the user agent does not have a user interface element that the object represents, as - described below, then return true.

  4. - -
  5. Return true or a value determined by the user agent to most accurately represent the - visibility state of the user interface element that the object represents, as described - below.

  6. +
  7. +

    Let browsingContext be BarProp object's + relevant global object's browsing context.

    +
  8. +
  9. +

    If browsingContext is null, then return true.

    +
  10. +
  11. +

    Return the negation of browsingContext's + top-level browsing context's is popup.

    +

The following BarProp objects must exist for each Window object:

The location bar BarProp object
-
Represents the user interface element that contains a control that displays the - URL of the active document, or some similar interface concept.
+
+

Historically represented the user interface element that + contains a control that displays the URL of the + active document, or some similar interface concept.

+
The menu bar BarProp object
-
Represents the user interface element that contains a list of commands in menu form, or some - similar interface concept.
+
+

Historically represented the user interface element that + contains a list of commands in menu form, or some similar interface + concept.

+
The personal bar BarProp object
-
Represents the user interface element that contains links to the user's favorite pages, or - some similar interface concept.
+
+

Historically represented the user interface element that + contains links to the user's favorite pages, or some similar interface + concept.

+
The scrollbar BarProp object
-
Represents the user interface element that contains a scrolling mechanism, or some similar - interface concept.
+
+

Historically represented the user interface element that + contains a scrolling mechanism, or some similar interface concept.

+
The status bar BarProp object
-
Represents a user interface element found immediately below or after the document, as - appropriate for the user's media, which typically provides information about ongoing network - activity or information about elements that the user's pointing device is current indicating. If - the user agent has no such user interface element, then the object may act as if the - corresponding user interface element was absent (i.e. its visible attribute may return false).
+
+

Historically represented a user interface element found + immediately below or after the document, as appropriate for the user's + media, which typically provides information about ongoing network activity + or information about elements that the user's pointing device is current + indicating. If the user agent has no such user interface element, then the + object can act as if the corresponding user interface element was absent + (i.e., its visible attribute + can return false).

+
The toolbar BarProp object
-
Represents the user interface element found immediately above or before the document, as - appropriate for the user's media, which typically provides session history traversal - controls (back and forward buttons, reload buttons, etc.). If the user agent has no such user - interface element, then the object may act as if the corresponding user interface element was - absent (i.e. its visible attribute may return - false).
+
+

Historically represented the user interface element found + immediately above or before the document, as appropriate for the user's + media, which typically provides session history traversal + controls (back and forward buttons, reload buttons, etc.). If the user agent + has no such user interface element, then the object can act as if the + corresponding user interface element was absent (i.e., its + visible attribute can return + false).

+

The locationbar