From d6a428d8b40325f248dd7bf1f4cac9999f788fa8 Mon Sep 17 00:00:00 2001 From: clamy Date: Thu, 7 May 2020 14:34:54 +0200 Subject: [PATCH] Add reporting to cross-origin opener policy This commit adds the notion of reporting and report-only mode to cross-origin opener policy. --- source | 624 ++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 534 insertions(+), 90 deletions(-) diff --git a/source b/source index 5d8fe00f9d8..da0cebde4f8 100644 --- a/source +++ b/source @@ -4037,6 +4037,23 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute
  • obtain an embedder policy
  • +
  • + embedder policy value
  • +
  • + embedder policy report only value
  • + + + +
    Reporting
    + +
    +

    The following feature is defined in Reporting API:

    + +
    @@ -9007,7 +9024,7 @@ partial interface Document {

    The Document has a cross-origin opener policy, which is a cross-origin - opener policy, initially "unsafe-none".

    + opener policy.

    The DocumentOrShadowRoot interface

    @@ -76468,7 +76485,7 @@ dictionary DragEventInit : MouseEventInit { settings object">setting up a window environment settings object given realm execution context and topLevelOrigin.

    -
  • Let coop be "unsafe-none".

  • +
  • Let coop be a new cross-origin opener policy.

  • If creator is non-null and creator's origin is same origin with creator's relevant settings object's @@ -77338,10 +77355,10 @@ console.assert(iframeWindow.frameElement === null);

    1. -

      If current's top-level browsing context's active - document's cross-origin opener policy is - "same-origin" or "same-origin-plus-COEP", - then:

      +

      If current's top-level browsing context's active + document's cross-origin opener policy's + value is "same-origin" or + "same-origin-plus-COEP", then:

      1. Let currentDocument be current's active @@ -79796,10 +79813,30 @@ interface BarProp {

        Cross-origin opener policies

        +

        Cross-origin opener policy

        +

        A cross-origin opener policy allows a document which is navigated to in a top-level browsing context to force the creation of a new top-level browsing - context and its group. It has one of the following - values:

        + context and its group. The + cross-origin opener policy consists of:

        + +
          +
        1. A cross-origin opener policy value + (value), initially "unsafe-none".

        2. + +
        3. A string or null (reporting + endpoint), initially null.

        4. + +
        5. A cross-origin opener policy value + (report only value), initially "unsafe-none".

        6. + +
        7. A string or null (report only reporting endpoint), initially null.

        8. +
        + +

        The cross-origin opener policy value consists of the following:

        "unsafe-none"
        @@ -79837,11 +79874,13 @@ interface BarProp { environment:

          +
        1. Let policy be a new cross-origin opener policy.

        2. +
        3. Let securityState be the result of executing Is environment settings object a secure context? on environment.

        4. -
        5. If securityState is "Not Secure", then return "unsafe-none".

        6. +
        7. If securityState is "Not Secure", then return + policy.

        8. Let parsedValue be the result of getting a structured header @@ -79850,33 +79889,96 @@ interface BarProp { data-x="http-cross-origin-opener-policy">Cross-Origin-Opener-Policy` and type "item".

        9. -
        10. If parsedValue is failure or null, then return "unsafe-none".

        11. +
        12. +

          If parsedValue is not failure and is not null, then:

          -
        13. If parsedValue bare item is not "same-origin" or "same-origin-allow-popups", then return "unsafe-none".

        14. +
            +
          1. +

            If parsedValue bare item is "same-origin", then:

            -
          2. -

            If parsedValue bare item is "same-origin", then:

            +
              +
            1. Let coep be the result of obtaining a cross-origin embedder + policy from response.

            2. + +
            3. If coep's value is + "require-corp", then set policy value to "same-origin-plus-COEP".

            4. + +
            5. Else, set policy value to "same-origin".

            6. +
            +
          3. + +
          4. If parsedValue bare item is "same-origin-allow-popups", + then set policy value to "same-origin-allow-popups".

          5. + +
          6. If parsedValue's parameters["report-to"] exists and it is a string, then set reporting endpoint to + parsedValue's parameters["report-to"].

          7. +
          + +
        15. Let parsedReportOnlyValue be the result of getting a structured header + from response's header list given + name `Cross-Origin-Opener-Policy-Report-Only` + and type "item".

        16. + +
        17. +

          If parsedReportOnlyValue is not failure and is not null, then:

            -
          1. Let coep be the result of obtaining a cross-origin embedder - policy from response.

          2. +
          3. +

            If parsedReportOnlyValue bare item is "same-origin", then:

            -
          4. If coep is "require-corp", then return "same-origin-plus-COEP".

          5. +
              +
            1. Let coep be the result of obtaining a cross-origin embedder + policy from response.

            2. + +
            3. +

              If coep's value is + "require-corp" or coep's report only value is "require-corp", then set policy report only value to "same-origin-plus-COEP".

              + +

              Report only COOP also considers report only COEP to assign the special "same-origin-plus-coep" value. This allows developers more freedom in the + order of deployment of COOP and COEP.

              +
            4. + +
            5. Else, set policy report only + value to "same-origin".

            6. +
            + + +
          6. If parsedReportOnlyValue bare item is "same-origin-allow-popups", then set policy report only value to "same-origin-allow-popups".

          7. + +
          8. If parsedReportOnlyValue's parameters["report-to"] exists and it is a string, then set report only reporting endpoint to + parsedReportOnlyValue's parameters["report-to"].

        18. -
        19. Return parsedValue bare item.

        20. +
        21. Return policy.

        -

        To match cross-origin opener policies, given a - cross-origin opener policy A, an origin originA, a - cross-origin opener policy B, and an origin - originB:

        +

        To match cross-origin opener policies, given a cross-origin opener policy value A, an + origin originA, a >cross-origin opener + policy value B, and an origin originB:

        1. If A is "unsafe-none" and B is "BarProp {

        2. Return false.

        +

        Browsing context group switches

        + +

        To check if a navigation requires + a browsing context group switch, given a boolean isInitialEmptyDocument, a + sandboxing flag set sandboxFlags, two origins + activeDocumentNavigationOrigin, incumbentNavigationOrigin, and two cross-origin opener policy values + navigationCOOPValue, incumbentCOOPValue:

        + +
          +
        1. If the result of matching + incumbentCOOPValue, incumbentNavigationOrigin, + navigationCOOPValue and activeDocumentNavigationOrigin is true, return + false.

        2. + +
        3. +

          If all of the following are true:

          + +
            +
          • isInitialEmptyDocument.

          • + +
          • incumbentCOOPValue's value is "same-origin-allow-popups".

          • + +
          • navigationCOOPValue is "unsafe-none".

          • +
          + +

          then return false.

          +
        4. + +
        5. Return true.

          +
        + +

        To check if enforcing report only + COOP policies would require a browsing context group switch when navigating away from a COOP + page, given a boolean isInitialEmptyDocument, a sandboxing flag set + sandboxFlags, two origins + activeDocumentNavigationOrigin, incumbentNavigationOrigin, and three cross-origin opener policy values + navigationCOOPValue, navigationCOOPReportOnlyValue, + incumbentCOOPReportOnlyValue:

        + +
          +
        1. Let browsingContextGroupSwitchNeeded be the result of checking if the navigation requires a + browsing context group switch given isInitialEmptyDocument, + sandboxFlags, activeDocumentNavigationOrigin, + incumbentNavigationOrigin, navigationCOOPValue and + incumbentCOOPReportOnlyValue.

        2. + +
        3. If browsingContextGroupSwitchNeeded is false, return + false.

        4. + +
        5. +

          Let browsingContextGroupSwitchNeededReportOnly be the result of checking if the navigation requires a + browsing context group switch given isInitialEmptyDocument, + sandboxFlags, activeDocumentNavigationOrigin, + incumbentNavigationOrigin, navigationCOOPReportOnlyValue and + incumbentCOOPReportOnlyValue.

          + +

          Matching report only policies allows a website to specify the same report only + Cross-Origin-Opener-Policy on all its pages and not receive violation reports for navigations + between these pages.

          +
        6. + +
        7. If browsingContextGroupSwitchNeededReportOnly is false, + return false.

        8. + +
        9. Return true.

        10. +
        + +

        To check if enforcing report only + COOP policies would require a browsing context group switch when navigating to a COOP + page, given a boolean isInitialEmptyDocument, a sandboxing flag set + sandboxFlags, two origins + activeDocumentNavigationOrigin, incumbentNavigationOrigin, and three cross-origin opener policy values + navigationCOOPReportOnlyValue, incumbentCOOPValue, + incumbentCOOPReportOnlyValue:

        + +
          +
        1. Let browsingContextGroupSwitchNeeded be the result of checking if the navigation requires a + browsing context group switch given isInitialEmptyDocument, + sandboxFlags, activeDocumentNavigationOrigin, + incumbentNavigationOrigin, navigationCOOPReportOnlyValue and + incumbentCOOPValue.

        2. + +
        3. If browsingContextGroupSwitchNeeded is false, return + false.

        4. + +
        5. +

          Let browsingContextGroupSwitchNeededReportOnly be the result of checking if the navigation requires a + browsing context group switch given isInitialEmptyDocument, + sandboxFlags, activeDocumentNavigationOrigin, + incumbentNavigationOrigin, navigationCOOPReportOnlyValue and + incumbentCOOPReportOnlyValue.

          + +

          Matching report only policies allows a website to specify the same report only + Cross-Origin-Opener-Policy on all its pages and not receive violation reports for navigations + between these pages.

          +
        6. + +
        7. If browsingContextGroupSwitchNeededReportOnly is false, + return false.

        8. + +
        9. Return true.

        10. +
        +

        To obtain a browsing context to use for a - navigation response, given a response - response, a browsing context + navigation response, given a request + request, a response response, two + browsing contexts source and browsingContext, a sandboxing flag set sandboxFlags, two origins activeDocumentNavigationOrigin, incumbentNavigationOrigin, and a cross-origin opener policy @@ -79904,35 +80118,130 @@ interface BarProp { cross-origin opener policy of currentBrowsingContext's active document.

      2. -
      3. If the result of matching - incumbentCOOP, incumbentNavigationOrigin, - navigationCOOP and activeDocumentNavigationOrigin is true, return - browsingContext.

      4. +
      5. Let isInitialEmptyDocument be false. If + currentBrowsingContext's only entry in its session history is the + about:blank Document that was added when browsingContext was + created, set + isInitialEmptyDocument to true.

      6. -

        If all of the following are true:

        +

        If navigationCOOP's report only + reporting endpoint is not null, then:

        -
          -
        • currentBrowsingContext's only entry in its session history is - the about:blank Document that was added when - browsingContext was created.

        • +
            +
          1. Let browsingContexGroupSwitchNeededReportOnly be the result of checking if enforcing report only COOP + policies would require a browsing context group switch when navigating to a COOP page, + given isInitialEmptyDocument, sandboxFlags, + activeDocumentNavigationOrigin, incumbentNavigationOrigin, + navigationCOOP's report only + value, incumbentCOOP's value, and + incumbentCOOP's report only + value.

          2. + +
          3. If browsingContexGroupSwitchNeededReportOnly is true + and browsingContext's browsing context group's browsing context + set's size is strictly greater than 1, queue a violation report for + browsing context group switch when navigating to a COOP page with + navigationCOOP's report only + reporting endpoint, navigationCOOP's report only value, "reporting", response's URL, browsingContext's active + document's URL, and request's referrer.

          4. +
          + -
        • activeDocumentCOOP is "same-origin-allow-popups".

        • +
        • +

          If incumbentCOOP's report only + reporting endpoint is not null, then:

          -
        • navigationCOOP is "unsafe-none".

        • -
        +
          +
        1. Let initialNavigationURL be a new empty URL.

        2. + +
        3. If source and browsingContext are the same, set + initialNavigationURL to request's URL.

        4. + +
        5. Let browsingContexGroupSwitchNeededReportOnly be the result of checking if enforcing report only + COOP policies would require a browsing context group switch when navigating away from a COOP + page, given isInitialEmptyDocument, sandboxFlags, + activeDocumentNavigationOrigin, incumbentNavigationOrigin, + navigationCOOP's value, + navigationCOOP's report only + value, and incumbentCOOP's report only value.

        6. + +
        7. If browsingContexGroupSwitchNeededReportOnly is true + and browsingContext's browsing context group's browsing context + set's size is strictly greater than 1, Queue a violation report for + browsing context group switch when navigating away from a COOP page with + incumbentCOOP's report only + reporting endpoint, incumbentCOOP's report only value, "reporting", response's URL, browsingContext's active + document's URL, and initialNavigationURL.

        8. +
        +
      7. + +
      8. Let browsingContextGroupSwitchNeeded be the result of checking if the navigation requires a + browsing context group switch given isInitialEmptyDocument, + sandboxFlags, activeDocumentNavigationOrigin, + incumbentNavigationOrigin, navigationCOOP's value, and incumbentCOOP's + value.

      9. + +
      10. If browsingContextGroupSwitchNeeded is false, return + browsingContext.

      11. -

        then return browsingContext.

        +
      12. If navigationCOOP's reporting + endpoint is not null, and browsingContext's + browsing context group's browsing context set's size is strictly greater than 1, queue a violation report for browsing context group switch + when navigating to a COOP page with navigationCOOP's reporting endpoint, navigationCOOP's value, "enforce", response's + URL, browsingContext's active + document's URL, and request's referrer.

      13. + +
      14. +

        If incumbentCOOP's reporting + endpoint is not null, and browsingContext's + browsing context group's browsing context set's + size is strictly greater than 1, + then:

        + +
          +
        1. Let initialNavigationURL be a new empty URL.

        2. + +
        3. If source and browsingContext are the same, set + initialNavigationURL to request's URL.

        4. + +
        5. Queue a violation report for browsing context + group switch when navigating away from a COOP page with incumbentCOOP's reporting endpoint, incumbentCOOP's + value, "enforce", + response's URL, + browsingContext's active document's URL, and + initialNavigationURL.

        6. +
      15. Let newBrowsingContextGroup be the result of creating a new browsing context group.

      16. -
      17. If navigationCOOP is "same-origin-plus-COEP", then set - newBrowsingContextGroup cross-origin - isolated to true.

      18. +
      19. If navigationCOOP's value is "same-origin-plus-COEP", then set newBrowsingContextGroup cross-origin isolated to true.

      20. Let newBrowsingContext be the result of creating a new browsingContext in newBrowsingContextGroup.

      21. @@ -79940,7 +80249,8 @@ interface BarProp {
      22. If sandboxFlags is not empty, then:

          -
        1. Assert navigationCOOP is "unsafe-none".

        2. +
        3. Assert navigationCOOP's value is + "unsafe-none".

        4. Set newBrowsingContext's sandboxing flag set to sandboxFlags.

        5. @@ -79963,6 +80273,90 @@ interface BarProp { defined. It is currently under discussion in issue 5350.

          +

          Reporting policies

          + +

          To queue a violation report for browsing context group + switch when navigating to a COOP page given a string endpoint, a cross-origin opener policy value + COOPValue, a string disposition, a URL + navigationURL, a URL currentDocumentURL, and a + referrer referrer:

          + +

            +
          1. Let previousDocumentURL be referrer.

          2. + +
          3. If currentDocumentURL and navigationURL are + same origin, set previousDocumentURL to + currentDocumentURL.

          4. + +
          5. Set previousDocumentURL's username + to the empty string, and its password to null.

          6. + +
          7. Let serializedPreviousDocumentURL be the result of executing the URL serializer on previousDocumentURL with the + exclude fragment flag set.

          8. + +
          9. +

            Let body be a new object containing the following properties with keys:

            + +
              +
            • key: "disposition", value: disposition.

            • + +
            • key: "effective-policy", value: COOPValue.

            • + +
            • key: "navigation-uri", value: + serializedPreviousDocumentURL.

            • + +
            • key: "violation-type", value: "navigate-to-document".

            • +
            +
          10. + +
          11. Queue body as "coop" + for endpoint with navigationURL.

          12. +
          + +

          To queue a violation report for browsing context group + switch when navigating away from a COOP page given a string endpoint, a + cross-origin opener policy value COOPValue, a string + disposition, a URL navigationURL, a URL + currentDocumentURL, and a URL initialNavigationURL:

          + +

            +
          1. Let nextDocumentURL be initialNavigationURL.

          2. + +
          3. If currentDocumentURL and navigationURL are + same origin, set nextDocumentURL to + navigationURL.

          4. + +
          5. Set nextDocumentURL's username to + the empty string, and its password to null.

          6. + +
          7. Let serializedNextDocumentURL be the result of executing the URL serializer on nextDocumentURL with the + exclude fragment flag set.

          8. + +
          9. +

            Let body be a new object containing the following properties with keys:

            + +
              +
            • key: "disposition", value: disposition.

            • + +
            • key: "effective-policy", value: COOPValue.

            • + +
            • key: "navigation-uri", value: + serializedNextDocumentURL.

            • + +
            • key: "violation-type", value: "navigate-from-document".

            • +
            +
          10. + +
          11. Queue body as "coop" + for endpoint with currentDocumentURL.

          12. +

          Session history and navigation

          @@ -82075,15 +82469,15 @@ interface Location { // but see also
          an HTML MIME type
          Follow the steps given in the HTML document section - providing browsingContext, request, response, - sandboxFlags, incumbentNavigationOrigin, and + providing source, browsingContext, request, + response, sandboxFlags, incumbentNavigationOrigin, and activeDocumentNavigationOrigin. Once the steps have completed, return.
          an XML MIME type that is not an explicitly supported XML MIME type
          Follow the steps given in the XML document section - providing browsingContext, type, request, response, - sandboxFlags, incumbentNavigationOrigin, and + providing source, browsingContext, type, request, + response, sandboxFlags, incumbentNavigationOrigin, and activeDocumentNavigationOrigin. Once the steps have completed, return.
          a JavaScript MIME type
          @@ -82094,28 +82488,28 @@ interface Location { // but see also
          text/plain
          "
          "text/vtt"
          Follow the steps given in the plain text file section - providing browsingContext, type, request, response, - sandboxFlags, incumbentNavigationOrigin, and + providing source, browsingContext, type, request, + response, sandboxFlags, incumbentNavigationOrigin, and activeDocumentNavigationOrigin. Once the steps have completed, return.
          "multipart/x-mixed-replace"
          Follow the steps given in the multipart/x-mixed-replace section providing - browsingContext, type, request, response, - sandboxFlags, incumbentNavigationOrigin, and + source, browsingContext, type, request, + response, sandboxFlags, incumbentNavigationOrigin, and activeDocumentNavigationOrigin. Once the steps have completed, return.
          A supported image, video, or audio type
          Follow the steps given in the media section providing - browsingContext, type, request, response, - sandboxFlags, incumbentNavigationOrigin, and + source, browsingContext, type, request, + response, sandboxFlags, incumbentNavigationOrigin, and activeDocumentNavigationOrigin. Once the steps have completed, return.
          A type that will use an external application to render the content in browsingContext
          Follow the steps given in the plugin section - providing browsingContext, type, request, response, - sandboxFlags, incumbentNavigationOrigin, and + providing source, browsingContext, type, request, + response, sandboxFlags, incumbentNavigationOrigin, and activeDocumentNavigationOrigin. Once the steps have completed, return.
          @@ -82286,9 +82680,9 @@ interface Location { // but see also
          type type, content type contentType, a request request, a response response, a browsing context browsingContext, a sandboxing flag set - sandboxFlags, two origins + data-x="concept-response">response response, two browsing contexts source, browsingContext, a + sandboxing flag set sandboxFlags, two origins incumbentNavigationOrigin, activeDocumentNavigationOrigin, and an optional environment reservedEnvironment:

          @@ -82346,9 +82740,9 @@ interface Location { // but see also
          obtaining a browsing context for the navigation - response given response, browsingContext, sandboxFlags, - activeDocumentNavigationOrigin, incumbentNavigationOrigin, and - navigationCOOP.

          + response given request, response, source, + browsingContext, sandboxFlags, activeDocumentNavigationOrigin, + incumbentNavigationOrigin, and navigationCOOP.

        6. Let browsingContextSwitch be false.

        7. @@ -82608,8 +83002,8 @@ new PaymentRequest(…); // Allowed to use

          Page load processing model for HTML files

          When an HTML document is to be loaded in a browsing - context, provided browsingContext, request, response, - sandboxFlags, incumbentNavigationOrigin, and + context, provided source, browsingContext, request, + response, sandboxFlags, incumbentNavigationOrigin, and activeDocumentNavigationOrigin, the user agent must queue a task on the networking task source to:

          @@ -82617,8 +83011,9 @@ new PaymentRequest(…); // Allowed to use
        8. Let document be the result of creating and initializing a Document object providing "html", "text/html", - request, response, browsingContext, sandboxFlags, - incumbentNavigationOrigin, and activeDocumentNavigationOrigin.

        9. + request, response, source, browsingContext, + sandboxFlags, incumbentNavigationOrigin, and + activeDocumentNavigationOrigin.

        10. Create an HTML parser and associate it with the document. Each @@ -82651,16 +83046,17 @@ new PaymentRequest(…); // Allowed to use

          Page load processing model for XML files

          -

          When faced with displaying an XML file inline, provided browsingContext, - request, response, sandboxFlags, +

          When faced with displaying an XML file inline, provided source, + browsingContext, request, response, sandboxFlags, incumbentNavigationOrigin, and activeDocumentNavigationOrigin, user agents must follow the requirements defined in XML and Namespaces in XML, XML Media Types, DOM, and other relevant specifications to create and initialize a Document object providing "xml", type, request, response, - browsingContext, sandboxFlags, incumbentNavigationOrigin, and - activeDocumentNavigationOrigin. It must also create and a corresponding XML - parser.

          + source, browsingContext, sandboxFlags, + incumbentNavigationOrigin, and activeDocumentNavigationOrigin. It must also + create and a corresponding XML parser.

          At the time of writing, the XML specification community had not actually yet specified how XML and the DOM interact.

          @@ -82705,15 +83101,16 @@ new PaymentRequest(…); // Allowed to use

          Page load processing model for text files

          When a plain text document is to be loaded in a browsing context, provided - browsingContext, request, response, sandboxFlags, - incumbentNavigationOrigin, and activeDocumentNavigationOrigin, the user - agent must queue a task on the networking task source to: + source, browsingContext, request, response, + sandboxFlags, incumbentNavigationOrigin, and + activeDocumentNavigationOrigin, the user agent must queue a task on the + networking task source to:

          1. Let document be the result of creating and initialize a Document object providing "html", type, request, - response, browsingContext, sandboxFlags, + response, source, browsingContext, sandboxFlags, incumbentNavigationOrigin, and activeDocumentNavigationOrigin.

          2. Create an HTML parser and associate it with the document. Act as @@ -82782,7 +83179,7 @@ new PaymentRequest(…); // Allowed to use

            Page load processing model for media

            When an image, video, or audio resource is to be loaded in a browsing context, - provided browsingContext, request, response, + provided source, browsingContext, request, response, sandboxFlags, incumbentNavigationOrigin, and activeDocumentNavigationOrigin, the user agent should: @@ -82790,7 +83187,7 @@ new PaymentRequest(…); // Allowed to use

          3. Let document be the result of creating and initialize a Document object providing "html", type, request, - response, browsingContext, sandboxFlags, + response, source, browsingContext, sandboxFlags, incumbentNavigationOrigin, and activeDocumentNavigationOrigin.

          4. Append an html element to document.

          5. @@ -82848,15 +83245,16 @@ new PaymentRequest(…); // Allowed to use

            Page load processing model for content that uses plugins

            When a resource that requires an external resource to be rendered is to be loaded in a - browsing context, provided browsingContext, request, - response, sandboxFlags, incumbentNavigationOrigin, and - activeDocumentNavigationOrigin, the user agent should: + browsing context, provided source, browsingContext, + request, response, sandboxFlags, + incumbentNavigationOrigin, and activeDocumentNavigationOrigin, the user + agent should:

            1. Let document be the result of creating and initialize a Document object providing "html", type, request, - response, browsingContext, sandboxFlags, + response, source, browsingContext, sandboxFlags, incumbentNavigationOrigin, and activeDocumentNavigationOrigin.

            2. Mark document as being a plugin document

            3. @@ -82905,10 +83303,10 @@ new PaymentRequest(…); // Allowed to use

              When the user agent is to display a user agent page inline in a browsing context, the user agent should create and initialize a Document object providing "html", "text/html", null, null, browsingContext, an empty set, null, and null, - and then either associate that Document with a custom rendering that is not rendered - using the normal Document rendering rules, or mutate that Document until - it represents the content the user agent wants to render.

              + data-x="">text/html", null, null, null, browsingContext, an empty set, null, and + null, and then either associate that Document with a custom rendering that is not + rendered using the normal Document rendering rules, or mutate that + Document until it represents the content the user agent wants to render.

              @@ -116034,7 +116432,8 @@ interface External {

              Valid Cross-Origin-Opener-Policy values include "unsafe-none", "same-origin-allow-popups" and "same-origin".

              + data-x="">same-origin". These values may have a parameter specifying a string which + represents the endpoint for violation reporting.

              In order to support forward-compatibility with as-yet-unknown request types, user agents MUST ignore this header if it contains an invalid value. Likewise, user agents MUST ignore this header if @@ -116059,6 +116458,48 @@ interface External { +

              `Cross-Origin-Opener-Policy-Report-Only`

              + +

              This section describes a header for registration in the Permanent Message Header Field + Registry.

              + +

              The Cross-Origin-Opener-Policy-Report-Only + HTTP response header field allows a server to declare an opener policy for a given document. It is + a Structured Header whose value MUST be a token. Its ABNF is:

              + +

              Cross-Origin-Opener-Policy-Report-Only = sh-item

              + +

              Valid Cross-Origin-Opener-Policy-Report-Only values include "unsafe-none", "same-origin-allow-popups" and "same-origin". These values may have a parameter specifying a string which + represents the endpoint for violation reporting.

              + +

              In order to support forward-compatibility with as-yet-unknown request types, user agents MUST + ignore this header if it contains an invalid value. Likewise, user agents MUST ignore this header if + the value cannot be parsed as a sh-token.

              + +
              +
              Header field name:
              +
              Cross-Origin-Opener-Policy-Report-Only
              +
              Applicable protocol:
              +
              http
              +
              Status:
              +
              standard
              +
              Author/Change controller:
              +
              WHATWG
              +
              Specification document(s):
              +
              + This document is the relevant specification. +
              +
              Related information:
              +
              None.
              +
              + + +

              Index

              @@ -120899,6 +121340,9 @@ INSERT INTERFACES HERE
              [REFERRERPOLICY]
              Referrer Policy, J. Eisinger, E. Stark. W3C.
              +
              [REPORTING]
              +
              Reporting, D. Creager, I. Clelland, M. West, I. Grigorik, P. Meyer. W3C.
              +
              [REQUESTIDLECALLBACK]
              Cooperative Scheduling of Background Tasks, R. McIlroy, I. Grigorik. W3C.