diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/AccessibilityDelegateUtil.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/AccessibilityDelegateUtil.java index ca491576b..617773b24 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/AccessibilityDelegateUtil.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/AccessibilityDelegateUtil.java @@ -29,30 +29,48 @@ public class AccessibilityDelegateUtil { */ public enum AccessibilityRole { - NONE(null), - BUTTON("android.widget.Button"), - LINK("android.widget.ViewGroup"), - SEARCH("android.widget.EditText"), - IMAGE("android.widget.ImageView"), - IMAGEBUTTON("android.widget.ImageView"), - KEYBOARDKEY("android.inputmethodservice.Keyboard$Key"), - TEXT("android.widget.ViewGroup"), - ADJUSTABLE("android.widget.SeekBar"), - SUMMARY("android.widget.ViewGroup"), - HEADER("android.widget.ViewGroup"); + NONE, + BUTTON, + LINK, + SEARCH, + IMAGE, + IMAGEBUTTON, + KEYBOARDKEY, + TEXT, + ADJUSTABLE, + SUMMARY, + HEADER; - @Nullable private final String mValue; - - AccessibilityRole(String type) { - mValue = type; + public static String getValue(AccessibilityRole role) { + switch (role) { + case NONE: + return null; + case BUTTON: + return "android.widget.Button"; + case LINK: + return "android.widget.ViewGroup"; + case SEARCH: + return "android.widget.EditText"; + case IMAGE: + return "android.widget.ImageView"; + case IMAGEBUTTON: + return "android.widget.ImageView"; + case KEYBOARDKEY: + return "android.inputmethodservice.Keyboard$Key"; + case TEXT: + return "android.widget.ViewGroup"; + case ADJUSTABLE: + return "android.widget.SeekBar"; + case SUMMARY: + return "android.widget.ViewGroup"; + case HEADER: + return "android.widget.ViewGroup"; + default: + throw new IllegalArgumentException("Invalid accessibility role value: " + role); + } } - @Nullable - public String getValue() { - return mValue; - } - - public static AccessibilityRole fromValue(String value) { + public static AccessibilityRole fromValue(@Nullable String value) { for (AccessibilityRole role : AccessibilityRole.values()) { if (role.name().equalsIgnoreCase(value)) { return role; @@ -105,7 +123,7 @@ public class AccessibilityDelegateUtil { if (role == null) { role = AccessibilityRole.NONE; } - nodeInfo.setClassName(role.getValue()); + nodeInfo.setClassName(AccessibilityRole.getValue(role)); if (Locale.getDefault().getLanguage().equals(new Locale("en").getLanguage())) { if (role.equals(AccessibilityRole.LINK)) { nodeInfo.setRoleDescription(context.getString(R.string.link_description)); diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleConstants.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleConstants.java index 1827b5c78..36c3162cb 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleConstants.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleConstants.java @@ -35,7 +35,7 @@ import java.util.Map; "phasedRegistrationNames", MapBuilder.of("bubbled", "onSelect", "captured", "onSelectCapture"))) .put( - TouchEventType.START.getJSEventName(), + TouchEventType.getJSEventName(TouchEventType.START), MapBuilder.of( "phasedRegistrationNames", MapBuilder.of( @@ -44,7 +44,7 @@ import java.util.Map; "captured", "onTouchStartCapture"))) .put( - TouchEventType.MOVE.getJSEventName(), + TouchEventType.getJSEventName(TouchEventType.MOVE), MapBuilder.of( "phasedRegistrationNames", MapBuilder.of( @@ -53,7 +53,7 @@ import java.util.Map; "captured", "onTouchMoveCapture"))) .put( - TouchEventType.END.getJSEventName(), + TouchEventType.getJSEventName(TouchEventType.END), MapBuilder.of( "phasedRegistrationNames", MapBuilder.of( @@ -62,7 +62,7 @@ import java.util.Map; "captured", "onTouchEndCapture"))) .put( - TouchEventType.CANCEL.getJSEventName(), + TouchEventType.getJSEventName(TouchEventType.CANCEL), MapBuilder.of( "phasedRegistrationNames", MapBuilder.of( diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.java index 79ad6699b..617b9bc98 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.java @@ -117,7 +117,7 @@ public class TouchEvent extends Event { @Override public String getEventName() { - return Assertions.assertNotNull(mTouchEventType).getJSEventName(); + return TouchEventType.getJSEventName(Assertions.assertNotNull(mTouchEventType)); } @Override 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 605e282dc..04439c412 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 @@ -11,18 +11,23 @@ package com.facebook.react.uimanager.events; * Touch event types that JS module RCTEventEmitter can understand */ public enum TouchEventType { - START("topTouchStart"), - END("topTouchEnd"), - MOVE("topTouchMove"), - CANCEL("topTouchCancel"); + START, + END, + MOVE, + CANCEL; - private final String mJSEventName; - - TouchEventType(String jsEventName) { - mJSEventName = jsEventName; - } - - public String getJSEventName() { - return mJSEventName; + public static String getJSEventName(TouchEventType type) { + switch (type) { + case START: + return "topTouchStart"; + case END: + return "topTouchEnd"; + case MOVE: + return "topTouchMove"; + case CANCEL: + return "topTouchCancel"; + default: + throw new IllegalArgumentException("Unexpected type " + type); + } } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java index ec82b7870..878bb5a3d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java @@ -104,7 +104,7 @@ public class TouchesHelper { } rctEventEmitter.receiveTouches( - type.getJSEventName(), + TouchEventType.getJSEventName(type), pointers, changedIndices); } 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 2b4938a5c..a8e569fbe 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 @@ -10,28 +10,23 @@ package com.facebook.react.uimanager.layoutanimation; * view creation. */ /* package */ enum AnimatedPropertyType { - OPACITY("opacity"), - SCALE_X("scaleX"), - SCALE_Y("scaleY"), - SCALE_XY("scaleXY"); - - private final String mName; - - private AnimatedPropertyType(String name) { - mName = name; - } + OPACITY, + SCALE_X, + SCALE_Y, + SCALE_XY; public static AnimatedPropertyType fromString(String name) { - for (AnimatedPropertyType property : AnimatedPropertyType.values()) { - if (property.toString().equalsIgnoreCase(name)) { - return property; - } + switch (name) { + case "opacity": + return OPACITY; + case "scaleX": + return SCALE_X; + case "scaleY": + return SCALE_Y; + case "scaleXY": + return SCALE_XY; + default: + throw new IllegalArgumentException("Unsupported animated property: " + name); } - throw new IllegalArgumentException("Unsupported animated property : " + name); - } - - @Override - public String toString() { - return mName; } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/InterpolatorType.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/InterpolatorType.java index 80a220bc6..e92b6b54f 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/InterpolatorType.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/InterpolatorType.java @@ -9,29 +9,26 @@ package com.facebook.react.uimanager.layoutanimation; * Enum representing the different interpolators that can be used in layout animation configuration. */ /* package */ enum InterpolatorType { - LINEAR("linear"), - EASE_IN("easeIn"), - EASE_OUT("easeOut"), - EASE_IN_EASE_OUT("easeInEaseOut"), - SPRING("spring"); - - private final String mName; - - private InterpolatorType(String name) { - mName = name; - } + LINEAR, + EASE_IN, + EASE_OUT, + EASE_IN_EASE_OUT, + SPRING; public static InterpolatorType fromString(String name) { - for (InterpolatorType type : InterpolatorType.values()) { - if (type.toString().equalsIgnoreCase(name)) { - return type; - } + switch (name.toLowerCase()) { + case "linear": + return LINEAR; + case "easein": + return EASE_IN; + case "easeout": + return EASE_OUT; + case "easeineaseout": + return EASE_IN_EASE_OUT; + case "spring": + return SPRING; + default: + throw new IllegalArgumentException("Unsupported interpolation type : " + name); } - throw new IllegalArgumentException("Unsupported interpolation type : " + name); - } - - @Override - public String toString() { - return mName; } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutAnimationController.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutAnimationController.java index 1f2d2c2bc..2f08da20e 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutAnimationController.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutAnimationController.java @@ -46,19 +46,19 @@ public class LayoutAnimationController { mShouldAnimateLayout = false; int globalDuration = config.hasKey("duration") ? config.getInt("duration") : 0; - if (config.hasKey(LayoutAnimationType.CREATE.toString())) { + if (config.hasKey(LayoutAnimationType.toString(LayoutAnimationType.CREATE))) { mLayoutCreateAnimation.initializeFromConfig( - config.getMap(LayoutAnimationType.CREATE.toString()), globalDuration); + config.getMap(LayoutAnimationType.toString(LayoutAnimationType.CREATE)), globalDuration); mShouldAnimateLayout = true; } - if (config.hasKey(LayoutAnimationType.UPDATE.toString())) { + if (config.hasKey(LayoutAnimationType.toString(LayoutAnimationType.UPDATE))) { mLayoutUpdateAnimation.initializeFromConfig( - config.getMap(LayoutAnimationType.UPDATE.toString()), globalDuration); + config.getMap(LayoutAnimationType.toString(LayoutAnimationType.UPDATE)), globalDuration); mShouldAnimateLayout = true; } - if (config.hasKey(LayoutAnimationType.DELETE.toString())) { + if (config.hasKey(LayoutAnimationType.toString(LayoutAnimationType.DELETE))) { mLayoutDeleteAnimation.initializeFromConfig( - config.getMap(LayoutAnimationType.DELETE.toString()), globalDuration); + config.getMap(LayoutAnimationType.toString(LayoutAnimationType.DELETE)), globalDuration); mShouldAnimateLayout = true; } } 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 e0345f165..253faa2ec 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 @@ -9,18 +9,20 @@ package com.facebook.react.uimanager.layoutanimation; * Enum representing the different animation type that can be specified in layout animation config. */ /* package */ enum LayoutAnimationType { - CREATE("create"), - UPDATE("update"), - DELETE("delete"); + CREATE, + UPDATE, + DELETE; - private final String mName; - - private LayoutAnimationType(String name) { - mName = name; - } - - @Override - public String toString() { - return mName; + public static String toString(LayoutAnimationType type) { + switch (type) { + case CREATE: + return "create"; + case UPDATE: + return "update"; + case DELETE: + return "delete"; + default: + throw new IllegalArgumentException("Unsupported LayoutAnimationType: " + type); + } } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java index a2b35975c..772241317 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java @@ -271,11 +271,11 @@ public class ReactScrollViewManager public static Map createExportedCustomDirectEventTypeConstants() { return MapBuilder.builder() - .put(ScrollEventType.SCROLL.getJSEventName(), MapBuilder.of("registrationName", "onScroll")) - .put(ScrollEventType.BEGIN_DRAG.getJSEventName(), MapBuilder.of("registrationName", "onScrollBeginDrag")) - .put(ScrollEventType.END_DRAG.getJSEventName(), MapBuilder.of("registrationName", "onScrollEndDrag")) - .put(ScrollEventType.MOMENTUM_BEGIN.getJSEventName(), MapBuilder.of("registrationName", "onMomentumScrollBegin")) - .put(ScrollEventType.MOMENTUM_END.getJSEventName(), MapBuilder.of("registrationName", "onMomentumScrollEnd")) + .put(ScrollEventType.getJSEventName(ScrollEventType.SCROLL), MapBuilder.of("registrationName", "onScroll")) + .put(ScrollEventType.getJSEventName(ScrollEventType.BEGIN_DRAG), MapBuilder.of("registrationName", "onScrollBeginDrag")) + .put(ScrollEventType.getJSEventName(ScrollEventType.END_DRAG), MapBuilder.of("registrationName", "onScrollEndDrag")) + .put(ScrollEventType.getJSEventName(ScrollEventType.MOMENTUM_BEGIN), MapBuilder.of("registrationName", "onMomentumScrollBegin")) + .put(ScrollEventType.getJSEventName(ScrollEventType.MOMENTUM_END), MapBuilder.of("registrationName", "onMomentumScrollEnd")) .build(); } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEvent.java b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEvent.java index 4fadfc499..cdc129a8f 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEvent.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEvent.java @@ -100,7 +100,7 @@ public class ScrollEvent extends Event { @Override public String getEventName() { - return Assertions.assertNotNull(mScrollEventType).getJSEventName(); + return ScrollEventType.getJSEventName(Assertions.assertNotNull(mScrollEventType)); } @Override 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 e5fd4dbea..d51de7861 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 @@ -11,19 +11,26 @@ package com.facebook.react.views.scroll; * Scroll event types that JS module RCTEventEmitter can understand */ public enum ScrollEventType { - BEGIN_DRAG("topScrollBeginDrag"), - END_DRAG("topScrollEndDrag"), - SCROLL("topScroll"), - MOMENTUM_BEGIN("topMomentumScrollBegin"), - MOMENTUM_END("topMomentumScrollEnd"); + BEGIN_DRAG, + END_DRAG, + SCROLL, + MOMENTUM_BEGIN, + MOMENTUM_END; - private final String mJSEventName; - - ScrollEventType(String jsEventName) { - mJSEventName = jsEventName; - } - - public String getJSEventName() { - return mJSEventName; + public static String getJSEventName(ScrollEventType type) { + switch (type) { + case BEGIN_DRAG: + return "topScrollBeginDrag"; + case END_DRAG: + return "topScrollEndDrag"; + case SCROLL: + return "topScroll"; + case MOMENTUM_BEGIN: + return "topMomentumScrollBegin"; + case MOMENTUM_END: + return "topMomentumScrollEnd"; + default: + throw new IllegalArgumentException("Unsupported ScrollEventType: " + type); + } } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java index ef95c2383..1b6d1e837 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java @@ -159,7 +159,7 @@ public class ReactTextInputManager extends BaseViewManager getExportedCustomDirectEventTypeConstants() { return MapBuilder.builder() - .put(ScrollEventType.SCROLL.getJSEventName(), MapBuilder.of("registrationName", "onScroll")) + .put(ScrollEventType.getJSEventName(ScrollEventType.SCROLL), MapBuilder.of("registrationName", "onScroll")) .build(); } 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 d50e00e45..430c5895b 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 @@ -53,13 +53,13 @@ public class ReactViewBackgroundDrawable extends Drawable { // 0 == 0x00000000, all bits set to 0. private static final int ALL_BITS_UNSET = 0; - private static enum BorderStyle { + private enum BorderStyle { SOLID, DASHED, DOTTED; - public @Nullable PathEffect getPathEffect(float borderWidth) { - switch (this) { + public static @Nullable PathEffect getPathEffect(BorderStyle style, float borderWidth) { + switch (style) { case SOLID: return null; @@ -957,7 +957,7 @@ public class ReactViewBackgroundDrawable extends Drawable { */ private void updatePathEffect() { mPathEffectForBorderStyle = mBorderStyle != null - ? mBorderStyle.getPathEffect(getFullBorderWidth()) + ? BorderStyle.getPathEffect(mBorderStyle, getFullBorderWidth()) : null; mPaint.setPathEffect(mPathEffectForBorderStyle);