Skip to content

Commit 75cd4b4

Browse files
committed
Compute "allowed to download" synchronously in navigation
Helps with #1130 by removing a deep-in-the-algorithm-tree usage of source browsing context. Does not close #5597, but fixes the actual problems posed by the current architecture.
1 parent e0b554b commit 75cd4b4

File tree

1 file changed

+18
-15
lines changed

1 file changed

+18
-15
lines changed

source

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -84617,6 +84617,10 @@ interface <dfn>Location</dfn> { // but see also <a href="#the-location-interface
8461784617
flags</span> given <var>browsingContext</var> and <var>browsingContext</var>'s <span
8461884618
data-x="bc-container">container</span>.</p></li>
8461984619

84620+
<li><p>Let <var>allowedToDownload</var> be the result of running the <span>allowed to
84621+
download</span> algorithm given the <span>source browsing context</span> and
84622+
<var>browsingContext</var>.</p></li>
84623+
8462084624
<li><p>Return to whatever algorithm invoked the navigation steps and continue running these steps
8462184625
<span>in parallel</span>.</p></li>
8462284626

@@ -84670,8 +84674,8 @@ interface <dfn>Location</dfn> { // but see also <a href="#the-location-interface
8467084674
<var>browsingContext</var>, and <span data-x="navigation-params-hh">history
8467184675
handling</span> is <var>historyHandling</var>.</p></li>
8467284676

84673-
<li><p>Run <span>process a navigate response</span> with <var>navigationType</var>, the
84674-
<span>source browsing context</span>, and <var>navigationParams</var>.</p></li>
84677+
<li><p>Run <span>process a navigate response</span> with <var>navigationType</var>,
84678+
<var>allowedToDownload</var>, and <var>navigationParams</var>.</p></li>
8467584679
</ol>
8467684680
</dd>
8467784681

@@ -84721,8 +84725,8 @@ interface <dfn>Location</dfn> { // but see also <a href="#the-location-interface
8472184725
<var>browsingContext</var>, and <span data-x="navigation-params-hh">history
8472284726
handling</span> is <var>historyHandling</var>.</p></li>
8472384727

84724-
<li><p>Run <span>process a navigate response</span> with <var>navigationType</var>, the
84725-
<span>source browsing context</span>, and <var>navigationParams</var>.</p></li>
84728+
<li><p>Run <span>process a navigate response</span> with <var>navigationType</var>,
84729+
<var>allowedToDownload</var>, and <var>navigationParams</var>.</p></li>
8472684730
</ol>
8472784731

8472884732
<p class="example">So for example a <span data-x="javascript
@@ -84741,7 +84745,7 @@ interface <dfn>Location</dfn> { // but see also <a href="#the-location-interface
8474184745
is a <span>fetch scheme</span></dt>
8474284746
<dd><p>Run <span>process a navigate fetch</span> given <var>resource</var>, the <span>source
8474384747
browsing context</span>, <var>browsingContext</var>, <var>navigationType</var>,
84744-
<var>sandboxFlags</var>, <var>incumbentNavigationOrigin</var>,
84748+
<var>sandboxFlags</var>, <var>allowedToDownload</var>, <var>incumbentNavigationOrigin</var>,
8474584749
<var>activeDocumentNavigationOrigin</var>, and <var>historyHandling</var>.</p></dd>
8474684750

8474784751
<dt>Otherwise, <var>resource</var> is a <span data-x="concept-request">request</span> whose
@@ -84757,10 +84761,10 @@ interface <dfn>Location</dfn> { // but see also <a href="#the-location-interface
8475784761
<p>To <dfn export>process a navigate fetch</dfn>, given a <span
8475884762
data-x="concept-request">request</span> <var>request</var>, two <span data-x="browsing
8475984763
context">browsing contexts</span> <var>sourceBrowsingContext</var> and <var>browsingContext</var>,
84760-
a string <var>navigationType</var>, a <span>sandboxing flag set</span> <var>sandboxFlags</var>,
84761-
two <span data-x="origin">origins</span> <var>incumbentNavigationOrigin</var> and
84762-
<var>activeDocumentNavigationOrigin</var>, and a <span>history handling behavior</span>
84763-
<var>historyHandling</var>:</p>
84764+
a string <var>navigationType</var>, a <span>sandboxing flag set</span> <var>sandboxFlags</var>, a
84765+
boolean <var>allowedToDownload</var>, two <span data-x="origin">origins</span>
84766+
<var>incumbentNavigationOrigin</var> and <var>activeDocumentNavigationOrigin</var>, and a
84767+
<span>history handling behavior</span> <var>historyHandling</var>:</p>
8476484768

8476584769
<ol>
8476684770
<li><p>Let <var>response</var> be null.</p></li>
@@ -84993,7 +84997,7 @@ interface <dfn>Location</dfn> { // but see also <a href="#the-location-interface
8499384997
<span>process a navigate fetch</span> with a new <span data-x="concept-request">request</span>
8499484998
whose <span data-x="concept-request-url">url</span> is <var>locationURL</var>,
8499584999
<var>sourceBrowsingContext</var>, <var>browsingContext</var>, <var>navigationType</var>,
84996-
<var>sandboxFlags</var>, <var>incumbentNavigationOrigin</var>,
85000+
<var>allowedToDownload</var>, <var>sandboxFlags</var>, <var>incumbentNavigationOrigin</var>,
8499785001
<var>activeDocumentNavigationOrigin</var>, and <var>historyHandling</var>, and return.
8499885002

8499985003
<li><p>Otherwise, if <var>locationURL</var> is a <span>URL</span>, run the <span>process a
@@ -85015,12 +85019,12 @@ interface <dfn>Location</dfn> { // but see also <a href="#the-location-interface
8501585019
<var>browsingContext</var>, and <span data-x="navigation-params-hh">history handling</span> is
8501685020
<var>historyHandling</var>.</p></li>
8501785021

85018-
<li><p>Run <span>process a navigate response</span> with <var>navigationType</var>, the
85019-
<span>source browsing context</span>, and <var>navigationParams</var>.</p></li>
85022+
<li><p>Run <span>process a navigate response</span> with <var>navigationType</var>,
85023+
<var>allowedToDownload</var>, and <var>navigationParams</var>.</p></li>
8502085024
</ol>
8502185025

8502285026
<p>To <dfn export>process a navigate response</dfn>, given a string <var>navigationType</var>, a
85023-
<span>browsing context</span> <var>source</var>, and a <span>navigation params</span>
85027+
boolean <var>allowedToDownload</var>, and a <span>navigation params</span>
8502485028
<var>navigationParams</var>:</p>
8502585029

8502685030
<ol>
@@ -85087,8 +85091,7 @@ interface <dfn>Location</dfn> { // but see also <a href="#the-location-interface
8508785091
data-x="">attachment</code> disposition type, then:</p>
8508885092

8508985093
<ol>
85090-
<li><p>If the result of running the <span>allowed to download</span> given <var>source</var>
85091-
and <var>browsingContext</var> is true, then handle <var>response</var> <span>as a
85094+
<li><p>If <var>allowedToDownload</var> is true, then handle <var>response</var> <span>as a
8509285095
download</span>.</p></li>
8509385096

8509485097
<li><p>Return.</p></li>

0 commit comments

Comments
 (0)