Re: [whatwg/fetch] Replace request's "window" with "traversable for user prompts" (PR #1823)

@annevk approved this pull request.

This looks good to me modulo some comments. @ricea and @noamr are maybe willing to review this too.

> @@ -1666,17 +1666,38 @@ of the <a for="environment">target browsing context</a>'s <a>active document</a>
 <a>environment settings object</a>.
 
 <p>A <a for=/>request</a> has an associated
-<dfn export for=request id=concept-request-window>window</dfn>
-("<code>no-window</code>", "<code>client</code>", or an
-<a>environment settings object</a> whose
-<a for="environment settings object">global object</a> is a
-{{Window}} object). Unless stated otherwise it is
-"<code>client</code>".
+<dfn export for=request id=concept-request-window>traversable for user prompts</dfn>, that is

I'm trying to write out "end user" where I can myself. I'm not actually sure where we are consistency-wise, but is that something we can strife for? I'm happy to document it as the term to use.

>  
-<p class=note>The "<code>client</code>" value is changed to "<code>no-window</code>" or
-<a for=/>request</a>'s <a for=request>client</a> during <a lt=fetch for=/>fetching</a>. It provides
-a convenient way for standards to not have to explicitly set <a for=/>request</a>'s
-<a for=request>window</a>.
+<p>When displaying a user interface associated with a request in that request's
+<a for=request>traversable for user prompts</a>, the user agent should update the address bar to
+display something derived from the request's <a for=request>current URL</a> (and not, e.g., leave
+it at its previous value, derived from the URL of the request's initiator). Additionally, the user
+agent should avoid displaying content from the request's initiator in the
+<a for=request>traversable for user prompts</a>, especially in the case of cross-origin requests.
+Displaying a blank page behind such prompts is a good way to fulfill these requirements. Failing to
+follow these guidelines can confuse users as to which origin is responsible for the prompt.

```suggestion
follow these guidelines can confuse end users as to which origin is responsible for the prompt.
```

> - if <var>request</var>'s <a for=request>client</a>'s
- <a for="environment settings object">global object</a> is a {{Window}} object; otherwise
- "<code>no-window</code>".
-
- <li><p>If <var>request</var>'s <a for=request>origin</a> is "<code>client</code>", then set
- <var>request</var>'s <a for=request>origin</a> to  <var>request</var>'s <a for=request>client</a>'s
- <a for="environment settings object">origin</a>.
+ <li>
+  <p>If <var>request</var>'s <a for=request>traversable for user prompts</a> is "<code>client</code>":
+
+  <ol>
+   <li><p>Set <var>request</var>'s <a for=request>traversable for user prompts</a> to
+   "<code>no-traversable</code>".
+
+   <li>
+    <p>If <var>request</var>'s <a for=request>client</a> is non-null, then:

```suggestion
    <p>If <var>request</var>'s <a for=request>client</a> is non-null:
```

> - <a for="environment settings object">origin</a>.
+ <li>
+  <p>If <var>request</var>'s <a for=request>traversable for user prompts</a> is "<code>client</code>":
+
+  <ol>
+   <li><p>Set <var>request</var>'s <a for=request>traversable for user prompts</a> to
+   "<code>no-traversable</code>".
+
+   <li>
+    <p>If <var>request</var>'s <a for=request>client</a> is non-null, then:
+
+    <ol>
+     <li><p>Let <var>global</var> be <var>request</var>'s <a for=request>client</a>'s
+     <a for="environment settings object">global object</a>.
+
+     <li><p>If <var>global</var> is a {{Window}} object, and <var>global</var>'s

```suggestion
     <li><p>If <var>global</var> is a {{Window}} object and <var>global</var>'s
```

> @@ -5517,10 +5560,13 @@ run these steps:
   <a for="fetch params">canceled</a>:
 
   <ol>
-   <li><p>If <var>request</var>'s <a for=request>window</a> is "<code>no-window</code>" and
-   <var>request</var>'s <a for=request>redirect mode</a> is "<code>error</code>", then set
-   <var>httpFetchParams</var> to <var>fetchParams</var> and <var>httpRequest</var> to
-   <var>request</var>.
+   <li>
+    <p>If <var>request</var>'s <a for=request>traversable for user prompts</a> is "<code>no-traversable</code>" and

Exceeds 100 columns jingle

> @@ -5517,10 +5560,13 @@ run these steps:
   <a for="fetch params">canceled</a>:
 
   <ol>
-   <li><p>If <var>request</var>'s <a for=request>window</a> is "<code>no-window</code>" and
-   <var>request</var>'s <a for=request>redirect mode</a> is "<code>error</code>", then set
-   <var>httpFetchParams</var> to <var>fetchParams</var> and <var>httpRequest</var> to
-   <var>request</var>.
+   <li>
+    <p>If <var>request</var>'s <a for=request>traversable for user prompts</a> is "<code>no-traversable</code>" and
+    <var>request</var>'s <a for=request>redirect mode</a> is "<code>error</code>", then set
+    <var>httpFetchParams</var> to <var>fetchParams</var> and <var>httpRequest</var> to
+    <var>request</var>.
+
+    <p class=note>If user prompts are possible, then we need to clone <var>request</var> because ???

Because it's one of the scenarios where we might have to repeat request.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/fetch/pull/1823#pullrequestreview-2828486239
You are receiving this because you are subscribed to this thread.

Message ID: <whatwg/fetch/pull/1823/review/2828486239@github.com>

Received on Friday, 9 May 2025 14:11:27 UTC