@@ -96181,10 +96181,6 @@ dictionary <dfn dictionary>NavigationInterceptOptions</dfn> {
96181
96181
<span>NavigationScrollBehavior</span> <dfn dict-member for="NavigationInterceptOptions" data-x="dom-NavigationInterceptOptions-scroll">scroll</dfn>;
96182
96182
};
96183
96183
96184
- interface <dfn interface>NavigationPrecommitController</dfn> {
96185
- undefined <span data-x="dom-NavigationPrecommitController-redirect">redirect</span>(USVString url);
96186
- };
96187
-
96188
96184
enum <dfn enum>NavigationFocusReset</dfn> {
96189
96185
"<dfn enum-value for="NavigationFocusReset" data-x="dom-NavigationFocusReset-after-transition">after-transition</dfn>",
96190
96186
"<dfn enum-value for="NavigationFocusReset" data-x="dom-NavigationFocusReset-manual">manual</dfn>"
@@ -96195,8 +96191,7 @@ enum <dfn enum>NavigationScrollBehavior</dfn> {
96195
96191
"<dfn enum-value for="NavigationScrollBehavior" data-x="dom-NavigationScrollBehavior-manual">manual</dfn>"
96196
96192
};
96197
96193
96198
- callback <dfn callback>NavigationInterceptHandler</dfn> = <span data-x="idl-Promise">Promise</span><undefined> ();
96199
- callback <dfn callback>NavigationPrecommitHandler</dfn> = <span data-x="idl-Promise">Promise</span><undefined> (<span>NavigationPrecommitController</span> controller);</code></pre>
96194
+ callback <dfn callback>NavigationInterceptHandler</dfn> = <span data-x="idl-Promise">Promise</span><undefined> ();</code></pre>
96200
96195
96201
96196
<dl class="domintro">
96202
96197
<dt><code data-x=""><var>event</var>.<span subdfn data-x="dom-NavigateEvent-navigationType">navigationType</span></code></dt>
@@ -96320,8 +96315,8 @@ callback <dfn callback>NavigationPrecommitHandler</dfn> = <span data-x="idl-Prom
96320
96315
data-x="event-navigate">navigate</code> event has finished firing, but before the <code
96321
96316
data-x="dom-Navigation-currentEntry">navigation.currentEntry</code> property has been updated.
96322
96317
Rejecting this promise would abort the navigation and its effect, such as updating the URL and
96323
- session history. After all the precommit handlers are settled , the navigation can proceed to
96324
- commit and call the reset of the handlers. The <code
96318
+ session history. After all the precommit handlers are fulfilled , the navigation can proceed to
96319
+ commit and call the rest of the handlers. The <code
96325
96320
data-x="dom-NavigationInterceptOptions-precommitHandler">precommitHandler</code> option can only
96326
96321
be passed when the event is <code data-x="dom-Event-cancelable">cancelable</code>, trying to
96327
96322
pass a <code data-x="dom-NavigationInterceptOptions-precommitHandler">precommitHandler</code> to
@@ -96372,16 +96367,6 @@ callback <dfn callback>NavigationPrecommitHandler</dfn> = <span data-x="idl-Prom
96372
96367
before the navigation has committed, this method will throw an
96373
96368
<span>"<code>InvalidStateError</code>"</span> <code>DOMException</code>.</p>
96374
96369
</dd>
96375
-
96376
- <dt><code data-x=""><var>precommitController</var>.<span subdfn data-x="">dom-NavigationPrecommitController-redirect</span>(USVString <var>url</var>)</code></dt>
96377
- <dd><p>For "<code data-x="dom-NavigationType-push">push</code>" or "<code
96378
- data-x="dom-NavigationType-replace">replace</code>" navigations, sets the <code
96379
- data-x="dom-NavigationDestination-url">destination.url</code> to <var>url</var>, and restarts the
96380
- sequence of <code
96381
- data-x="dom-NavigationInterceptOptions-precommitHandler">precommitHandlers</code>. This would
96382
- throw a <span>"<code>SecurityError</code>"</span> <code>DOMException</code> if <var>url</var> is
96383
- not <span>same origin</span> with the document's <span
96384
- data-x="concept-document-url">URL</span>.</p></dd>
96385
96370
</dl>
96386
96371
96387
96372
<div w-nodev>
@@ -96546,63 +96531,6 @@ callback <dfn callback>NavigationPrecommitHandler</dfn> = <span data-x="idl-Prom
96546
96531
<span>"<code>InvalidStateError</code>"</span> <code>DOMException</code>.</p></li>
96547
96532
</ol>
96548
96533
96549
- <p>Each <code>NavigationPrecommitController</code> has a <code>NavigateEvent</code> <dfn
96550
- data-x="concept-NavigationPrecommitController-event">event</dfn>.</p>
96551
-
96552
- <p>Each <code>NavigationPrecommitController</code> has a number <dfn
96553
- data-x="concept-NavigationPrecommitController-next-handler-index">next handler index</dfn>,
96554
- initially 0.</p>
96555
-
96556
-
96557
- <p>The <dfn method for="NavigationPrecommitController"><code
96558
- data-x="dom-NavigationPrecommitController-redirect">redirect(<var>url</var>)</code></dfn> method
96559
- steps are:</p>
96560
-
96561
- <ol>
96562
- <li><p>If <span>this</span>'s <span
96563
- data-x="concept-NavigationPrecommitController-event">event</span>'s <code
96564
- data-x="dom-NavigateEvent-navigationType">navigationType</code> is neither "<code
96565
- data-x="dom-NavigationType-push">push</code>" or "<code
96566
- data-x="dom-NavigationType-replace">replace</code>", then throw an
96567
- <span>"<code>InvalidStateError</code>"</span> <code>DOMException</code>.</p></li>
96568
-
96569
- <li>
96570
- <p>If <span>this</span>'s <span
96571
- data-x="concept-NavigationPrecommitController-next-handler-index">next handler index</span> is
96572
- -1, then throw an <span>"<code>InvalidStateError</code>"</span> <code>DOMException</code>.</p>
96573
-
96574
- <p class="note">This prevents the controller object from being used after the precommit
96575
- handlers finish running.</p>
96576
- </li>
96577
-
96578
- <li><p>Let <var>document</var> be <span>this</span>'s <span>relevant global object</span>'s
96579
- <span data-x="concept-document-window">associated <code>Document</code></span>.</p></li>
96580
-
96581
- <li><p>Let <var>destinationURL</var> be the result of <span data-x="parse a URL">parsing</span>
96582
- <var>url</var> given <var>document</var>.</p></li>
96583
-
96584
- <li><p>If <var>destinationURL</var> is failure, then throw a
96585
- <span>"<code>SyntaxError</code>"</span> <code>DOMException</code>.</p></li>
96586
-
96587
- <li><p>If <var>document</var> <span data-x="can have its URL rewritten">cannot have its URL
96588
- rewritten</span> to <var>destinationURL</var>, then throw a
96589
- <span>"<code>SecurityError</code>"</span> <code>DOMException</code>.</p></li>
96590
-
96591
- <li><p>Set <span>this</span>'s <span
96592
- data-x="concept-NavigationPrecommitController-event">event</span>'s <code
96593
- data-x="dom-NavigateEvent-destination">destination</code>'s <span
96594
- data-x="concept-NavigationDestination-url">URL</span> to <var>destinationURL</var>.</p></li>
96595
-
96596
- <li>
96597
- <p>Set <span>this</span>'s <span
96598
- data-x="concept-NavigationPrecommitController-next-handler-index">next handler index</span> to
96599
- 0.</p>
96600
-
96601
- <p class="note">This restarts the sequence of precommit handlers, giving previous handlers an
96602
- opportunity to respond to the URL change.</p>
96603
- </li>
96604
- </ol>
96605
-
96606
96534
96607
96535
</div>
96608
96536
@@ -96744,6 +96672,131 @@ interface <dfn interface>NavigationDestination</dfn> {
96744
96672
data-x="concept-NavigationDestination-state">state</span>).</p>
96745
96673
96746
96674
96675
+ <h6>The <code>NavigationPrecommitController</code> interface</h6>
96676
+
96677
+ <pre><code class="idl">[Exposed=Window]
96678
+ interface <dfn interface>NavigationPrecommitController</dfn> {
96679
+ undefined <span data-x="dom-NavigationPrecommitController-redirect">redirect</span>(USVString url);
96680
+ };
96681
+
96682
+ callback <dfn callback>NavigationPrecommitHandler</dfn> = <span data-x="idl-Promise">Promise</span><undefined> (<span>NavigationPrecommitController</span> controller);</code></pre>
96683
+
96684
+ <dl class="domintro">
96685
+ <dt><code data-x=""><var>precommitController</var>.<span subdfn data-x="dom-NavigationPrecommitController-redirect">redirect</span>(USVString <var>url</var>)</code></dt>
96686
+ <dd><p>For "<code data-x="dom-NavigationType-push">push</code>" or "<code
96687
+ data-x="dom-NavigationType-replace">replace</code>" navigations, sets the <code
96688
+ data-x="dom-NavigationDestination-url">destination.url</code> to <var>url</var>, and restarts the
96689
+ sequence of <code
96690
+ data-x="dom-NavigationInterceptOptions-precommitHandler">precommitHandlers</code>. This would
96691
+ throw a <span>"<code>SecurityError</code>"</span> <code>DOMException</code> if <var>url</var> is
96692
+ not <span>same origin</span> with the document's <span
96693
+ data-x="concept-document-url">URL</span>.</p></dd>
96694
+ </dl>
96695
+
96696
+ <p>Each <code>NavigationPrecommitController</code> has a <code>NavigateEvent</code> <dfn
96697
+ data-x="concept-NavigationPrecommitController-event">event</dfn>.</p>
96698
+
96699
+ <p>Each <code>NavigationPrecommitController</code> has a number <dfn
96700
+ data-x="concept-NavigationPrecommitController-next-handler-index">next handler index</dfn>,
96701
+ initially 0.</p>
96702
+
96703
+ <p>The <dfn method for="NavigationPrecommitController"><code
96704
+ data-x="dom-NavigationPrecommitController-redirect">redirect(<var>url</var>)</code></dfn> method
96705
+ steps are:</p>
96706
+
96707
+ <ol>
96708
+ <li><p>If <span>this</span>'s <span
96709
+ data-x="concept-NavigationPrecommitController-event">event</span>'s <code
96710
+ data-x="dom-NavigateEvent-navigationType">navigationType</code> is neither "<code
96711
+ data-x="dom-NavigationType-push">push</code>" or "<code
96712
+ data-x="dom-NavigationType-replace">replace</code>", then throw an
96713
+ <span>"<code>InvalidStateError</code>"</span> <code>DOMException</code>.</p></li>
96714
+
96715
+ <li>
96716
+ <p>If <span>this</span>'s <span
96717
+ data-x="concept-NavigationPrecommitController-next-handler-index">next handler index</span>
96718
+ is -1, then throw an <span>"<code>InvalidStateError</code>"</span>
96719
+ <code>DOMException</code>.</p>
96720
+
96721
+ <p class="note">This prevents the controller object from being used after the precommit
96722
+ handlers finish running.</p>
96723
+ </li>
96724
+
96725
+ <li><p>Let <var>document</var> be <span>this</span>'s <span>relevant global object</span>'s
96726
+ <span data-x="concept-document-window">associated <code>Document</code></span>.</p></li>
96727
+
96728
+ <li><p>Let <var>destinationURL</var> be the result of <span data-x="parse a
96729
+ URL">parsing</span> <var>url</var> given <var>document</var>.</p></li>
96730
+
96731
+ <li><p>If <var>destinationURL</var> is failure, then throw a
96732
+ <span>"<code>SyntaxError</code>"</span> <code>DOMException</code>.</p></li>
96733
+
96734
+ <li><p>If <var>document</var> <span data-x="can have its URL rewritten">cannot have its URL
96735
+ rewritten</span> to <var>destinationURL</var>, then throw a
96736
+ <span>"<code>SecurityError</code>"</span> <code>DOMException</code>.</p></li>
96737
+
96738
+ <li><p>Set <span>this</span>'s <span
96739
+ data-x="concept-NavigationPrecommitController-event">event</span>'s <code
96740
+ data-x="dom-NavigateEvent-destination">destination</code>'s <span
96741
+ data-x="concept-NavigationDestination-url">URL</span> to <var>destinationURL</var>.</p></li>
96742
+
96743
+ <li>
96744
+ <p>Set <span>this</span>'s <span
96745
+ data-x="concept-NavigationPrecommitController-next-handler-index">next handler index</span>
96746
+ to 0.</p>
96747
+
96748
+ <p class="note">This restarts the sequence of precommit handlers, giving previous handlers
96749
+ an opportunity to respond to the URL change.</p>
96750
+ </li>
96751
+ </ol>
96752
+ <p>To <dfn>process navigation precommit handlers</dfn> given a
96753
+ <code>NavigationPrecommitController</code> <var>controller</var>:</p>
96754
+
96755
+ <ol>
96756
+ <li><p>Let <var>event</var> be <var>controller</var>'s <span
96757
+ data-x="concept-NavigationPrecommitController-event">event</span>.</p></li>
96758
+
96759
+ <li><p>If <var>event</var>'s <span data-x="concept-NavigateEvent-abort-controller">abort
96760
+ controller</span>'s <span data-x="concept-AbortController-signal">signal</span> is <span
96761
+ data-x="AbortSignal-aborted">aborted</span>, then return.</p></li>
96762
+
96763
+ <li><p>Let <var>handlerList</var> be <var>event</var>'s <span
96764
+ data-x="concept-NavigateEvent-navigation-precommit-handler-list">navigation precommit
96765
+ handler list</span>.</p></li>
96766
+
96767
+ <li>
96768
+ <p>If <var>handlerList</var>'s <span data-x="list size">size</span> is
96769
+ <var>controller</var>'s <span
96770
+ data-x="concept-NavigationPrecommitController-next-handler-index">next handler
96771
+ index</span>:
96772
+
96773
+ <ol>
96774
+ <li><p>Set <var>controller</var>'s <span
96775
+ data-x="concept-NavigationPrecommitController-next-handler-index">next handler
96776
+ index</span> to -1.</p></li>
96777
+
96778
+ <li><p><span data-x="NavigateEvent-commit">commit</span> <var>event</var>.</p></li>
96779
+
96780
+ <li><p>Return.</p></li>
96781
+ </ol>
96782
+
96783
+ <li><p>Let <var>handlerPromise</var> be the result of running
96784
+ <var>handlerList</var>[<var>controller</var>'s <span
96785
+ data-x="concept-NavigationPrecommitController-next-handler-index">next handler
96786
+ index</span>], with <var>controller</var> as an argument.</p>
96787
+
96788
+ <li><p>Increment <var>controller</var>'s <span
96789
+ data-x="concept-NavigationPrecommitController-next-handler-index">next handler index</span>
96790
+ by 1.</p>
96791
+
96792
+ <li><p><span>Upon fulfillment</span> of <var>handlerPromise</var>, <span>process navigation
96793
+ precommit handlers</span> given <var>controller</var>.</p></li>
96794
+
96795
+ <li><p><span>Upon rejection</span> of <var>handlerPromise</var> given a
96796
+ <var>rejectionReason</var>, <span data-x="cancel a NavigateEvent">cancel</span>
96797
+ <var>event</var> given <var>rejectionReason</var>.</p></li>
96798
+ </ol>
96799
+
96747
96800
<h6 id="navigate-event-firing">Firing the event</h6>
96748
96801
96749
96802
<p>Other parts of the standard fire the <code data-x="event-navigate">navigate</code> event,
@@ -97150,53 +97203,6 @@ interface <dfn interface>NavigationDestination</dfn> {
97150
97203
<li><p>Return false.</p></li>
97151
97204
</ol>
97152
97205
97153
- <p>To <dfn>process navigation precommit handlers</dfn> given a
97154
- <code>NavigationPrecommitController</code> <var>controller</var>:</p>
97155
-
97156
- <ol>
97157
- <li><p>Let <var>event</var> be <var>controller</var>'s <span
97158
- data-x="concept-NavigationPrecommitController-event">event</span>.</p></li>
97159
-
97160
- <li><p>If <var>event</var>'s <span data-x="concept-NavigateEvent-abort-controller">abort
97161
- controller</span>'s <span data-x="concept-AbortController-signal">signal</span> is <span
97162
- data-x="AbortSignal-aborted">aborted</span>, then return.</p></li>
97163
-
97164
- <li><p>Let <var>handlerList</var> be <var>event</var>'s <span
97165
- data-x="concept-NavigateEvent-navigation-precommit-handler-list">navigation precommit handler
97166
- list</span>.</p></li>
97167
-
97168
- <li>
97169
- <p>If <var>handlerList</var>'s <span data-x="list size">size</span> is <var>controller</var>'s
97170
- <span data-x="concept-NavigationPrecommitController-next-handler-index">next handler
97171
- index</span>:
97172
-
97173
- <ol>
97174
- <li><p>Set <var>controller</var>'s <span
97175
- data-x="concept-NavigationPrecommitController-next-handler-index">next handler index</span> to
97176
- -1.</p></li>
97177
-
97178
- <li><p><span data-x="NavigateEvent-commit">commit</span> <var>event</var>.</p></li>
97179
-
97180
- <li><p>Return.</p></li>
97181
- </ol>
97182
-
97183
- <li><p>Let <var>handlerPromise</var> be the result of running
97184
- <var>handlerList</var>[<var>controller</var>'s <span
97185
- data-x="concept-NavigationPrecommitController-next-handler-index">next handler index</span>],
97186
- with <var>controller</var> as an argument.</p>
97187
-
97188
- <li><p>Increment <var>controller</var>'s <span
97189
- data-x="concept-NavigationPrecommitController-next-handler-index">next handler index</span> by
97190
- 1.</p>
97191
-
97192
- <li><p><span>Upon fulfillment</span> of <var>handlerPromise</var>, <span>process navigation
97193
- precommit handlers</span> given <var>controller</var>.</p></li>
97194
-
97195
- <li><p><span>Upon rejection</span> of <var>handlerPromise</var> given a
97196
- <var>rejectionReason</var>, <span data-x="cancel a NavigateEvent">cancel</span> <var>event</var>
97197
- given <var>rejectionReason</var>.</p></li>
97198
- </ol>
97199
-
97200
97206
<p>To <dfn data-x="NavigateEvent-commit">commit</dfn> a <code>NavigateEvent</code>
97201
97207
<var>event</var>:</p>
97202
97208
0 commit comments