From be7f057baccaa98ad40cbf8abe59a387c30ee19b Mon Sep 17 00:00:00 2001 From: Lulu Wu Date: Tue, 2 Mar 2021 16:26:21 -0800 Subject: [PATCH] Try reduce flackiness of VeniceTest Summary: Simplify addLifecycleEventListener for the flaky test because we just want to test that listener is working. Changelog: [Android][Changed] - Add a spare implementation of addLifecycleEventListener for test purpose. Reviewed By: PeteTheHeat Differential Revision: D26749256 fbshipit-source-id: 5af216e6bfa37a15eb189aa24a3df35a7a7112de --- .../main/java/com/facebook/react/bridge/ReactContext.java | 8 +++++++- .../java/com/facebook/react/fabric/FabricUIManager.java | 4 ++-- .../com/facebook/react/modules/core/TimingModule.java | 2 +- .../react/modules/deviceinfo/DeviceInfoModule.java | 2 +- .../com/facebook/react/uimanager/ThemedReactContext.java | 4 ++-- .../com/facebook/react/uimanager/UIManagerModule.java | 4 ++-- .../react/uimanager/events/EventDispatcherImpl.java | 2 +- 7 files changed, 16 insertions(+), 10 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java index 28d024fd4b0..30d2de3f2f2 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java @@ -23,6 +23,7 @@ import com.facebook.react.bridge.queue.MessageQueueThread; import com.facebook.react.bridge.queue.ReactQueueConfiguration; import com.facebook.react.common.LifecycleState; import com.facebook.react.common.ReactConstants; +import com.facebook.react.common.annotations.VisibleForTesting; import com.facebook.react.config.ReactFeatureFlags; import java.lang.ref.WeakReference; import java.util.concurrent.CopyOnWriteArraySet; @@ -182,9 +183,14 @@ public class ReactContext extends ContextWrapper { return mLifecycleState; } + @VisibleForTesting public void addLifecycleEventListener(final LifecycleEventListener listener) { mLifecycleEventListeners.add(listener); - if (hasActiveCatalystInstance() || isBridgeless()) { + } + + public void addLifecycleEventListenerAndCheckState(final LifecycleEventListener listener) { + mLifecycleEventListeners.add(listener); + if (hasActiveCatalystInstance()) { switch (mLifecycleState) { case BEFORE_CREATE: case BEFORE_RESUME: diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java index 08cd93b133e..e05d0d8c830 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java @@ -176,7 +176,7 @@ public class FabricUIManager implements UIManager, LifecycleEventListener { mEventDispatcher = eventDispatcher; mShouldDeallocateEventDispatcher = false; mEventBeatManager = eventBeatManager; - mReactApplicationContext.addLifecycleEventListener(this); + mReactApplicationContext.addLifecycleEventListenerAndCheckState(this); } public FabricUIManager( @@ -189,7 +189,7 @@ public class FabricUIManager implements UIManager, LifecycleEventListener { mEventDispatcher = new EventDispatcherImpl(reactContext); mShouldDeallocateEventDispatcher = true; mEventBeatManager = eventBeatManager; - mReactApplicationContext.addLifecycleEventListener(this); + mReactApplicationContext.addLifecycleEventListenerAndCheckState(this); } // TODO (T47819352): Rename this to startSurface for consistency with xplat/iOS diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/core/TimingModule.java b/ReactAndroid/src/main/java/com/facebook/react/modules/core/TimingModule.java index 8ac7f07606a..5abe37b3a5a 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/core/TimingModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/core/TimingModule.java @@ -68,7 +68,7 @@ public final class TimingModule extends NativeTimingSpec @Override public void initialize() { - getReactApplicationContext().addLifecycleEventListener(this); + getReactApplicationContext().addLifecycleEventListenerAndCheckState(this); HeadlessJsTaskContext headlessJsTaskContext = HeadlessJsTaskContext.getInstance(getReactApplicationContext()); headlessJsTaskContext.addTaskEventListener(this); diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/DeviceInfoModule.java b/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/DeviceInfoModule.java index 083c9c1d9f2..2de4acce4ef 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/DeviceInfoModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/DeviceInfoModule.java @@ -37,7 +37,7 @@ public class DeviceInfoModule extends NativeDeviceInfoSpec implements LifecycleE DisplayMetricsHolder.initDisplayMetricsIfNotInitialized(reactContext); mFontScale = reactContext.getResources().getConfiguration().fontScale; mReactApplicationContext = reactContext; - mReactApplicationContext.addLifecycleEventListener(this); + mReactApplicationContext.addLifecycleEventListenerAndCheckState(this); } public DeviceInfoModule(Context context) { diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ThemedReactContext.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ThemedReactContext.java index 15701d63618..2e1493f3f43 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ThemedReactContext.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ThemedReactContext.java @@ -56,8 +56,8 @@ public class ThemedReactContext extends ReactContext { } @Override - public void addLifecycleEventListener(LifecycleEventListener listener) { - mReactApplicationContext.addLifecycleEventListener(listener); + public void addLifecycleEventListenerAndCheckState(LifecycleEventListener listener) { + mReactApplicationContext.addLifecycleEventListenerAndCheckState(listener); } @Override diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java index 1d49251377d..182c04fb840 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java @@ -158,7 +158,7 @@ public class UIManagerModule extends ReactContextBaseJavaModule mEventDispatcher, minTimeLeftInFrameForNonBatchedOperationMs); - reactContext.addLifecycleEventListener(this); + reactContext.addLifecycleEventListenerAndCheckState(this); } @Deprecated @@ -180,7 +180,7 @@ public class UIManagerModule extends ReactContextBaseJavaModule mEventDispatcher, minTimeLeftInFrameForNonBatchedOperationMs); - reactContext.addLifecycleEventListener(this); + reactContext.addLifecycleEventListenerAndCheckState(this); } /** diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java index a99d6b1eb31..8e3ded74b1d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java @@ -104,7 +104,7 @@ public class EventDispatcherImpl implements EventDispatcher, LifecycleEventListe public EventDispatcherImpl(ReactApplicationContext reactContext) { mReactContext = reactContext; - mReactContext.addLifecycleEventListener(this); + mReactContext.addLifecycleEventListenerAndCheckState(this); mReactEventEmitter = new ReactEventEmitter(mReactContext); }