Skip to content

Commit 279561e

Browse files
committed
Move PrecommitHandler to before NavDest
1 parent 952352e commit 279561e

File tree

1 file changed

+130
-125
lines changed

1 file changed

+130
-125
lines changed

source

+130-125
Original file line numberDiff line numberDiff line change
@@ -96532,6 +96532,136 @@ callback <dfn callback>NavigationInterceptHandler</dfn> = <span data-x="idl-Prom
9653296532
</ol>
9653396533

9653496534

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>&lt;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+
9653596665
</div>
9653696666

9653796667
<h6>The <code>NavigationDestination</code> interface</h6>
@@ -96672,131 +96802,6 @@ interface <dfn interface>NavigationDestination</dfn> {
9667296802
data-x="concept-NavigationDestination-state">state</span>).</p>
9667396803

9667496804

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-
9680096805
<h6 id="navigate-event-firing">Firing the event</h6>
9680196806

9680296807
<p>Other parts of the standard fire the <code data-x="event-navigate">navigate</code> event,

0 commit comments

Comments
 (0)