From 8fa0ccca0090acbf2d4717a19bc37e9443ba0bf8 Mon Sep 17 00:00:00 2001 From: Toru Kobayashi Date: Thu, 18 Feb 2021 06:43:25 +0900 Subject: [PATCH] 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 --- packages/scheduler/src/SchedulerProfiling.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/scheduler/src/SchedulerProfiling.js b/packages/scheduler/src/SchedulerProfiling.js index 810a5be223279..3036476afeeb2 100644 --- a/packages/scheduler/src/SchedulerProfiling.js +++ b/packages/scheduler/src/SchedulerProfiling.js @@ -15,13 +15,18 @@ import {NoPriority} from './SchedulerPriorities'; let runIdCounter: number = 0; let mainThreadIdCounter: number = 0; +const isEnabledSharedArrayBuffer = + // $FlowFixMe Flow doesn't know about SharedArrayBuffer + typeof SharedArrayBuffer === 'function' && + // We only use SharedArrayBuffer when cross origin isolation is enabled. + typeof window !== 'undefined' && + window.crossOriginIsolated === true; + const profilingStateSize = 4; export const sharedProfilingBuffer = enableProfiling - ? // $FlowFixMe Flow doesn't know about SharedArrayBuffer - typeof SharedArrayBuffer === 'function' + ? isEnabledSharedArrayBuffer ? new SharedArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) - : // $FlowFixMe Flow doesn't know about ArrayBuffer - typeof ArrayBuffer === 'function' + : typeof ArrayBuffer === 'function' ? new ArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) : null // Don't crash the init path on IE9 : null;