@@ -1666,17 +1666,38 @@ of the <a for="environment">target browsing context</a>'s <a>active document</a>
1666
1666
< a > environment settings object</ a > .
1667
1667
1668
1668
< p > A < a for =/ > request</ a > has an associated
1669
- < dfn export for =request id =concept-request-window > window</ dfn >
1670
- ("< code > no-window</ code > ", "< code > client</ code > ", or an
1671
- < a > environment settings object</ a > whose
1672
- < a for ="environment settings object "> global object</ a > is a
1673
- {{Window}} object). Unless stated otherwise it is
1674
- "< code > client</ code > ".
1669
+ < dfn export for =request id =concept-request-window > traversable for user prompts</ dfn > , that is
1670
+ "< code > no-traversable</ code > ", "< code > client</ code > ", or a < a for =/ > traversable navigable</ a > .
1671
+ Unless stated otherwise it is "< code > client</ code > ".
1672
+
1673
+ < div class =note >
1674
+ < p > This is used to determine whether and where to show necessary UI for the request, such as
1675
+ authentication prompts or client certificate dialogs.
1676
+
1677
+ < dl >
1678
+ < dt > "< code > no-traversable</ code > "
1679
+ < dd > No UI is shown; usually the request fails with a < a > network error</ a > .
1680
+
1681
+ < dt > "< code > client</ code > "
1682
+ < dd > This value will automatically be changed to either "< code > no-traversable</ code > " or to a
1683
+ < a for =/ > traversable navigable</ a > derived from the request's < a for =request > client</ a > during
1684
+ < a lt =fetch for =/ > fetching</ a > . This provides a convenient way for standards to not have to
1685
+ explicitly set a request's < a for =request > traversable for user prompts</ a > .
1686
+
1687
+ < dt > a < a for =/ > traversable navigable</ a >
1688
+ < dd > The UI shown will be associated with the browser interface elements that are displaying that
1689
+ < a for =/ > traversable navigable</ a > .
1690
+ </ dl >
1691
+ </ div >
1675
1692
1676
- < p class =note > The "< code > client</ code > " value is changed to "< code > no-window</ code > " or
1677
- < a for =/ > request</ a > 's < a for =request > client</ a > during < a lt =fetch for =/ > fetching</ a > . It provides
1678
- a convenient way for standards to not have to explicitly set < a for =/ > request</ a > 's
1679
- < a for =request > window</ a > .
1693
+ < p > When displaying a user interface associated with a request in that request's
1694
+ < a for =request > traversable for user prompts</ a > , the user agent should update the address bar to
1695
+ display something derived from the request's < a for =request > current URL</ a > (and not, e.g., leave
1696
+ it at its previous value, derived from the URL of the request's initiator). Additionally, the user
1697
+ agent should avoid displaying content from the request's initiator in the
1698
+ < a for =request > traversable for user prompts</ a > , especially in the case of cross-origin requests.
1699
+ Displaying a blank page behind such prompts is a good way to fulfill these requirements. Failing to
1700
+ follow these guidelines can confuse users as to which origin is responsible for the prompt.
1680
1701
1681
1702
< p id =keep-alive-flag > A < a for =/ > request</ a > has an associated boolean
1682
1703
< dfn for =request export id =request-keepalive-flag > keepalive</ dfn > . Unless stated otherwise it is
@@ -4334,7 +4355,8 @@ the response. [[!HTTP-CACHING]]
4334
4355
< li > < p > < var > request</ var > 's < a for =request > mode</ a > is "< code > same-origin</ code > ",
4335
4356
"< code > cors</ code > ", or "< code > no-cors</ code > "
4336
4357
4337
- < li > < p > < var > request</ var > 's < a for =request > window</ a > is an < a > environment settings object</ a >
4358
+ < li > < p > < var > request</ var > 's < a for =request > client</ a > 's
4359
+ < a for ="environment settings object "> global object</ a > is a {{Window}} object
4338
4360
4339
4361
< li > < p > < var > request</ var > 's < a for =request > method</ a > is `< code > GET</ code > `
4340
4362
@@ -4354,7 +4376,7 @@ the response. [[!HTTP-CACHING]]
4354
4376
< a for ="fetch params "> preloaded response candidate</ a > to < var > response</ var > .
4355
4377
4356
4378
< li > < p > Let < var > foundPreloadedResource</ var > be the result of invoking
4357
- < a > consume a preloaded resource</ a > for < var > request</ var > 's < a for =request > window </ a > , given
4379
+ < a > consume a preloaded resource</ a > for < var > request</ var > 's < a for =request > client </ a > , given
4358
4380
< var > request</ var > 's < a for =request > URL</ a > , < var > request</ var > 's < a for =request > destination</ a > ,
4359
4381
< var > request</ var > 's < a for =request > mode</ a > , < var > request</ var > 's
4360
4382
< a for =request > credentials mode</ a > , < var > request</ var > 's < a for =request > integrity metadata</ a > ,
@@ -4439,15 +4461,36 @@ the response. [[!HTTP-CACHING]]
4439
4461
< p > To < dfn > populate request from client</ dfn > given a < a for =/ > request</ a > < var > request</ var > :
4440
4462
4441
4463
< ol >
4442
- < li > < p > If < var > request</ var > 's < a for =request > window</ a > is "< code > client</ code > ", then: set
4443
- < var > request</ var > 's < a for =request > window</ a > to < var > request</ var > 's < a for =request > client</ a >
4444
- if < var > request</ var > 's < a for =request > client</ a > 's
4445
- < a for ="environment settings object "> global object</ a > is a {{Window}} object; otherwise
4446
- "< code > no-window</ code > ".
4447
-
4448
- < li > < p > If < var > request</ var > 's < a for =request > origin</ a > is "< code > client</ code > ", then set
4449
- < var > request</ var > 's < a for =request > origin</ a > to < var > request</ var > 's < a for =request > client</ a > 's
4450
- < a for ="environment settings object "> origin</ a > .
4464
+ < li >
4465
+ < p > If < var > request</ var > 's < a for =request > traversable for user prompts</ a > is "< code > client</ code > ":
4466
+
4467
+ < ol >
4468
+ < li > < p > Set < var > request</ var > 's < a for =request > traversable for user prompts</ a > to
4469
+ "< code > no-traversable</ code > ".
4470
+
4471
+ < li >
4472
+ < p > If < var > request</ var > 's < a for =request > client</ a > is non-null, then:
4473
+
4474
+ < ol >
4475
+ < li > < p > Let < var > global</ var > be < var > request</ var > 's < a for =request > client</ a > 's
4476
+ < a for ="environment settings object "> global object</ a > .
4477
+
4478
+ < li > < p > If < var > global</ var > is a {{Window}} object, and < var > global</ var > 's
4479
+ < a for =Window > navigable</ a > is not null, then set < var > request</ var > 's
4480
+ < a for =request > traversable for user prompts</ a > to < var > global</ var > 's < a for =Window > navigable</ a > 's
4481
+ < a for =navigable > traversable navigable</ a > .
4482
+ </ ol >
4483
+ </ ol >
4484
+
4485
+ < li >
4486
+ < p > If < var > request</ var > 's < a for =request > origin</ a > is "< code > client</ code > ":
4487
+
4488
+ < ol >
4489
+ < li > < p > < a > Assert</ a > : < var > request</ var > 's < a for =request > client</ a > is non-null.
4490
+
4491
+ < li > < p > Set < var > request</ var > 's < a for =request > origin</ a > to < var > request</ var > 's
4492
+ < a for =request > client</ a > 's < a for ="environment settings object "> origin</ a > .
4493
+ </ ol >
4451
4494
4452
4495
< li >
4453
4496
< p > If < var > request</ var > 's < a for =request > policy container</ a > is "< code > client</ code > ":
@@ -5517,10 +5560,13 @@ run these steps:
5517
5560
< a for ="fetch params "> canceled</ a > :
5518
5561
5519
5562
< ol >
5520
- < li > < p > If < var > request</ var > 's < a for =request > window</ a > is "< code > no-window</ code > " and
5521
- < var > request</ var > 's < a for =request > redirect mode</ a > is "< code > error</ code > ", then set
5522
- < var > httpFetchParams</ var > to < var > fetchParams</ var > and < var > httpRequest</ var > to
5523
- < var > request</ var > .
5563
+ < li >
5564
+ < p > If < var > request</ var > 's < a for =request > traversable for user prompts</ a > is "< code > no-traversable</ code > " and
5565
+ < var > request</ var > 's < a for =request > redirect mode</ a > is "< code > error</ code > ", then set
5566
+ < var > httpFetchParams</ var > to < var > fetchParams</ var > and < var > httpRequest</ var > to
5567
+ < var > request</ var > .
5568
+
5569
+ < p class =note > If user prompts are possible, then we need to clone < var > request</ var > because ???
5524
5570
5525
5571
< li >
5526
5572
< p > Otherwise:
@@ -5919,8 +5965,8 @@ run these steps:
5919
5965
< li >
5920
5966
< p > If < var > response</ var > 's < a for =response > status</ a > is 401, < var > httpRequest</ var > 's
5921
5967
< a for =request > response tainting</ a > is not "< code > cors</ code > ", < var > includeCredentials</ var > is
5922
- true, and < var > request</ var > 's < a for =request > window </ a > is an < a > environment settings object </ a > ,
5923
- then :
5968
+ true, and < var > request</ var > 's < a for =request > traversable for user prompts </ a > is a
5969
+ < a for = / > traversable navigable </ a > :
5924
5970
5925
5971
< ol >
5926
5972
< li class =XXX > < p > Needs testing: multiple `< code > WWW-Authenticate</ code > ` headers, missing,
@@ -5948,7 +5994,7 @@ run these steps:
5948
5994
5949
5995
< li > < p > Let < var > username</ var > and < var > password</ var > be the result of prompting the end user
5950
5996
for a username and password, respectively, in < var > request</ var > 's
5951
- < a for =request > window </ a > .
5997
+ < a for =request > traversable for user prompts </ a > .
5952
5998
5953
5999
< li > < p > < a > Set the username</ a > given < var > request</ var > 's < a for =request > current URL</ a > and
5954
6000
< var > username</ var > .
@@ -5965,8 +6011,8 @@ run these steps:
5965
6011
< p > If < var > response</ var > 's < a for =response > status</ a > is 407, then:
5966
6012
5967
6013
< ol >
5968
- < li > < p > If < var > request</ var > 's < a for =request > window </ a > is
5969
- "< code > no-window </ code > ", then return a < a > network error</ a > .
6014
+ < li > < p > If < var > request</ var > 's < a for =request > traversable for user prompts </ a > is
6015
+ "< code > no-traversable </ code > ", then return a < a > network error</ a > .
5970
6016
5971
6017
< li class =XXX > < p > Needs testing: multiple `< code > Proxy-Authenticate</ code > ` headers, missing,
5972
6018
parsing issues.
@@ -5976,7 +6022,7 @@ run these steps:
5976
6022
5977
6023
< li >
5978
6024
< p > Prompt the end user as appropriate in < var > request</ var > 's
5979
- < a for =request > window </ a > and store the result as a
6025
+ < a for =request > traversable for user prompts </ a > and store the result as a
5980
6026
< a > proxy-authentication entry</ a > . [[!HTTP]]
5981
6027
5982
6028
< p class =note > Remaining details surrounding proxy authentication are defined by HTTP.
@@ -6156,10 +6202,9 @@ optional boolean <var>forceNewConnection</var> (default false), run these steps:
6156
6202
< p > If the HTTP request results in a TLS client certificate dialog, then:
6157
6203
6158
6204
< ol >
6159
- < li > < p > If < var > request</ var > 's < a for =request > window</ a >
6160
- is an < a > environment settings object</ a > , make the dialog
6161
- available in < var > request</ var > 's
6162
- < a for =request > window</ a > .
6205
+ < li > < p > If < var > request</ var > 's < a for =request > traversable for user prompts</ a > is a
6206
+ < a for =/ > traversable navigable</ a > , then make the dialog available in < var > request</ var > 's
6207
+ < a for =request > traversable for user prompts</ a > .
6163
6208
6164
6209
< li > < p > Otherwise, return a < a > network error</ a > .
6165
6210
</ ol >
@@ -7741,19 +7786,19 @@ constructor steps are:
7741
7786
< li > < p > Let < var > origin</ var > be < a > this</ a > 's < a > relevant settings object</ a > 's
7742
7787
< a for ="environment settings object "> origin</ a > .
7743
7788
7744
- < li > < p > Let < var > window </ var > be "< code > client</ code > ".
7789
+ < li > < p > Let < var > traversableForUserPrompts </ var > be "< code > client</ code > ".
7745
7790
7746
- < li > < p > If < var > request</ var > 's < a for =request > window </ a > is
7747
- an < a > environment settings object</ a > and its
7791
+ < li > < p > If < var > request</ var > 's < a for =request > traversable for user prompts </ a >
7792
+ is an < a > environment settings object</ a > and its
7748
7793
< a for ="environment settings object "> origin</ a > is < a > same origin</ a > with
7749
- < var > origin</ var > , then set < var > window </ var > to < var > request </ var > 's
7750
- < a for =request > window </ a > .
7794
+ < var > origin</ var > , then set < var > traversableForUserPrompts </ var > to
7795
+ < var > request </ var > 's < a for =request > traversable for user prompts </ a > .
7751
7796
7752
7797
< li > < p > If < var > init</ var > ["{{RequestInit/window}}"] < a for =map > exists</ a > and is non-null, then
7753
7798
< a > throw</ a > a {{TypeError}}.
7754
7799
7755
7800
< li > < p > If < var > init</ var > ["{{RequestInit/window}}"] < a for =map > exists</ a > , then set
7756
- < var > window </ var > to "< code > no-window </ code > ".
7801
+ < var > traversableForUserPrompts </ var > to "< code > no-traversable </ code > ".
7757
7802
7758
7803
< li >
7759
7804
< p > Set < var > request</ var > to a new < a for =/ > request</ a > with the following properties:
@@ -7774,8 +7819,8 @@ constructor steps are:
7774
7819
< dt > < a for =request > client</ a >
7775
7820
< dd > < a > This</ a > 's < a > relevant settings object</ a > .
7776
7821
7777
- < dt > < a for =request > window </ a >
7778
- < dd > < var > window </ var > .
7822
+ < dt > < a for =request > traversable for user prompts </ a >
7823
+ < dd > < var > traversableForUserPrompts </ var > .
7779
7824
7780
7825
< dt > < a for =request > internal priority</ a >
7781
7826
< dd > < var > request</ var > 's < a for =request > internal priority</ a > .
0 commit comments