@@ -84625,6 +84625,10 @@ interface <dfn>Location</dfn> { // but see also <a href="#the-location-interface
84625
84625
download</span> algorithm given the <span>source browsing context</span> and
84626
84626
<var>browsingContext</var>.</p></li>
84627
84627
84628
+ <li><p>Let <var>hasTransientActivation</var> be true if the <span>source browsing
84629
+ context</span>'s <span>active window</span> has <span>transient activation</span>; otherwise
84630
+ false.</p></li>
84631
+
84628
84632
<li><p>Return to whatever algorithm invoked the navigation steps and continue running these steps
84629
84633
<span>in parallel</span>.</p></li>
84630
84634
@@ -84679,7 +84683,8 @@ interface <dfn>Location</dfn> { // but see also <a href="#the-location-interface
84679
84683
handling</span> is <var>historyHandling</var>.</p></li>
84680
84684
84681
84685
<li><p>Run <span>process a navigate response</span> with <var>navigationType</var>,
84682
- <var>allowedToDownload</var>, and <var>navigationParams</var>.</p></li>
84686
+ <var>allowedToDownload</var>, <var>hasTransientActivation</var>, and
84687
+ <var>navigationParams</var>.</p></li>
84683
84688
</ol>
84684
84689
</dd>
84685
84690
@@ -84730,7 +84735,8 @@ interface <dfn>Location</dfn> { // but see also <a href="#the-location-interface
84730
84735
handling</span> is <var>historyHandling</var>.</p></li>
84731
84736
84732
84737
<li><p>Run <span>process a navigate response</span> with <var>navigationType</var>,
84733
- <var>allowedToDownload</var>, and <var>navigationParams</var>.</p></li>
84738
+ <var>allowedToDownload</var>, <var>hasTransientActivation</var>, and
84739
+ <var>navigationParams</var>.</p></li>
84734
84740
</ol>
84735
84741
84736
84742
<p class="example">So for example a <span data-x="javascript
@@ -84749,15 +84755,17 @@ interface <dfn>Location</dfn> { // but see also <a href="#the-location-interface
84749
84755
is a <span>fetch scheme</span></dt>
84750
84756
<dd><p>Run <span>process a navigate fetch</span> given <var>resource</var>, the <span>source
84751
84757
browsing context</span>, <var>browsingContext</var>, <var>navigationType</var>,
84752
- <var>sandboxFlags</var>, <var>allowedToDownload</var>, <var>incumbentNavigationOrigin</var>,
84753
- <var>activeDocumentNavigationOrigin</var>, and <var>historyHandling</var>.</p></dd>
84758
+ <var>sandboxFlags</var>, <var>allowedToDownload</var>, <var>hasTransientActivation</var>,
84759
+ <var>incumbentNavigationOrigin</var>, <var>activeDocumentNavigationOrigin</var>, and
84760
+ <var>historyHandling</var>.</p></dd>
84754
84761
84755
84762
<dt>Otherwise, <var>resource</var> is a <span data-x="concept-request">request</span> whose
84756
84763
<span data-x="concept-request-url">url</span>'s <span data-x="concept-url-scheme">scheme</span>
84757
84764
is neither "<code data-x="javascript protocol">javascript</code>" nor a <span>fetch
84758
84765
scheme</span></dt>
84759
84766
<dd><p>Run <span>process a navigate URL scheme</span> given <var>resource</var>'s <span
84760
- data-x="concept-request-url">url</span> and <var>browsingContext</var>.</p></dd>
84767
+ data-x="concept-request-url">url</span>, <var>browsingContext</var>, and
84768
+ <var>hasTransientActivation</var>.</p></dd>
84761
84769
</dl>
84762
84770
</li>
84763
84771
</ol>
@@ -84766,9 +84774,10 @@ interface <dfn>Location</dfn> { // but see also <a href="#the-location-interface
84766
84774
data-x="concept-request">request</span> <var>request</var>, two <span data-x="browsing
84767
84775
context">browsing contexts</span> <var>sourceBrowsingContext</var> and <var>browsingContext</var>,
84768
84776
a string <var>navigationType</var>, a <span>sandboxing flag set</span> <var>sandboxFlags</var>, a
84769
- boolean <var>allowedToDownload</var>, two <span data-x="origin">origins</span>
84770
- <var>incumbentNavigationOrigin</var> and <var>activeDocumentNavigationOrigin</var>, and a
84771
- <span>history handling behavior</span> <var>historyHandling</var>:</p>
84777
+ boolean <var>allowedToDownload</var>, a boolean <var>hasTransientActivation</var>, two <span
84778
+ data-x="origin">origins</span> <var>incumbentNavigationOrigin</var> and
84779
+ <var>activeDocumentNavigationOrigin</var>, and a <span>history handling behavior</span>
84780
+ <var>historyHandling</var>:</p>
84772
84781
84773
84782
<ol>
84774
84783
<li><p>Let <var>response</var> be null.</p></li>
@@ -84784,8 +84793,7 @@ interface <dfn>Location</dfn> { // but see also <a href="#the-location-interface
84784
84793
<var>browsingContext</var>'s <span>active document</span>'s <span>relevant settings
84785
84794
object</span>'s <span data-x="concept-environment-id">id</span>.</p></li>
84786
84795
84787
- <li><p>If <var>sourceBrowsingContext</var>'s <code>WindowProxy</code>'s [[Window]] value has
84788
- <span>transient activation</span>, then set <var>request</var>'s <span
84796
+ <li><p>If <var>hasTransientActivation</var> is true, then set <var>request</var>'s <span
84789
84797
data-x="concept-request-user-activation">user-activation</span> to true.</p></li>
84790
84798
84791
84799
<li>
@@ -84808,7 +84816,7 @@ interface <dfn>Location</dfn> { // but see also <a href="#the-location-interface
84808
84816
84809
84817
<li><p>Let <var>currentContextIsSource</var> be the result of whether
84810
84818
<var>browsingContext</var>'s <span>active document</span> is <span>same origin</span> with
84811
- <var>source </var>'s <span>active document</span>.</p></li>
84819
+ <var>sourceBrowsingContext </var>'s <span>active document</span>.</p></li>
84812
84820
84813
84821
<li><p>Let <var>coopEnforcementResult</var> be a new <span
84814
84822
data-x="coop-enforcement-result">cross-origin opener policy enforcement result</span> whose <span
@@ -85001,12 +85009,20 @@ interface <dfn>Location</dfn> { // but see also <a href="#the-location-interface
85001
85009
<span>process a navigate fetch</span> with a new <span data-x="concept-request">request</span>
85002
85010
whose <span data-x="concept-request-url">url</span> is <var>locationURL</var>,
85003
85011
<var>sourceBrowsingContext</var>, <var>browsingContext</var>, <var>navigationType</var>,
85004
- <var>allowedToDownload</var>, <var>sandboxFlags</var>, <var>incumbentNavigationOrigin</var>,
85005
- <var>activeDocumentNavigationOrigin</var>, and <var>historyHandling</var>, and return.
85012
+ <var>allowedToDownload</var>, <var>hasTransientActivation</var>, <var>sandboxFlags</var>,
85013
+ <var>incumbentNavigationOrigin</var>, <var>activeDocumentNavigationOrigin</var>, and
85014
+ <var>historyHandling</var>, and return.
85006
85015
85007
- <li><p>Otherwise, if <var>locationURL</var> is a <span>URL</span>, run the <span>process a
85008
- navigate URL scheme</span> given <var>locationURL</var> and <var>browsingContext</var>, and
85009
- return.</p></li>
85016
+ <li>
85017
+ <p>Otherwise, if <var>locationURL</var> is a <span>URL</span>:</p>
85018
+
85019
+ <ol>
85020
+ <li><p><span>Process a navigate URL scheme</span> given <var>locationURL</var>,
85021
+ <var>browsingContext</var>, and <var>hasTransientActivation</var>.</p></li>
85022
+
85023
+ <li><p>Return.</p></li>
85024
+ </ol>
85025
+ </li>
85010
85026
85011
85027
<li><p>Let <var>navigationParams</var> be a new <span>navigation params</span> whose <span
85012
85028
data-x="navigation-params-request">request</span> is <var>request</var>, <span
@@ -85024,12 +85040,13 @@ interface <dfn>Location</dfn> { // but see also <a href="#the-location-interface
85024
85040
<var>historyHandling</var>.</p></li>
85025
85041
85026
85042
<li><p>Run <span>process a navigate response</span> with <var>navigationType</var>,
85027
- <var>allowedToDownload</var>, and <var>navigationParams</var>.</p></li>
85043
+ <var>allowedToDownload</var>, <var>hasTransientActivation</var>, and
85044
+ <var>navigationParams</var>.</p></li>
85028
85045
</ol>
85029
85046
85030
85047
<p>To <dfn export>process a navigate response</dfn>, given a string <var>navigationType</var>, a
85031
- boolean <var>allowedToDownload</var>, and a <span>navigation params</span>
85032
- <var>navigationParams</var>:</p>
85048
+ boolean <var>allowedToDownload</var>, a boolean <var>hasTransientActivation</var>, and a
85049
+ <span>navigation params</span> < var>navigationParams</var>:</p>
85033
85050
85034
85051
<ol>
85035
85052
<li><p>Let <var>response</var> be <var>navigationParams</var>'s <span
@@ -85171,18 +85188,20 @@ interface <dfn>Location</dfn> { // but see also <a href="#the-location-interface
85171
85188
85172
85189
<li><p>Otherwise, the document's <var>type</var> is such that the resource will not affect
85173
85190
<var>browsingContext</var>, e.g., because the resource is to be handed to an external application
85174
- or because it is an unknown type that will be processed <span>as a download</span>. <span
85175
- data-x="hand-off to external software">Process the resource appropriately</span>.</p>
85191
+ or because it is an unknown type that will be processed <span>as a download</span>.
85192
+ <span>Hand-off to external software</span> given <var>response</var> and
85193
+ <var>hasTransientActivation</var>.</p></li>
85176
85194
</ol>
85177
85195
85178
- <p>To <dfn>process a navigate URL scheme</dfn>, given a <span>URL</span> <var>url</var> and
85179
- <span>browsing context</span> <var>browsingContext</var>, run these steps:</p>
85196
+ <p>To <dfn>process a navigate URL scheme</dfn>, given a <span>URL</span> <var>url</var>, a
85197
+ <span>browsing context</span> <var>browsingContext</var>, and a boolean
85198
+ <var>hasTransientActivation</var>:</p>
85180
85199
85181
85200
<ol>
85182
85201
<li><p>If <var>url</var> is to be handled using a mechanism that does not affect
85183
85202
<var>browsingContext</var>, e.g., because <var>url</var>'s <span
85184
- data-x="concept-url-scheme">scheme</span> is handled externally, then <span data-x=" hand-off to
85185
- external software">proceed with that mechanism instead</span >.</p></li>
85203
+ data-x="concept-url-scheme">scheme</span> is handled externally, then <span> hand-off to external
85204
+ software</span> given <var>url</var> and <var>hasTransientActivation</var >.</p></li>
85186
85205
85187
85206
<li>
85188
85207
<p>Otherwise, <var>url</var> is to be handled by displaying some sort of inline content, e.g.,
@@ -85196,16 +85215,15 @@ interface <dfn>Location</dfn> { // but see also <a href="#the-location-interface
85196
85215
</li>
85197
85216
</ol>
85198
85217
85199
- <p>When a resource is handled by <dfn data-x="hand-off to external software">passing its URL or
85200
- data to an external software package</dfn> separate from the user agent (e.g. handing a <code
85201
- data-x="mailto protocol">mailto:</code> URL to a mail client, or a Word document to a word
85202
- processor), user agents should attempt to mitigate the risk that this is an attempt to exploit the
85203
- target software, e.g. by prompting the user to confirm that the <span>source browsing
85204
- context</span>'s <span>active document</span>'s <span
85205
- data-x="concept-document-origin">origin</span> is to be allowed to invoke the specified software.
85206
- In particular, if the <span>navigate</span> algorithm was invoked when <span>source browsing
85207
- context</span>'s <span>active window</span> does not have <span>transient activation</span>, the
85208
- user agent should not invoke the external software package without prior user confirmation.</p>
85218
+ <p>To <dfn>hand-off to external software</dfn> given a <span>URL</span> or <span
85219
+ data-x="concept-response">response</span> <var>resource</var> and a boolean
85220
+ <var>hasTransientActivation</var>, user agents should perform the appropriate handoff of
85221
+ <var>resource</var> while attempting to mitigate the risk that this is an attempt to exploit the
85222
+ target software. For example, user agents could prompt the user to confirm that the <span>source
85223
+ browsing context</span>'s <span>active document</span>'s <span
85224
+ data-x="concept-document-origin">origin</span> is to be allowed to invoke the external software in
85225
+ question. In particular, if <var>hasTransientActivation</var> is false, then the user agent should
85226
+ not invoke the external software package without prior user confirmation.</p>
85209
85227
85210
85228
<p class="example">For example, there could be a vulnerability in the target software's URL
85211
85229
handler which a hostile page would attempt to exploit by tricking a user into clicking a link.</p>
0 commit comments