Skip to content

Commit 952352e

Browse files
committed
Move PrecommitController to own section
1 parent 6bbf015 commit 952352e

File tree

1 file changed

+128
-122
lines changed

1 file changed

+128
-122
lines changed

source

+128-122
Original file line numberDiff line numberDiff line change
@@ -96181,10 +96181,6 @@ dictionary <dfn dictionary>NavigationInterceptOptions</dfn> {
9618196181
<span>NavigationScrollBehavior</span> <dfn dict-member for="NavigationInterceptOptions" data-x="dom-NavigationInterceptOptions-scroll">scroll</dfn>;
9618296182
};
9618396183

96184-
interface <dfn interface>NavigationPrecommitController</dfn> {
96185-
undefined <span data-x="dom-NavigationPrecommitController-redirect">redirect</span>(USVString url);
96186-
};
96187-
9618896184
enum <dfn enum>NavigationFocusReset</dfn> {
9618996185
"<dfn enum-value for="NavigationFocusReset" data-x="dom-NavigationFocusReset-after-transition">after-transition</dfn>",
9619096186
"<dfn enum-value for="NavigationFocusReset" data-x="dom-NavigationFocusReset-manual">manual</dfn>"
@@ -96195,8 +96191,7 @@ enum <dfn enum>NavigationScrollBehavior</dfn> {
9619596191
"<dfn enum-value for="NavigationScrollBehavior" data-x="dom-NavigationScrollBehavior-manual">manual</dfn>"
9619696192
};
9619796193

96198-
callback <dfn callback>NavigationInterceptHandler</dfn> = <span data-x="idl-Promise">Promise</span>&lt;undefined> ();
96199-
callback <dfn callback>NavigationPrecommitHandler</dfn> = <span data-x="idl-Promise">Promise</span>&lt;undefined> (<span>NavigationPrecommitController</span> controller);</code></pre>
96194+
callback <dfn callback>NavigationInterceptHandler</dfn> = <span data-x="idl-Promise">Promise</span>&lt;undefined> ();</code></pre>
9620096195

9620196196
<dl class="domintro">
9620296197
<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
9632096315
data-x="event-navigate">navigate</code> event has finished firing, but before the <code
9632196316
data-x="dom-Navigation-currentEntry">navigation.currentEntry</code> property has been updated.
9632296317
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
9632596320
data-x="dom-NavigationInterceptOptions-precommitHandler">precommitHandler</code> option can only
9632696321
be passed when the event is <code data-x="dom-Event-cancelable">cancelable</code>, trying to
9632796322
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
9637296367
before the navigation has committed, this method will throw an
9637396368
<span>"<code>InvalidStateError</code>"</span> <code>DOMException</code>.</p>
9637496369
</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>
9638596370
</dl>
9638696371

9638796372
<div w-nodev>
@@ -96546,63 +96531,6 @@ callback <dfn callback>NavigationPrecommitHandler</dfn> = <span data-x="idl-Prom
9654696531
<span>"<code>InvalidStateError</code>"</span> <code>DOMException</code>.</p></li>
9654796532
</ol>
9654896533

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-
9660696534

9660796535
</div>
9660896536

@@ -96744,6 +96672,131 @@ interface <dfn interface>NavigationDestination</dfn> {
9674496672
data-x="concept-NavigationDestination-state">state</span>).</p>
9674596673

9674696674

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>&lt;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+
9674796800
<h6 id="navigate-event-firing">Firing the event</h6>
9674896801

9674996802
<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> {
9715097203
<li><p>Return false.</p></li>
9715197204
</ol>
9715297205

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-
9720097206
<p>To <dfn data-x="NavigateEvent-commit">commit</dfn> a <code>NavigateEvent</code>
9720197207
<var>event</var>:</p>
9720297208

0 commit comments

Comments
 (0)