Skip to content

Commit 485c76a

Browse files
domenicannevk
authored andcommitted
Use current instead of incumbent + entry in worker constructors
As shown by https://settings-object-worker-client-abibrisfdk.now.sh, all browsers use the current settings object for the fetch client, i.e. the "outside settings", instead of the incumbent settings object. (Except we do not know the result in Edge, since they don't seem to send a Referer header for us to inspect.) Part of #1430. As shown by https://settings-object-worker-client-wellwosyqf.now.sh/entry/entry.html, all browsers also use the current settings object for URL resolution, instead of the entry settings object. Part of #1431.
1 parent 1037914 commit 485c76a

File tree

1 file changed

+19
-18
lines changed

1 file changed

+19
-18
lines changed

source

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -87300,18 +87300,19 @@ interface <dfn>NavigatorOnLine</dfn> {
8730087300
<pre>&lt;!DOCTYPE html>
8730187301
&lt;iframe>&lt;/iframe>
8730287302
&lt;script>
87303-
new frames[0].Worker('worker.js');
87303+
new frames[0].MessageChannel();
8730487304
&lt;/script></pre>
8730587305

87306-
<p>When the <code data-x="dom-Worker">Worker()</code> constructor looks up the <span>incumbent
87307-
settings object</span> to use for various parts of its algorithm, the <span>topmost script-having
87308-
execution context</span> will be that corresponding to the <code>script</code> element: it was
87309-
pushed onto the <span>JavaScript execution context stack</span> as part of <span
87310-
data-x="js-ScriptEvaluation">ScriptEvaluation</span> during the <span>run a classic script</span>
87311-
algorithm. Since there are no Web IDL callback invocations involved, the context's
87312-
<span>skip-when-determining-incumbent counter</span> is zero, so it is used to determine the
87313-
<span>incumbent settings object</span>; the result is the <span>environment settings
87314-
object</span> of <code data-x="">window</code>.</p>
87306+
<p>When the <code data-x="dom-MessageChannel">MessageChannel()</code> constructor looks up the
87307+
<span>incumbent settings object</span> to use as the <span
87308+
data-x="concept-port-owner">owner</span> of the new <code>MessagePort</code> objects, the
87309+
<span>topmost script-having execution context</span> will be that corresponding to the
87310+
<code>script</code> element: it was pushed onto the <span>JavaScript execution context
87311+
stack</span> as part of <span data-x="js-ScriptEvaluation">ScriptEvaluation</span> during the
87312+
<span>run a classic script</span> algorithm. Since there are no Web IDL callback invocations
87313+
involved, the context's <span>skip-when-determining-incumbent counter</span> is zero, so it is
87314+
used to determine the <span>incumbent settings object</span>; the result is the <span>environment
87315+
settings object</span> of <code data-x="">window</code>.</p>
8731587316

8731687317
<p>(In this example, the <span>environment settings object</span> of <code
8731787318
data-x="">frames[0]</code> is not involved at all. It is the <span>current settings
@@ -96940,8 +96941,10 @@ enum <dfn>WorkerType</dfn> { "classic", "module" };
9694096941
<code>DOMException</code> and abort these steps if the request violates a policy decision (e.g.
9694196942
if the user agent is configured to not allow the page to start dedicated workers).</p></li>
9694296943

96943-
<li><p><span data-x="parse a url">Parse</span> the <var>scriptURL</var> argument relative to the
96944-
<span>entry settings object</span>.</p></li>
96944+
<li><p>Let <var>outside settings</var> be the <span>current settings object</span>.</p>
96945+
96946+
<li><p><span data-x="parse a url">Parse</span> the <var>scriptURL</var> argument relative to
96947+
<var>outside settings</var>.</p></li>
9694596948

9694696949
<li><p>If this fails, throw a <span>"<code>SyntaxError</code>"</span> <code>DOMException</code>
9694796950
and abort these steps.</p></li>
@@ -96953,8 +96956,6 @@ enum <dfn>WorkerType</dfn> { "classic", "module" };
9695396956
data-x="blob protocol">blob:</code> URLs.</p>
9695496957
</li>
9695596958

96956-
<li><p>Let <var>outside settings</var> be the <span>incumbent settings object</span>.</p>
96957-
9695896959
<li><p>Let <var>worker</var> be a new <code>Worker</code> object.</p></li>
9695996960

9696096961
<li><p><span>Create a new <code>MessagePort</code> object</span> whose <span
@@ -97015,8 +97016,10 @@ interface <dfn>SharedWorker</dfn> : <span>EventTarget</span> {
9701597016
<code>DOMException</code> and abort these steps if the request violates a policy decision (e.g.
9701697017
if the user agent is configured to not allow the page to start shared workers).</p></li>
9701797018

97018-
<li><p><span data-x="parse a url">Parse</span> <var>scriptURL</var> relative to the <span>entry
97019-
settings object</span>.</p></li>
97019+
<li><p>Let <var>outside settings</var> be the <span>current settings object</span>.</p></li>
97020+
97021+
<li><p><span data-x="parse a url">Parse</span> <var>scriptURL</var> relative to <var>outside
97022+
settings</var>.</p></li>
9702097023

9702197024
<li><p>If this fails, throw a <span>"<code>SyntaxError</code>"</span> <code>DOMException</code>
9702297025
and abort these steps.</p></li>
@@ -97029,8 +97032,6 @@ interface <dfn>SharedWorker</dfn> : <span>EventTarget</span> {
9702997032
data-x="blob protocol">blob:</code> URLs.</p>
9703097033
</li>
9703197034

97032-
<li><p>Let <var>outside settings</var> be the <span>incumbent settings object</span>.</p></li>
97033-
9703497035
<li>
9703597036

9703697037
<p>Execute the following substeps atomically:</p>

0 commit comments

Comments
 (0)