From 317fb78a0d45e8eb917f75e2a944a05af421c027 Mon Sep 17 00:00:00 2001 From: Brian Vaughn Date: Sat, 25 Apr 2020 11:47:12 -0700 Subject: [PATCH] Replaced ClearContainer tag with Snapshot for clearing HostRoots --- .../__tests__/trustedTypes-test.internal.js | 2 +- .../src/ReactFiberCommitWork.new.js | 3 +- .../src/ReactFiberCommitWork.old.js | 3 +- .../src/ReactFiberCompleteWork.new.js | 4 +- .../src/ReactFiberCompleteWork.old.js | 4 +- .../src/ReactFiberWorkLoop.new.js | 3 +- .../src/ReactFiberWorkLoop.old.js | 3 +- .../src/ReactSideEffectTags.js | 39 +++++++++---------- 8 files changed, 28 insertions(+), 33 deletions(-) diff --git a/packages/react-dom/src/client/__tests__/trustedTypes-test.internal.js b/packages/react-dom/src/client/__tests__/trustedTypes-test.internal.js index e6285a2ad496..7ebf500cfdb1 100644 --- a/packages/react-dom/src/client/__tests__/trustedTypes-test.internal.js +++ b/packages/react-dom/src/client/__tests__/trustedTypes-test.internal.js @@ -74,7 +74,7 @@ describe('when Trusted Types are available in global object', () => { container, ); expect(container.innerHTML).toBe('
Hi
'); - // Second call to innerHTML is the ClearContainer check. + // Second call to innerHTML is the clearContainer check. expect(innerHTMLCalls.length).toBe(2); // Ensure it didn't get stringified when passed to a DOM sink: expect(innerHTMLCalls[0]).toBe(ttObject1); diff --git a/packages/react-reconciler/src/ReactFiberCommitWork.new.js b/packages/react-reconciler/src/ReactFiberCommitWork.new.js index 3450575781b3..2e430f94b9a1 100644 --- a/packages/react-reconciler/src/ReactFiberCommitWork.new.js +++ b/packages/react-reconciler/src/ReactFiberCommitWork.new.js @@ -70,7 +70,6 @@ import { Snapshot, Update, Passive, - ClearContainer, } from './ReactSideEffectTags'; import getComponentName from 'shared/getComponentName'; import invariant from 'shared/invariant'; @@ -299,7 +298,7 @@ function commitBeforeMutationLifeCycles( } case HostRoot: { if (supportsMutation) { - if (finishedWork.effectTag & ClearContainer) { + if (finishedWork.effectTag & Snapshot) { const root = finishedWork.stateNode; clearContainer(root.containerInfo); } diff --git a/packages/react-reconciler/src/ReactFiberCommitWork.old.js b/packages/react-reconciler/src/ReactFiberCommitWork.old.js index 87fdc114f6d3..5b65fdded432 100644 --- a/packages/react-reconciler/src/ReactFiberCommitWork.old.js +++ b/packages/react-reconciler/src/ReactFiberCommitWork.old.js @@ -68,7 +68,6 @@ import { Snapshot, Update, Passive, - ClearContainer, } from './ReactSideEffectTags'; import getComponentName from 'shared/getComponentName'; import invariant from 'shared/invariant'; @@ -297,7 +296,7 @@ function commitBeforeMutationLifeCycles( } case HostRoot: { if (supportsMutation) { - if (finishedWork.effectTag & ClearContainer) { + if (finishedWork.effectTag & Snapshot) { const root = finishedWork.stateNode; clearContainer(root.containerInfo); } diff --git a/packages/react-reconciler/src/ReactFiberCompleteWork.new.js b/packages/react-reconciler/src/ReactFiberCompleteWork.new.js index 8dc5ebe9417f..02afc4f5f1db 100644 --- a/packages/react-reconciler/src/ReactFiberCompleteWork.new.js +++ b/packages/react-reconciler/src/ReactFiberCompleteWork.new.js @@ -63,7 +63,7 @@ import { Update, NoEffect, DidCapture, - ClearContainer, + Snapshot, } from './ReactSideEffectTags'; import invariant from 'shared/invariant'; @@ -686,7 +686,7 @@ function completeWork( // This handles the case of React rendering into a container with previous children. // It's also safe to do for updates too, because current.child would only be null // if the previous render was null (so the the container would already be empty). - workInProgress.effectTag |= ClearContainer; + workInProgress.effectTag |= Snapshot; } } updateHostContainer(workInProgress); diff --git a/packages/react-reconciler/src/ReactFiberCompleteWork.old.js b/packages/react-reconciler/src/ReactFiberCompleteWork.old.js index 746ff99a0f33..89201d5db404 100644 --- a/packages/react-reconciler/src/ReactFiberCompleteWork.old.js +++ b/packages/react-reconciler/src/ReactFiberCompleteWork.old.js @@ -61,7 +61,7 @@ import { NoEffect, DidCapture, Deletion, - ClearContainer, + Snapshot, } from './ReactSideEffectTags'; import invariant from 'shared/invariant'; @@ -684,7 +684,7 @@ function completeWork( // This handles the case of React rendering into a container with previous children. // It's also safe to do for updates too, because current.child would only be null // if the previous render was null (so the the container would already be empty). - workInProgress.effectTag |= ClearContainer; + workInProgress.effectTag |= Snapshot; } } updateHostContainer(workInProgress); diff --git a/packages/react-reconciler/src/ReactFiberWorkLoop.new.js b/packages/react-reconciler/src/ReactFiberWorkLoop.new.js index ca9bd9af41be..5d8b99cbc9a9 100644 --- a/packages/react-reconciler/src/ReactFiberWorkLoop.new.js +++ b/packages/react-reconciler/src/ReactFiberWorkLoop.new.js @@ -111,7 +111,6 @@ import { HostEffectMask, Hydrating, HydratingAndUpdate, - ClearContainer, } from './ReactSideEffectTags'; import { NoWork, @@ -2241,7 +2240,7 @@ function commitBeforeMutationEffects() { beforeActiveInstanceBlur(); } const effectTag = nextEffect.effectTag; - if ((effectTag & (Snapshot | ClearContainer)) !== NoEffect) { + if ((effectTag & Snapshot) !== NoEffect) { setCurrentDebugFiberInDEV(nextEffect); const current = nextEffect.alternate; diff --git a/packages/react-reconciler/src/ReactFiberWorkLoop.old.js b/packages/react-reconciler/src/ReactFiberWorkLoop.old.js index e3779a4fe754..b95c8e2fa5c8 100644 --- a/packages/react-reconciler/src/ReactFiberWorkLoop.old.js +++ b/packages/react-reconciler/src/ReactFiberWorkLoop.old.js @@ -123,7 +123,6 @@ import { HostEffectMask, Hydrating, HydratingAndUpdate, - ClearContainer, } from './ReactSideEffectTags'; import { NoWork, @@ -2168,7 +2167,7 @@ function commitBeforeMutationEffects() { beforeActiveInstanceBlur(); } const effectTag = nextEffect.effectTag; - if ((effectTag & (Snapshot | ClearContainer)) !== NoEffect) { + if ((effectTag & Snapshot) !== NoEffect) { setCurrentDebugFiberInDEV(nextEffect); const current = nextEffect.alternate; diff --git a/packages/react-reconciler/src/ReactSideEffectTags.js b/packages/react-reconciler/src/ReactSideEffectTags.js index 16a4bf1b93d6..162b860c19eb 100644 --- a/packages/react-reconciler/src/ReactSideEffectTags.js +++ b/packages/react-reconciler/src/ReactSideEffectTags.js @@ -10,30 +10,29 @@ export type SideEffectTag = number; // Don't change these two values. They're used by React Dev Tools. -export const NoEffect = /* */ 0b000000000000000; -export const PerformedWork = /* */ 0b000000000000001; +export const NoEffect = /* */ 0b00000000000000; +export const PerformedWork = /* */ 0b00000000000001; // You can change the rest (and add more). -export const Placement = /* */ 0b000000000000010; -export const Update = /* */ 0b000000000000100; -export const PlacementAndUpdate = /* */ 0b000000000000110; -export const Deletion = /* */ 0b000000000001000; -export const ContentReset = /* */ 0b000000000010000; -export const Callback = /* */ 0b000000000100000; -export const DidCapture = /* */ 0b000000001000000; -export const Ref = /* */ 0b000000010000000; -export const Snapshot = /* */ 0b000000100000000; -export const Passive = /* */ 0b000001000000000; -export const PassiveUnmountPendingDev = /* */ 0b010000000000000; -export const Hydrating = /* */ 0b000010000000000; -export const HydratingAndUpdate = /* */ 0b000010000000100; -export const ClearContainer = /* */ 0b100000000000000; +export const Placement = /* */ 0b00000000000010; +export const Update = /* */ 0b00000000000100; +export const PlacementAndUpdate = /* */ 0b00000000000110; +export const Deletion = /* */ 0b00000000001000; +export const ContentReset = /* */ 0b00000000010000; +export const Callback = /* */ 0b00000000100000; +export const DidCapture = /* */ 0b00000001000000; +export const Ref = /* */ 0b00000010000000; +export const Snapshot = /* */ 0b00000100000000; +export const Passive = /* */ 0b00001000000000; +export const PassiveUnmountPendingDev = /* */ 0b10000000000000; +export const Hydrating = /* */ 0b00010000000000; +export const HydratingAndUpdate = /* */ 0b00010000000100; // Passive & Update & Callback & Ref & Snapshot -export const LifecycleEffectMask = /* */ 0b000001110100100; +export const LifecycleEffectMask = /* */ 0b00001110100100; // Union of all host effects -export const HostEffectMask = /* */ 0b000011111111111; +export const HostEffectMask = /* */ 0b00011111111111; -export const Incomplete = /* */ 0b000100000000000; -export const ShouldCapture = /* */ 0b001000000000000; +export const Incomplete = /* */ 0b00100000000000; +export const ShouldCapture = /* */ 0b01000000000000;