fix: use SharedArrayBuffer only when cross-origin isolation is enabled (#20831)
* fix: check cross-origin isolation for SharedArrayBuffer * chore: remove unused a $FlowFixMe comment * prettier
Toru Kobayashi committed
Feb 18, 2021 at 06:43 UTC
8fa0ccca0090acbf2d4717a19bc37e9443ba0bf8
1 file changed
+9
-4
packages/scheduler/src/SchedulerProfiling.js
+9
-4
@@ -15,13 +15,18 @@ import {NoPriority} from './SchedulerPriorities';
15
let runIdCounter: number = 0;
16
let mainThreadIdCounter: number = 0;
17
18
+const isEnabledSharedArrayBuffer =
19
+ // $FlowFixMe Flow doesn't know about SharedArrayBuffer
20
+ typeof SharedArrayBuffer === 'function' &&
21
+ // We only use SharedArrayBuffer when cross origin isolation is enabled.
22
+ typeof window !== 'undefined' &&
23
+ window.crossOriginIsolated === true;
24
+
25
const profilingStateSize = 4;
26
export const sharedProfilingBuffer = enableProfiling
20
- ? // $FlowFixMe Flow doesn't know about SharedArrayBuffer
21
- typeof SharedArrayBuffer === 'function'
27
+ ? isEnabledSharedArrayBuffer
28
? new SharedArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT)
23
- : // $FlowFixMe Flow doesn't know about ArrayBuffer
24
- typeof ArrayBuffer === 'function'
29
+ : typeof ArrayBuffer === 'function'
30
? new ArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT)
31
: null // Don't crash the init path on IE9
32
: null;