Skip to content

Commit 3b1e3e2

Browse files
committed
Return error on abort during reload
1 parent 6dc9c2b commit 3b1e3e2

File tree

1 file changed

+25
-41
lines changed

1 file changed

+25
-41
lines changed

source

Lines changed: 25 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -99404,9 +99404,8 @@ interface <dfn interface>NavigationHistoryEntry</dfn> : <span>EventTarget</span>
9940499404
data-x="navigation-hh">historyHandling</i> set to <var>options</var>["<code
9940599405
data-x="dom-NavigationNavigateOptions-history">history</code>"], <i
9940699406
data-x="navigation-navigation-api-state">navigationAPIState</i> set to
99407-
<var>serializedState</var>, and <i
99408-
data-x="navigation-api-method-tracker">apiMethodTracker</i> set to
99409-
<var>apiMethodTracker</var>.</p>
99407+
<var>serializedState</var>, and <i data-x="navigation-api-method-tracker">apiMethodTracker</i>
99408+
set to <var>apiMethodTracker</var>.</p>
9941099409

9941199410
<p class="note">Unlike <code data-x="dom-location-assign">location.assign()</code> and friends,
9941299411
which are exposed across <span data-x="same origin-domain">origin-domain</span> boundaries,
@@ -99419,12 +99418,6 @@ interface <dfn interface>NavigationHistoryEntry</dfn> : <span>EventTarget</span>
9941999418
<code>Navigation</code> object itself (i.e., <var>document</var>).</p>
9942099419
</li>
9942199420

99422-
<li><p>If <var>apiMethodTracker</var>'s<span
99423-
data-x="navigation-api-method-tracker-phase">phase</span> is not "<code
99424-
data-x="">ongoing</code>", then return an <span data-x="navigation-api-early-error-result">early
99425-
error result</span> for an <span>"<code>AbortError</code>"</span>
99426-
<code>DOMException</code>.</p></li>
99427-
9942899421
<li><p>Return a <span>navigation API method tracker-derived result</span> for
9942999422
<var>apiMethodTracker</var>.</p></li>
9943099423
</ol>
@@ -99694,12 +99687,22 @@ interface <dfn interface>NavigationHistoryEntry</dfn> : <span>EventTarget</span>
9969499687
</div>
9969599688

9969699689
<div algorithm>
99697-
<p>A <dfn>navigation API method tracker-derived result</dfn> for a <span>navigation API method
99698-
tracker</span> is a <code>NavigationResult</code> dictionary instance given by «[ "<code
99699-
data-x="dom-NavigationResult-committed">committed</code>" → <var>apiMethodTracker</var>'s <span
99700-
data-x="navigation-api-method-tracker-committed">committed promise</span>, "<code
99701-
data-x="dom-NavigationResult-finished">finished</code>" → <var>apiMethodTracker</var>'s <span
99702-
data-x="navigation-api-method-tracker-finished">finished promise</span> ]».</p>
99690+
<p>To compute the <dfn>navigation API method tracker-derived result</dfn> for a <span>navigation
99691+
API method tracker</span>-or-null <var>apiMethodTracker</var>:</p>
99692+
99693+
<ol>
99694+
<li><p>If <var>apiMethodTracker</var> is null, or if its <span
99695+
data-x="navigation-api-method-tracker-promoted">promoted</span> is false, then return an <span
99696+
data-x="navigation-api-early-error-result">early error result</span> for an
99697+
<span>"<code>AbortError</code>"</span> <code>DOMException</code>.</p></li>
99698+
99699+
<li><p>Return a <code>NavigationResult</code> dictionary instance given by «[ "<code
99700+
data-x="dom-NavigationResult-committed">committed</code>" → <var>apiMethodTracker</var>'s <span
99701+
data-x="navigation-api-method-tracker-committed">committed promise</span>, "<code
99702+
data-x="dom-NavigationResult-finished">finished</code>" → <var>apiMethodTracker</var>'s <span
99703+
data-x="navigation-api-method-tracker-finished">finished promise</span> ]».</p></li>
99704+
</ol>
99705+
9970399706
</div>
9970499707

9970599708
</div>
@@ -99837,9 +99840,8 @@ const p2 = navigation.navigate(url2).finished;</code></pre>
9983799840
<li><p>A <dfn data-x="navigation-api-method-tracker-finished">finished promise</dfn>, a
9983899841
promise</p></li>
9983999842

99840-
<li><p>A <dfn data-x="navigation-api-method-tracker-phase">phase</dfn>, one of "<code
99841-
data-x="">upcoming</code>", "<code data-x="">ongoing</code>", "<code data-x="">defunct</code>",
99842-
or "<code data-x="">traverse</code>".</p></li>
99843+
<li><p>A <dfn data-x="navigation-api-method-tracker-promoted">promoted</dfn>, a boolean,
99844+
initially set to false.</p></li>
9984399845
</ul>
9984499846

9984599847
<p>All this state is then managed via the following algorithms.</p>
@@ -99881,11 +99883,8 @@ const p2 = navigation.navigate(url2).finished;</code></pre>
9988199883
</div>
9988299884
</li>
9988399885

99884-
<li><p>Let <var>phase</var> be "<code data-x="">upcoming</code>".</p></li>
99885-
9988699886
<li id="dont-always-set-upcoming-non-traverse-api-method-tracker">
99887-
<p>If <var>navigation</var> <span>has entries and events disabled</span>, then set
99888-
<var>phase</var> to "<code data-x="">defunct</code>".</p>
99887+
<p>If <var>navigation</var> <span>has entries and events disabled</span>, then return null.</p>
9988999888

9989099889
<p class="note">If <var>navigation</var> <span>has entries and events disabled</span>, then
9989199890
<var>committedPromise</var> and <var>finishedPromise</var> will never fulfill (since we never
@@ -99921,9 +99920,6 @@ const p2 = navigation.navigate(url2).finished;</code></pre>
9992199920

9992299921
<dt><span data-x="navigation-api-method-tracker-finished">finished promise</span></dt>
9992399922
<dd><var>finishedPromise</var></dd>
99924-
99925-
<dt><span data-x="navigation-api-method-tracker-phase">phase</span></dt>
99926-
<dd><var>phase</var></dd>
9992799923
</dl>
9992899924
</li>
9992999925
</ol>
@@ -99969,9 +99965,6 @@ const p2 = navigation.navigate(url2).finished;</code></pre>
9996999965

9997099966
<dt><span data-x="navigation-api-method-tracker-finished">finished promise</span></dt>
9997199967
<dd><var>finishedPromise</var></dd>
99972-
99973-
<dt><span data-x="navigation-api-method-tracker-phase">phase</span></dt>
99974-
<dd><code data-x="">traverse</code></dd>
9997599968
</dl>
9997699969
</li>
9997799970

@@ -101362,22 +101355,14 @@ interface <dfn interface>NavigationDestination</dfn> {
101362101355
<li><p><span>Assert</span>: <var>navigation</var>'s <span>upcoming traverse API method
101363101356
trackers</span> <span data-x="list is empty">is empty</span>.</p></li>
101364101357

101365-
<li><p><span>Assert</span>: <var>apiMethodTracker</var> is null, or its <span
101366-
data-x="navigation-api-method-tracker-phase">phase</span> is "<code
101367-
data-x="">defunct</code>".</p></li>
101368-
101369101358
<li><p>Return true.</p></li>
101370101359
</ol>
101371101360

101372101361
<p class="note">These assertions holds because <code
101373101362
data-x="dom-Navigation-traverseTo">traverseTo()</code>, <code
101374101363
data-x="dom-Navigation-back">back()</code>, and <code
101375101364
data-x="dom-Navigation-forward">forward()</code> will immediately fail when entries and events
101376-
are disabled (since there are no entries to traverse to), and if our starting point is instead
101377-
<code data-x="dom-Navigation-navigate">navigate()</code> or <code
101378-
data-x="dom-Navigation-reload">reload()</code>, then the <span>navigation API method
101379-
tracker</span> was <a
101380-
href="#dont-always-set-upcoming-non-traverse-api-method-tracker">defunct</a>.</p>
101365+
are disabled (since there are no entries to traverse to).</p>
101381101366
</li>
101382101367

101383101368
<li><p><span>Assert</span>: <var>navigation</var>'s <span>ongoing API method tracker</span> is
@@ -101418,8 +101403,7 @@ interface <dfn interface>NavigationDestination</dfn> {
101418101403
</li>
101419101404

101420101405
<li><p>If <var>apiMethodTracker</var> is not null, then set <var>apiMethodTracker</var>'s <span
101421-
data-x="navigation-api-method-tracker-phase">phase</span> to "<code
101422-
data-x="">ongoing</code>".</p></li>
101406+
data-x="navigation-api-method-tracker-promoted">promoted</span> to true.</p></li>
101423101407

101424101408
<li><p>Set <var>navigation</var>'s <span>ongoing API method tracker</span> to
101425101409
<var>apiMethodTracker</var>.</p></li>
@@ -107640,8 +107624,8 @@ location.href = '#foo';</code></pre>
107640107624
optional <span>user navigation involvement</span> <dfn
107641107625
data-x="reload-user-involvement"><var>userInvolvement</var></dfn> (default "<code
107642107626
data-x="uni-none">none</code>"), and an optional <span>navigation API method
107643-
tracker</span>-or-null <dfn
107644-
data-x="reload-api-method-tracker"><var>apiMethodTracker</var></dfn> (default null):</p>
107627+
tracker</span>-or-null <dfn data-x="reload-api-method-tracker"><var>apiMethodTracker</var></dfn>
107628+
(default null):</p>
107645107629

107646107630
<ol>
107647107631
<li>

0 commit comments

Comments
 (0)