@@ -96532,6 +96532,136 @@ callback <dfn callback>NavigationInterceptHandler</dfn> = <span data-x="idl-Prom
96532
96532
</ol>
96533
96533
96534
96534
96535
+ </div>
96536
+
96537
+ <h6>The <code>NavigationPrecommitController</code> interface</h6>
96538
+
96539
+ <pre><code class="idl">[Exposed=Window]
96540
+ interface <dfn interface>NavigationPrecommitController</dfn> {
96541
+ undefined <span data-x="dom-NavigationPrecommitController-redirect">redirect</span>(USVString url);
96542
+ };
96543
+
96544
+ callback <dfn callback>NavigationPrecommitHandler</dfn> = <span data-x="idl-Promise">Promise</span><undefined> (<span>NavigationPrecommitController</span> controller);</code></pre>
96545
+
96546
+ <dl class="domintro">
96547
+ <dt><code data-x=""><var>precommitController</var>.<span subdfn data-x="dom-NavigationPrecommitController-redirect">redirect</span>(USVString <var>url</var>)</code></dt>
96548
+ <dd><p>For "<code data-x="dom-NavigationType-push">push</code>" or "<code
96549
+ data-x="dom-NavigationType-replace">replace</code>" navigations, sets the <code
96550
+ data-x="dom-NavigationDestination-url">destination.url</code> to <var>url</var>, and restarts the
96551
+ sequence of <code
96552
+ data-x="dom-NavigationInterceptOptions-precommitHandler">precommitHandlers</code>. This would
96553
+ throw a <span>"<code>SecurityError</code>"</span> <code>DOMException</code> if <var>url</var> is
96554
+ not <span>same origin</span> with the document's <span
96555
+ data-x="concept-document-url">URL</span>.</p></dd>
96556
+ </dl>
96557
+
96558
+ <div w-nodev>
96559
+
96560
+ <p>Each <code>NavigationPrecommitController</code> has a <code>NavigateEvent</code> <dfn
96561
+ data-x="concept-NavigationPrecommitController-event">event</dfn>.</p>
96562
+
96563
+ <p>Each <code>NavigationPrecommitController</code> has a number <dfn
96564
+ data-x="concept-NavigationPrecommitController-next-handler-index">next handler index</dfn>,
96565
+ initially 0.</p>
96566
+
96567
+ <p>The <dfn method for="NavigationPrecommitController"><code
96568
+ data-x="dom-NavigationPrecommitController-redirect">redirect(<var>url</var>)</code></dfn> method
96569
+ steps are:</p>
96570
+
96571
+ <ol>
96572
+ <li><p>If <span>this</span>'s <span
96573
+ data-x="concept-NavigationPrecommitController-event">event</span>'s <code
96574
+ data-x="dom-NavigateEvent-navigationType">navigationType</code> is neither "<code
96575
+ data-x="dom-NavigationType-push">push</code>" or "<code
96576
+ data-x="dom-NavigationType-replace">replace</code>", then throw an
96577
+ <span>"<code>InvalidStateError</code>"</span> <code>DOMException</code>.</p></li>
96578
+
96579
+ <li>
96580
+ <p>If <span>this</span>'s <span
96581
+ data-x="concept-NavigationPrecommitController-next-handler-index">next handler index</span> is
96582
+ -1, then throw an <span>"<code>InvalidStateError</code>"</span> <code>DOMException</code>.</p>
96583
+
96584
+ <p class="note">This prevents the controller object from being used after the precommit handlers
96585
+ finish running.</p>
96586
+ </li>
96587
+
96588
+ <li><p>Let <var>document</var> be <span>this</span>'s <span>relevant global object</span>'s <span
96589
+ data-x="concept-document-window">associated <code>Document</code></span>.</p></li>
96590
+
96591
+ <li><p>Let <var>destinationURL</var> be the result of <span data-x="parse a URL">parsing</span>
96592
+ <var>url</var> given <var>document</var>.</p></li>
96593
+
96594
+ <li><p>If <var>destinationURL</var> is failure, then throw a
96595
+ <span>"<code>SyntaxError</code>"</span> <code>DOMException</code>.</p></li>
96596
+
96597
+ <li><p>If <var>document</var> <span data-x="can have its URL rewritten">cannot have its URL
96598
+ rewritten</span> to <var>destinationURL</var>, then throw a
96599
+ <span>"<code>SecurityError</code>"</span> <code>DOMException</code>.</p></li>
96600
+
96601
+ <li><p>Set <span>this</span>'s <span
96602
+ data-x="concept-NavigationPrecommitController-event">event</span>'s <code
96603
+ data-x="dom-NavigateEvent-destination">destination</code>'s <span
96604
+ data-x="concept-NavigationDestination-url">URL</span> to <var>destinationURL</var>.</p></li>
96605
+
96606
+ <li>
96607
+ <p>Set <span>this</span>'s <span
96608
+ data-x="concept-NavigationPrecommitController-next-handler-index">next handler index</span> to
96609
+ 0.</p>
96610
+
96611
+ <p class="note">This restarts the sequence of precommit handlers, giving previous handlers an
96612
+ opportunity to respond to the URL change.</p>
96613
+ </li>
96614
+ </ol>
96615
+
96616
+ <p>To <dfn data-x="process navigation precommit handlers">process</dfn> a
96617
+ <code>NavigationPrecommitController</code> <var>controller</var>:</p>
96618
+
96619
+ <ol>
96620
+ <li><p>Let <var>event</var> be <var>controller</var>'s <span
96621
+ data-x="concept-NavigationPrecommitController-event">event</span>.</p></li>
96622
+
96623
+ <li><p>If <var>event</var>'s <span data-x="concept-NavigateEvent-abort-controller">abort
96624
+ controller</span>'s <span data-x="concept-AbortController-signal">signal</span> is <span
96625
+ data-x="AbortSignal-aborted">aborted</span>, then return.</p></li>
96626
+
96627
+ <li><p>Let <var>handlerList</var> be <var>event</var>'s <span
96628
+ data-x="concept-NavigateEvent-navigation-precommit-handler-list">navigation precommit handler
96629
+ list</span>.</p></li>
96630
+
96631
+ <li>
96632
+ <p>If <var>handlerList</var>'s <span data-x="list size">size</span> is <var>controller</var>'s
96633
+ <span data-x="concept-NavigationPrecommitController-next-handler-index">next handler
96634
+ index</span>:
96635
+
96636
+ <ol>
96637
+ <li><p>Set <var>controller</var>'s <span
96638
+ data-x="concept-NavigationPrecommitController-next-handler-index">next handler index</span> to
96639
+ -1.</p></li>
96640
+
96641
+ <li><p><span data-x="NavigateEvent-commit">Commit</span> <var>event</var>.</p></li>
96642
+
96643
+ <li><p>Return.</p></li>
96644
+ </ol>
96645
+ </li>
96646
+
96647
+ <li><p>Let <var>handlerPromise</var> be the result of running
96648
+ <var>handlerList</var>[<var>controller</var>'s <span
96649
+ data-x="concept-NavigationPrecommitController-next-handler-index">next handler index</span>],
96650
+ with <var>controller</var> as an argument.</p></li>
96651
+
96652
+ <li><p>Increment <var>controller</var>'s <span
96653
+ data-x="concept-NavigationPrecommitController-next-handler-index">next handler index</span> by
96654
+ 1.</p></li>
96655
+
96656
+ <li><p><span>Upon fulfillment</span> of <var>handlerPromise</var>, <span>process navigation
96657
+ precommit handlers</span> given <var>controller</var>.</p></li>
96658
+
96659
+ <li><p><span>Upon rejection</span> of <var>handlerPromise</var> given a
96660
+ <var>rejectionReason</var>, <span data-x="cancel a NavigateEvent">cancel</span> <var>event</var>
96661
+ given <var>rejectionReason</var>.</p></li>
96662
+ </ol>
96663
+
96664
+
96535
96665
</div>
96536
96666
96537
96667
<h6>The <code>NavigationDestination</code> interface</h6>
@@ -96672,131 +96802,6 @@ interface <dfn interface>NavigationDestination</dfn> {
96672
96802
data-x="concept-NavigationDestination-state">state</span>).</p>
96673
96803
96674
96804
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
-
96800
96805
<h6 id="navigate-event-firing">Firing the event</h6>
96801
96806
96802
96807
<p>Other parts of the standard fire the <code data-x="event-navigate">navigate</code> event,
0 commit comments