From 06bf7b1f00cd637c420c29073a82ec21331ffaf4 Mon Sep 17 00:00:00 2001 From: Emily Janzer Date: Tue, 4 Sep 2018 18:04:53 -0700 Subject: [PATCH] Adding @CountEnum to simple enums in xplat/js Summary: Using The Count to transform enums to ints in production builds: https://our.intern.facebook.com/intern/wiki/Android-java-transforms/the-count/ Reviewed By: achen1 Differential Revision: D9614432 fbshipit-source-id: 1b1a197ad8f4962712d6006ab07b3beb3eaf2432 --- .../src/main/java/com/facebook/react/bridge/JsonWriter.java | 3 +++ .../main/java/com/facebook/react/bridge/MemoryPressure.java | 3 +++ .../facebook/react/bridge/queue/MessageQueueThreadSpec.java | 3 +++ ReactAndroid/src/main/java/com/facebook/react/common/BUCK | 1 + .../main/java/com/facebook/react/common/LifecycleState.java | 3 +++ .../src/main/java/com/facebook/react/modules/core/BUCK | 1 + .../com/facebook/react/modules/core/ReactChoreographer.java | 2 ++ .../src/main/java/com/facebook/react/modules/datepicker/BUCK | 1 + .../com/facebook/react/modules/datepicker/DatePickerMode.java | 3 +++ .../src/main/java/com/facebook/react/modules/timepicker/BUCK | 1 + .../com/facebook/react/modules/timepicker/TimePickerMode.java | 2 ++ ReactAndroid/src/main/java/com/facebook/react/processing/BUCK | 1 + .../com/facebook/react/processing/ReactPropertyProcessor.java | 3 +++ ReactAndroid/src/main/java/com/facebook/react/uimanager/BUCK | 1 + .../main/java/com/facebook/react/uimanager/PointerEvents.java | 3 +++ .../com/facebook/react/uimanager/events/TouchEventType.java | 3 +++ .../react/uimanager/layoutanimation/AnimatedPropertyType.java | 3 +++ .../react/uimanager/layoutanimation/LayoutAnimationType.java | 3 +++ ReactAndroid/src/main/java/com/facebook/react/views/image/BUCK | 1 + .../java/com/facebook/react/views/image/ImageResizeMethod.java | 3 +++ .../src/main/java/com/facebook/react/views/scroll/BUCK | 1 + .../java/com/facebook/react/views/scroll/ScrollEventType.java | 3 +++ ReactAndroid/src/main/java/com/facebook/react/views/view/BUCK | 1 + .../facebook/react/views/view/ReactViewBackgroundDrawable.java | 3 +++ 24 files changed, 52 insertions(+) diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/JsonWriter.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/JsonWriter.java index 33714b555..0a2bf396c 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/JsonWriter.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/JsonWriter.java @@ -13,6 +13,8 @@ import java.io.Writer; import java.util.ArrayDeque; import java.util.Deque; +import com.facebook.thecount.api.CountEnum; + /** * Simple Json generator that does no validation. */ @@ -207,6 +209,7 @@ public class JsonWriter implements Closeable { mScopes.push(scope); } + @CountEnum private enum Scope { EMPTY_OBJECT, OBJECT, diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/MemoryPressure.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/MemoryPressure.java index f0cd07479..9fe5ccca1 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/MemoryPressure.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/MemoryPressure.java @@ -5,6 +5,9 @@ package com.facebook.react.bridge; +import com.facebook.thecount.api.CountEnum; + +@CountEnum public enum MemoryPressure { UI_HIDDEN, MODERATE, diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadSpec.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadSpec.java index c9df9ca54..2f96fb870 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadSpec.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadSpec.java @@ -7,6 +7,8 @@ package com.facebook.react.bridge.queue; +import com.facebook.thecount.api.CountEnum; + /** * Spec for creating a MessageQueueThread. */ @@ -18,6 +20,7 @@ public class MessageQueueThreadSpec { // The Thread constructor interprets zero the same as not specifying a stack size public static final long DEFAULT_STACK_SIZE_BYTES = 0; + @CountEnum protected static enum ThreadType { MAIN_UI, NEW_BACKGROUND, diff --git a/ReactAndroid/src/main/java/com/facebook/react/common/BUCK b/ReactAndroid/src/main/java/com/facebook/react/common/BUCK index 6a6a5452b..74874f3ac 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/common/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/common/BUCK @@ -19,6 +19,7 @@ rn_android_library( ], deps = [ ":build_config", + react_native_dep("java/com/facebook/thecount:thecount"), react_native_dep("libraries/fbcore/src/main/java/com/facebook/common/logging:logging"), react_native_dep("third-party/java/infer-annotations:infer-annotations"), react_native_dep("third-party/java/jsr-305:jsr-305"), diff --git a/ReactAndroid/src/main/java/com/facebook/react/common/LifecycleState.java b/ReactAndroid/src/main/java/com/facebook/react/common/LifecycleState.java index 45402ab0d..a57dc105a 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/common/LifecycleState.java +++ b/ReactAndroid/src/main/java/com/facebook/react/common/LifecycleState.java @@ -7,6 +7,8 @@ package com.facebook.react.common; +import com.facebook.thecount.api.CountEnum; + /** * Lifecycle state for an Activity. The state right after pause and right before resume are the * basically the same so this enum is in terms of the forward lifecycle progression (onResume, etc). @@ -18,6 +20,7 @@ package com.facebook.react.common; * STARTED, * RESUMED */ +@CountEnum public enum LifecycleState { BEFORE_CREATE, BEFORE_RESUME, diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/core/BUCK b/ReactAndroid/src/main/java/com/facebook/react/modules/core/BUCK index 57580c41a..0c786291e 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/core/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/core/BUCK @@ -7,6 +7,7 @@ rn_android_library( "PUBLIC", ], deps = [ + react_native_dep("java/com/facebook/thecount:thecount"), react_native_dep("libraries/fbcore/src/main/java/com/facebook/common/logging:logging"), react_native_dep("third-party/java/infer-annotations:infer-annotations"), react_native_dep("third-party/java/jsr-305:jsr-305"), diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/core/ReactChoreographer.java b/ReactAndroid/src/main/java/com/facebook/react/modules/core/ReactChoreographer.java index 653b9d999..877ff0f56 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/core/ReactChoreographer.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/core/ReactChoreographer.java @@ -13,6 +13,7 @@ import com.facebook.common.logging.FLog; import com.facebook.infer.annotation.Assertions; import com.facebook.react.bridge.UiThreadUtil; import com.facebook.react.common.ReactConstants; +import com.facebook.thecount.api.CountEnum; /** * A simple wrapper around Choreographer that allows us to control the order certain callbacks @@ -21,6 +22,7 @@ import com.facebook.react.common.ReactConstants; */ public class ReactChoreographer { + @CountEnum public enum CallbackType { /** diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/BUCK b/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/BUCK index edb587a8d..69efcf59c 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/BUCK @@ -10,6 +10,7 @@ rn_android_library( "PUBLIC", ], deps = [ + react_native_dep("java/com/facebook/thecount:thecount"), react_native_dep("third-party/java/infer-annotations:infer-annotations"), react_native_dep("third-party/java/jsr-305:jsr-305"), react_native_target("java/com/facebook/react/bridge:bridge"), diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerMode.java b/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerMode.java index a499657a6..07a21c5d5 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerMode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerMode.java @@ -7,9 +7,12 @@ package com.facebook.react.modules.datepicker; +import com.facebook.thecount.api.CountEnum; + /** * Date picker modes */ +@CountEnum public enum DatePickerMode { CALENDAR, SPINNER, diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/timepicker/BUCK b/ReactAndroid/src/main/java/com/facebook/react/modules/timepicker/BUCK index 51685f7d9..80b5d878b 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/timepicker/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/timepicker/BUCK @@ -10,6 +10,7 @@ rn_android_library( "PUBLIC", ], deps = [ + react_native_dep("java/com/facebook/thecount:thecount"), react_native_dep("third-party/java/infer-annotations:infer-annotations"), react_native_dep("third-party/java/jsr-305:jsr-305"), react_native_target("java/com/facebook/react/bridge:bridge"), diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/timepicker/TimePickerMode.java b/ReactAndroid/src/main/java/com/facebook/react/modules/timepicker/TimePickerMode.java index 26657481c..07c838f2b 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/timepicker/TimePickerMode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/timepicker/TimePickerMode.java @@ -7,7 +7,9 @@ package com.facebook.react.modules.timepicker; +import com.facebook.thecount.api.CountEnum; +@CountEnum public enum TimePickerMode { CLOCK, SPINNER, diff --git a/ReactAndroid/src/main/java/com/facebook/react/processing/BUCK b/ReactAndroid/src/main/java/com/facebook/react/processing/BUCK index f88f4fe67..19e1a2c4d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/processing/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/processing/BUCK @@ -18,6 +18,7 @@ rn_java_library( source = "7", target = "7", deps = [ + react_native_dep("java/com/facebook/thecount:thecount"), react_native_dep("third-party/java/infer-annotations:infer-annotations"), react_native_dep("third-party/java/javapoet:javapoet"), react_native_dep("third-party/java/jsr-305:jsr-305"), diff --git a/ReactAndroid/src/main/java/com/facebook/react/processing/ReactPropertyProcessor.java b/ReactAndroid/src/main/java/com/facebook/react/processing/ReactPropertyProcessor.java index 9b9b94607..ca98a42e3 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/processing/ReactPropertyProcessor.java +++ b/ReactAndroid/src/main/java/com/facebook/react/processing/ReactPropertyProcessor.java @@ -53,6 +53,8 @@ import javax.lang.model.type.TypeMirror; import javax.lang.model.util.Elements; import javax.lang.model.util.Types; +import com.facebook.thecount.api.CountEnum; + /** * This annotation processor crawls subclasses of ReactShadowNode and ViewManager and finds their * exported properties with the @ReactProp or @ReactGroupProp annotation. It generates a class @@ -549,6 +551,7 @@ public class ReactPropertyProcessor extends AbstractProcessor { } } + @CountEnum private enum SettableType { VIEW_MANAGER, SHADOW_NODE diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/BUCK b/ReactAndroid/src/main/java/com/facebook/react/uimanager/BUCK index 262d60c93..08635f986 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/BUCK @@ -23,6 +23,7 @@ rn_android_library( YOGA_TARGET, ":DisplayMetrics", react_native_dep("java/com/facebook/systrace:systrace"), + react_native_dep("java/com/facebook/thecount:thecount"), react_native_dep("libraries/fbcore/src/main/java/com/facebook/common/logging:logging"), react_native_dep("third-party/java/infer-annotations:infer-annotations"), react_native_target("java/com/facebook/debug/tags:tags"), diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/PointerEvents.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/PointerEvents.java index da4f248fa..4862db0ca 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/PointerEvents.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/PointerEvents.java @@ -7,10 +7,13 @@ package com.facebook.react.uimanager; +import com.facebook.thecount.api.CountEnum; + /** * Possible values for pointer events that a view and its descendants should receive. See * https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events for more info. */ +@CountEnum public enum PointerEvents { /** diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEventType.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEventType.java index 6d6cac7b6..bc6c4e5c4 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEventType.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEventType.java @@ -7,9 +7,12 @@ package com.facebook.react.uimanager.events; +import com.facebook.thecount.api.CountEnum; + /** * Touch event types that JS module RCTEventEmitter can understand */ +@CountEnum public enum TouchEventType { START("topTouchStart"), END("topTouchEnd"), diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/AnimatedPropertyType.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/AnimatedPropertyType.java index 78e6a2b01..7c80c1bfd 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/AnimatedPropertyType.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/AnimatedPropertyType.java @@ -5,10 +5,13 @@ package com.facebook.react.uimanager.layoutanimation; +import com.facebook.thecount.api.CountEnum; + /** * Enum representing the different view properties that can be used when animating layout for * view creation. */ +@CountEnum /* package */ enum AnimatedPropertyType { OPACITY("opacity"), SCALE_X("scaleX"), diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutAnimationType.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutAnimationType.java index 23f325226..62d625f1d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutAnimationType.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutAnimationType.java @@ -5,9 +5,12 @@ package com.facebook.react.uimanager.layoutanimation; +import com.facebook.thecount.api.CountEnum; + /** * Enum representing the different animation type that can be specified in layout animation config. */ +@CountEnum /* package */ enum LayoutAnimationType { CREATE("create"), UPDATE("update"), diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/image/BUCK b/ReactAndroid/src/main/java/com/facebook/react/views/image/BUCK index fe352c0f2..f8ee672de 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/image/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/views/image/BUCK @@ -35,6 +35,7 @@ rn_android_library( ], deps = [ YOGA_TARGET, + react_native_dep("java/com/facebook/thecount:thecount"), react_native_dep("libraries/fresco/fresco-react-native:fbcore"), react_native_dep("libraries/fresco/fresco-react-native:fresco-drawee"), react_native_dep("libraries/fresco/fresco-react-native:fresco-react-native"), diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/image/ImageResizeMethod.java b/ReactAndroid/src/main/java/com/facebook/react/views/image/ImageResizeMethod.java index 98fb2fe71..99ae1fd67 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/image/ImageResizeMethod.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/image/ImageResizeMethod.java @@ -7,6 +7,9 @@ package com.facebook.react.views.image; +import com.facebook.thecount.api.CountEnum; + +@CountEnum public enum ImageResizeMethod { AUTO, RESIZE, diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/BUCK b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/BUCK index 2a72452d0..2e3c2e32c 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/BUCK @@ -11,6 +11,7 @@ rn_android_library( ], deps = [ YOGA_TARGET, + react_native_dep("java/com/facebook/thecount:thecount"), react_native_dep("third-party/java/infer-annotations:infer-annotations"), react_native_dep("third-party/java/jsr-305:jsr-305"), react_native_target("java/com/facebook/react/bridge:bridge"), diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEventType.java b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEventType.java index 5a3810d03..7d0ec9bdf 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEventType.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEventType.java @@ -7,9 +7,12 @@ package com.facebook.react.views.scroll; +import com.facebook.thecount.api.CountEnum; + /** * Scroll event types that JS module RCTEventEmitter can understand */ +@CountEnum public enum ScrollEventType { BEGIN_DRAG("topScrollBeginDrag"), END_DRAG("topScrollEndDrag"), diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/view/BUCK b/ReactAndroid/src/main/java/com/facebook/react/views/view/BUCK index a7b4d74e8..7edb8a061 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/view/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/views/view/BUCK @@ -8,6 +8,7 @@ rn_android_library( ], deps = [ YOGA_TARGET, + react_native_dep("java/com/facebook/thecount:thecount"), react_native_dep("third-party/java/infer-annotations:infer-annotations"), react_native_dep("third-party/java/jsr-305:jsr-305"), react_native_target("java/com/facebook/react/bridge:bridge"), diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java b/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java index 1a31a0cc3..ab06ae1a3 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java @@ -27,11 +27,13 @@ import com.facebook.react.common.annotations.VisibleForTesting; import com.facebook.react.modules.i18nmanager.I18nUtil; import com.facebook.react.uimanager.FloatUtil; import com.facebook.react.uimanager.Spacing; +import com.facebook.thecount.api.CountEnum; import com.facebook.yoga.YogaConstants; import java.util.Arrays; import java.util.Locale; import javax.annotation.Nullable; + /** * A subclass of {@link Drawable} used for background of {@link ReactViewGroup}. It supports drawing * background color and borders (including rounded borders) by providing a react friendly API @@ -111,6 +113,7 @@ public class ReactViewBackgroundDrawable extends Drawable { private final Context mContext; private int mLayoutDirection; + @CountEnum public enum BorderRadiusLocation { TOP_LEFT, TOP_RIGHT,