Refactor access of ReactFeatureFlags from C++

Summary:
This diff is a follow up of D28360679 (https://github.com/facebook/react-native/commit/e3367354cc93f17b830ed8dc601dff5e87748dd1), here we refactor the access of ReactFeatureFlags from C++ to use methods instead of fields

changelog: [internal] internal

Reviewed By: JoshuaGross

Differential Revision: D28362066

fbshipit-source-id: caed5e7fddeb6c0d9846fb037152befa8f1ed5c2
This commit is contained in:
David Vacca
2021-05-11 14:09:36 -07:00
committed by Facebook GitHub Bot
parent 22ddab2025
commit aafdf9fee1
3 changed files with 24 additions and 14 deletions
@@ -60,9 +60,6 @@ public class ReactFeatureFlags {
/** Enables JS Responder in Fabric */
public static boolean enableJSResponder = false;
/** Enables MapBuffer Serialization */
public static boolean mapBufferSerializationEnabled = false;
/** An interface used to compute flags on demand. */
public interface FlagProvider {
boolean get();
@@ -75,6 +72,17 @@ public class ReactFeatureFlags {
enableRuntimeExecutorFlushingProvider = provider;
}
private static boolean mapBufferSerializationEnabled = false;
/** Enables or disables MapBuffer Serialization */
public static void setMapBufferSerializationEnabled(boolean enabled) {
mapBufferSerializationEnabled = enabled;
}
public static boolean isMapBufferSerializationEnabled() {
return mapBufferSerializationEnabled;
}
public static boolean enableRuntimeExecutorFlushing() {
if (enableRuntimeExecutorFlushingProvider != null) {
return enableRuntimeExecutorFlushingProvider.get();
@@ -453,6 +453,17 @@ void Binding::setConstraints(
}
}
bool isMapBufferSerializationEnabled() {
static const auto reactFeatureFlagsJavaDescriptor =
jni::findClassStatic(Binding::ReactFeatureFlagsJavaDescriptor);
static const auto isMapBufferSerializationEnabledMethod =
reactFeatureFlagsJavaDescriptor->getStaticMethod<jboolean()>(
"isMapBufferSerializationEnabled");
bool value =
isMapBufferSerializationEnabledMethod(reactFeatureFlagsJavaDescriptor);
return value;
}
void Binding::installFabricUIManager(
jni::alias_ref<JRuntimeExecutor::javaobject> runtimeExecutorHolder,
jni::alias_ref<jobject> javaUIManager,
@@ -462,9 +473,6 @@ void Binding::installFabricUIManager(
jni::alias_ref<jobject> reactNativeConfig) {
SystraceSection s("FabricUIManagerBinding::installFabricUIManager");
static const auto reactFeatureFlagsJavaDescriptor =
jni::findClassStatic(Binding::ReactFeatureFlagsJavaDescriptor);
std::shared_ptr<const ReactNativeConfig> config =
std::make_shared<const ReactNativeConfigHolder>(reactNativeConfig);
@@ -533,14 +541,8 @@ void Binding::installFabricUIManager(
// Keep reference to config object and cache some feature flags here
reactNativeConfig_ = config;
static const auto mapBufferSerializationEnabledField =
reactFeatureFlagsJavaDescriptor->getStaticField<jboolean>(
"mapBufferSerializationEnabled");
bool mapBufferSerializationEnabled =
reactFeatureFlagsJavaDescriptor->getStaticFieldValue(
mapBufferSerializationEnabledField);
contextContainer->insert(
"MapBufferSerializationEnabled", mapBufferSerializationEnabled);
"MapBufferSerializationEnabled", isMapBufferSerializationEnabled());
disablePreallocateViews_ = reactNativeConfig_->getBool(
"react_fabric:disabled_view_preallocation_android");
@@ -95,7 +95,7 @@ public class ReactTextViewManager
return null;
}
if (ReactFeatureFlags.mapBufferSerializationEnabled) {
if (ReactFeatureFlags.isMapBufferSerializationEnabled()) {
ReadableMapBuffer stateMapBuffer = stateWrapper.getStatDataMapBuffer();
if (stateMapBuffer != null) {
return getReactTextUpdate(view, props, stateMapBuffer);