From 04d1da252a6d6823ef0ee53f73f43ffaec14b5c8 Mon Sep 17 00:00:00 2001 From: Toru Kobayashi Date: Wed, 17 Feb 2021 23:45:04 +0900 Subject: [PATCH 1/3] fix: check cross-origin isolation for SharedArrayBuffer --- packages/scheduler/src/SchedulerProfiling.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/scheduler/src/SchedulerProfiling.js b/packages/scheduler/src/SchedulerProfiling.js index 810a5be22327..faf51b3d31c1 100644 --- a/packages/scheduler/src/SchedulerProfiling.js +++ b/packages/scheduler/src/SchedulerProfiling.js @@ -15,10 +15,14 @@ import {NoPriority} from './SchedulerPriorities'; let runIdCounter: number = 0; let mainThreadIdCounter: number = 0; +// We only use SharedArrayBuffer when cross origin isolation is enabled. +// $FlowFixMe Flow doesn't know about SharedArrayBuffer +const isEnabledSharedArrayBuffer = typeof SharedArrayBuffer === 'function' && 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' From e9cfc49b18fd9ce63e7fbef58d619cc02e852500 Mon Sep 17 00:00:00 2001 From: Toru Kobayashi Date: Wed, 17 Feb 2021 23:45:43 +0900 Subject: [PATCH 2/3] chore: remove unused a $FlowFixMe comment --- packages/scheduler/src/SchedulerProfiling.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/scheduler/src/SchedulerProfiling.js b/packages/scheduler/src/SchedulerProfiling.js index faf51b3d31c1..9491d67241b7 100644 --- a/packages/scheduler/src/SchedulerProfiling.js +++ b/packages/scheduler/src/SchedulerProfiling.js @@ -24,7 +24,7 @@ export const sharedProfilingBuffer = enableProfiling ? isEnabledSharedArrayBuffer ? new SharedArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) - : // $FlowFixMe Flow doesn't know about ArrayBuffer + : typeof ArrayBuffer === 'function' ? new ArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) : null // Don't crash the init path on IE9 From d9b506e2ef7593b66836d357c5b63de3cfc07ce6 Mon Sep 17 00:00:00 2001 From: Toru Kobayashi Date: Thu, 18 Feb 2021 00:22:12 +0900 Subject: [PATCH 3/3] prettier --- packages/scheduler/src/SchedulerProfiling.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/scheduler/src/SchedulerProfiling.js b/packages/scheduler/src/SchedulerProfiling.js index 9491d67241b7..3036476afeeb 100644 --- a/packages/scheduler/src/SchedulerProfiling.js +++ b/packages/scheduler/src/SchedulerProfiling.js @@ -15,17 +15,18 @@ import {NoPriority} from './SchedulerPriorities'; let runIdCounter: number = 0; let mainThreadIdCounter: number = 0; -// We only use SharedArrayBuffer when cross origin isolation is enabled. -// $FlowFixMe Flow doesn't know about SharedArrayBuffer -const isEnabledSharedArrayBuffer = typeof SharedArrayBuffer === 'function' && typeof window !== 'undefined' && window.crossOriginIsolated === true +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 - ? - isEnabledSharedArrayBuffer + ? isEnabledSharedArrayBuffer ? new SharedArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) - : - typeof ArrayBuffer === 'function' + : typeof ArrayBuffer === 'function' ? new ArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) : null // Don't crash the init path on IE9 : null;