@@ -8301,13 +8301,26 @@ interface <dfn>DOMStringList</dfn> {
8301
8301
<p>If ! <span>IsSharedArrayBuffer</span>(<var>value</var>) is true, then:
8302
8302
8303
8303
<ol>
8304
+ <li><p>Let <var>agentCluster</var> be <span>surrounding agent</span>'s
8305
+ <span>agent cluster</span>.</p></li>
8306
+
8307
+ <li>
8308
+ <p>If <var>agentCluster</var>'s <dfn>cross-origin isolated</dfn> is false, then throw a
8309
+ <!-- TODO: this is not the place to <dfn> this, but doing this for now so the build does not
8310
+ fail -->
8311
+ <span>"<code>DataCloneError</code>"</span> <code>DOMException</code>.</p>
8312
+
8313
+ <p class="note">This check is only needed when serializing (and not when deserializing) as
8314
+ <span>cross-origin isolated</span> cannot change over time and a
8315
+ <code>SharedArrayBuffer</code> cannot leave an <span>agent cluster</span>.</p>
8316
+ </li>
8317
+
8304
8318
<li><p>If <var>forStorage</var> is true, then throw a
8305
8319
<span>"<code>DataCloneError</code>"</span> <code>DOMException</code>.</p></li>
8306
8320
8307
8321
<li><p>Set <var>serialized</var> to { [[Type]]: "SharedArrayBuffer", [[ArrayBufferData]]:
8308
8322
<var>value</var>.[[ArrayBufferData]], [[ArrayBufferByteLength]]: <var>size</var>,
8309
- [[AgentCluster]]: the <span>current Realm Record</span>'s corresponding <span>agent
8310
- cluster</span> }.</p></li>
8323
+ [[AgentCluster]]: <var>agentCluster</var> }.</p></li>
8311
8324
</ol>
8312
8325
</li>
8313
8326
@@ -95774,6 +95787,9 @@ dictionary <dfn>ImageBitmapOptions</dfn> {
95774
95787
are:</p>
95775
95788
95776
95789
<ol>
95790
+ <li><p>Set <var>serialized</var>.[[CrossOriginIsolated]] to <span>surrounding agent</span>'s
95791
+ <span>agent cluster</span>'s <span>cross-origin isolated</span>.</p></li>
95792
+
95777
95793
<li><p>Set <var>serialized</var>.[[BitmapData]] to a copy of <var>value</var>'s <span
95778
95794
data-x="concept-ImageBitmap-bitmap-data">bitmap data</span>.</p></li>
95779
95795
@@ -95786,6 +95802,17 @@ dictionary <dfn>ImageBitmapOptions</dfn> {
95786
95802
are:</p>
95787
95803
95788
95804
<ol>
95805
+ <li>
95806
+ <p>If <var>serialized</var>.[[OriginClean]] is false,
95807
+ <var>serialized</var>.[[CrossOriginIsolated]] is false, and <span>surrounding agent</span>'s
95808
+ <span>agent cluster</span>'s <span>cross-origin isolated</span> is true, then throw a
95809
+ <span>"<code>DataCloneError</code>"</span> <code>DOMException</code>.</p>
95810
+
95811
+ <p class="warning">To truly protect against sidechannel attacks implementations should avoid
95812
+ transmitting <var>serialized</var>.[[BitmapData]] to the <span>surrounding agent</span>'s
95813
+ <span>agent cluster</span> under the above conditions.</p>
95814
+ </li>
95815
+
95789
95816
<li><p>Set <var>value</var>'s <span data-x="concept-ImageBitmap-bitmap-data">bitmap data</span>
95790
95817
to <var>serialized</var>.[[BitmapData]].</p></li>
95791
95818
@@ -95796,6 +95823,9 @@ dictionary <dfn>ImageBitmapOptions</dfn> {
95796
95823
<p>Their <span>transfer steps</span>, given <var>value</var> and <var>dataHolder</var>, are:</p>
95797
95824
95798
95825
<ol>
95826
+ <li><p>Set <var>dataHolder</var>.[[CrossOriginIsolated]] to <span>surrounding agent</span>'s
95827
+ <span>agent cluster</span>'s <span>cross-origin isolated</span>.</p></li>
95828
+
95799
95829
<li><p>Set <var>dataHolder</var>.[[BitmapData]] to <var>value</var>'s <span
95800
95830
data-x="concept-ImageBitmap-bitmap-data">bitmap data</span>.</p></li>
95801
95831
@@ -95811,6 +95841,18 @@ dictionary <dfn>ImageBitmapOptions</dfn> {
95811
95841
are:</p>
95812
95842
95813
95843
<ol>
95844
+ <li>
95845
+ <p>If <var>dataHolder</var>.[[OriginClean]] is false,
95846
+ <var>dataHolder</var>.[[CrossOriginIsolated]] is false, and <span>surrounding agent</span>'s
95847
+ <span>agent cluster</span>'s <span>cross-origin isolated</span> is true, then throw a
95848
+ <span>"<code>DataCloneError</code>"</span> <code>DOMException</code>.</p>
95849
+ <!-- E.g., when a COEP shared worker receives an ImageBitmap from a non-COOP+COEP window. -->
95850
+
95851
+ <p class="warning">To truly protect against sidechannel attacks implementations should avoid
95852
+ sharing <var>dataHolder</var>.[[BitmapData]] with <span>surrounding agent</span>'s
95853
+ <span>agent cluster</span> under the above conditions.</p>
95854
+ </li>
95855
+
95814
95856
<li><p>Set <var>value</var>'s <span data-x="concept-ImageBitmap-bitmap-data">bitmap data</span>
95815
95857
to <var>dataHolder</var>.[[BitmapData]].</p></li>
95816
95858
0 commit comments