diff --git a/React/CSSLayout/CSSLayout.c b/React/CSSLayout/CSSLayout.c index eba66a5bc..94e344214 100644 --- a/React/CSSLayout/CSSLayout.c +++ b/React/CSSLayout/CSSLayout.c @@ -2512,3 +2512,13 @@ void CSSLog(CSSLogLevel level, const char *format, ...) { gLogger(level, format, args); va_end(args); } + +static bool experimentalFeatures[CSSExperimentalFeatureCount]; + +void CSSLayoutSetExperimentalFeatureEnabled(CSSExperimentalFeature feature, bool enabled) { + experimentalFeatures[feature] = enabled; +} + +bool CSSLayoutIsExperimentalFeatureEnabled(CSSExperimentalFeature feature) { + return experimentalFeatures[feature]; +} diff --git a/React/CSSLayout/CSSLayout.h b/React/CSSLayout/CSSLayout.h index b860b9c38..7fdde1a8b 100644 --- a/React/CSSLayout/CSSLayout.h +++ b/React/CSSLayout/CSSLayout.h @@ -123,6 +123,10 @@ typedef enum CSSLogLevel { CSSLogLevelVerbose, } CSSLogLevel; +typedef enum CSSExperimentalFeature { + CSSExperimentalFeatureCount, +} CSSExperimentalFeature; + typedef struct CSSNode *CSSNodeRef; typedef CSSSize (*CSSMeasureFunc)(CSSNodeRef node, float width, @@ -238,4 +242,7 @@ CSS_NODE_LAYOUT_PROPERTY(CSSDirection, Direction); WIN_EXPORT void CSSLayoutSetLogger(CSSLogger logger); WIN_EXPORT void CSSLog(CSSLogLevel level, const char *message, ...); +WIN_EXPORT void CSSLayoutSetExperimentalFeatureEnabled(CSSExperimentalFeature feature, bool enabled); +WIN_EXPORT bool CSSLayoutIsExperimentalFeatureEnabled(CSSExperimentalFeature feature); + CSS_EXTERN_C_END diff --git a/ReactAndroid/src/main/java/com/facebook/csslayout/CSSExperimentalFeature.java b/ReactAndroid/src/main/java/com/facebook/csslayout/CSSExperimentalFeature.java new file mode 100644 index 000000000..a92d522de --- /dev/null +++ b/ReactAndroid/src/main/java/com/facebook/csslayout/CSSExperimentalFeature.java @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +package com.facebook.csslayout; + +public enum CSSExperimentalFeature { +} diff --git a/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNode.java b/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNode.java index 9cc47686b..6c3419bc9 100644 --- a/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNode.java +++ b/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNode.java @@ -40,6 +40,20 @@ public class CSSNode implements CSSNodeAPI { jni_CSSLayoutSetLogger(logger); } + private static native void jni_CSSLayoutSetExperimentalFeatureEnabled( + int feature, + boolean enabled); + public static void setExperimentalFeatureEnabled( + CSSExperimentalFeature feature, + boolean enabled) { + jni_CSSLayoutSetExperimentalFeatureEnabled(feature.ordinal(), enabled); + } + + private static native boolean jni_CSSLayoutIsExperimentalFeatureEnabled(int feature); + public static boolean isExperimentalFeatureEnabled(CSSExperimentalFeature feature) { + return jni_CSSLayoutIsExperimentalFeatureEnabled(feature.ordinal()); + } + private CSSNode mParent; private List mChildren; private MeasureFunction mMeasureFunction; diff --git a/ReactAndroid/src/main/jni/first-party/csslayoutjni/jni/CSSJNI.cpp b/ReactAndroid/src/main/jni/first-party/csslayoutjni/jni/CSSJNI.cpp index 8460e86a6..65a994c15 100644 --- a/ReactAndroid/src/main/jni/first-party/csslayoutjni/jni/CSSJNI.cpp +++ b/ReactAndroid/src/main/jni/first-party/csslayoutjni/jni/CSSJNI.cpp @@ -105,6 +105,14 @@ void jni_CSSLog(alias_ref clazz, jint level, jstring message) { Environment::current()->ReleaseStringUTFChars(message, nMessage); } +void jni_CSSLayoutSetExperimentalFeatureEnabled(alias_ref clazz, jint feature, jboolean enabled) { + CSSLayoutSetExperimentalFeatureEnabled(static_cast(feature), enabled); +} + +jboolean jni_CSSLayoutIsExperimentalFeatureEnabled(alias_ref clazz, jint feature) { + return CSSLayoutIsExperimentalFeatureEnabled(static_cast(feature)); +} + jint jni_CSSNodeGetInstanceCount(alias_ref clazz) { return CSSNodeGetInstanceCount(); } @@ -291,6 +299,8 @@ jint JNI_OnLoad(JavaVM *vm, void *) { CSSMakeNativeMethod(jni_CSSNodeGetInstanceCount), CSSMakeNativeMethod(jni_CSSLayoutSetLogger), CSSMakeNativeMethod(jni_CSSLog), + CSSMakeNativeMethod(jni_CSSLayoutSetExperimentalFeatureEnabled), + CSSMakeNativeMethod(jni_CSSLayoutIsExperimentalFeatureEnabled), }); }); } diff --git a/ReactCommon/CSSLayout/CSSLayout.c b/ReactCommon/CSSLayout/CSSLayout.c index eba66a5bc..94e344214 100644 --- a/ReactCommon/CSSLayout/CSSLayout.c +++ b/ReactCommon/CSSLayout/CSSLayout.c @@ -2512,3 +2512,13 @@ void CSSLog(CSSLogLevel level, const char *format, ...) { gLogger(level, format, args); va_end(args); } + +static bool experimentalFeatures[CSSExperimentalFeatureCount]; + +void CSSLayoutSetExperimentalFeatureEnabled(CSSExperimentalFeature feature, bool enabled) { + experimentalFeatures[feature] = enabled; +} + +bool CSSLayoutIsExperimentalFeatureEnabled(CSSExperimentalFeature feature) { + return experimentalFeatures[feature]; +} diff --git a/ReactCommon/CSSLayout/CSSLayout.h b/ReactCommon/CSSLayout/CSSLayout.h index b860b9c38..7fdde1a8b 100644 --- a/ReactCommon/CSSLayout/CSSLayout.h +++ b/ReactCommon/CSSLayout/CSSLayout.h @@ -123,6 +123,10 @@ typedef enum CSSLogLevel { CSSLogLevelVerbose, } CSSLogLevel; +typedef enum CSSExperimentalFeature { + CSSExperimentalFeatureCount, +} CSSExperimentalFeature; + typedef struct CSSNode *CSSNodeRef; typedef CSSSize (*CSSMeasureFunc)(CSSNodeRef node, float width, @@ -238,4 +242,7 @@ CSS_NODE_LAYOUT_PROPERTY(CSSDirection, Direction); WIN_EXPORT void CSSLayoutSetLogger(CSSLogger logger); WIN_EXPORT void CSSLog(CSSLogLevel level, const char *message, ...); +WIN_EXPORT void CSSLayoutSetExperimentalFeatureEnabled(CSSExperimentalFeature feature, bool enabled); +WIN_EXPORT bool CSSLayoutIsExperimentalFeatureEnabled(CSSExperimentalFeature feature); + CSS_EXTERN_C_END