mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Fix accessibilityRole value lookup (with conflict fixed)
This commit is contained in:
committed by
Lorenzo Sciandra
parent
94a0146c02
commit
f49f633d03
+4
-18
@@ -1,20 +1,16 @@
|
||||
// Copyright (c) 2004-present, Facebook, Inc.
|
||||
// Copyright (c) Facebook, Inc. and its affiliates.
|
||||
|
||||
// This source code is licensed under the MIT license found in the
|
||||
// LICENSE file in the root directory of this source tree.
|
||||
|
||||
package com.facebook.react.uimanager;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.support.v4.view.AccessibilityDelegateCompat;
|
||||
import android.support.v4.view.ViewCompat;
|
||||
import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
|
||||
import android.view.View;
|
||||
import android.view.accessibility.AccessibilityNodeInfo;
|
||||
import com.facebook.react.R;
|
||||
import com.facebook.react.bridge.ReadableArray;
|
||||
import java.util.Locale;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
@@ -76,11 +72,11 @@ public class AccessibilityDelegateUtil {
|
||||
|
||||
public static AccessibilityRole fromValue(@Nullable String value) {
|
||||
for (AccessibilityRole role : AccessibilityRole.values()) {
|
||||
if (role.getValue() != null && role.getValue().equals(value)) {
|
||||
if (role.name().equalsIgnoreCase(value)) {
|
||||
return role;
|
||||
}
|
||||
}
|
||||
return AccessibilityRole.NONE;
|
||||
throw new IllegalArgumentException("Invalid accessibility role value: " + value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,14 +145,4 @@ public class AccessibilityDelegateUtil {
|
||||
nodeInfo.setClickable(true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Method for setting accessibilityRole on view properties.
|
||||
*/
|
||||
public static AccessibilityRole getAccessibilityRole(String role) {
|
||||
if (role == null) {
|
||||
return AccessibilityRole.NONE;
|
||||
}
|
||||
return AccessibilityRole.valueOf(role.toUpperCase());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,7 @@ import android.view.View;
|
||||
import android.view.ViewParent;
|
||||
import com.facebook.react.R;
|
||||
import com.facebook.react.bridge.ReadableArray;
|
||||
import com.facebook.react.uimanager.AccessibilityDelegateUtil.AccessibilityRole;
|
||||
import com.facebook.react.uimanager.annotations.ReactProp;
|
||||
import com.facebook.react.uimanager.util.ReactFindViewUtil;
|
||||
import java.util.Locale;
|
||||
@@ -131,14 +132,8 @@ public abstract class BaseViewManager<T extends View, C extends LayoutShadowNode
|
||||
if (accessibilityRole == null) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
AccessibilityDelegateUtil.AccessibilityRole.valueOf(accessibilityRole.toUpperCase(Locale.US));
|
||||
} catch (NullPointerException e) {
|
||||
throw new IllegalArgumentException("Invalid Role " + accessibilityRole + " Passed In");
|
||||
} catch (IllegalArgumentException e) {
|
||||
throw new IllegalArgumentException("Invalid Role " + accessibilityRole + " Passed In");
|
||||
}
|
||||
view.setTag(R.id.accessibility_role, accessibilityRole);
|
||||
|
||||
view.setTag(R.id.accessibility_role, AccessibilityRole.fromValue(accessibilityRole));
|
||||
}
|
||||
|
||||
@ReactProp(name = PROP_ACCESSIBILITY_STATES)
|
||||
|
||||
@@ -5,6 +5,7 @@ rn_robolectric_test(
|
||||
# TODO Disabled temporarily until Yoga linking is fixed t14964130
|
||||
# srcs = glob(['**/*.java']),
|
||||
srcs = [
|
||||
"BaseViewManagerTest.java",
|
||||
"MatrixMathHelperTest.java",
|
||||
"SimpleViewPropertyTest.java",
|
||||
],
|
||||
@@ -33,6 +34,7 @@ rn_robolectric_test(
|
||||
react_native_target("java/com/facebook/react/uimanager/annotations:annotations"),
|
||||
react_native_target("java/com/facebook/react/views/text:text"),
|
||||
react_native_target("java/com/facebook/react/views/view:view"),
|
||||
react_native_target("res:uimanager"),
|
||||
react_native_tests_target("java/com/facebook/react/bridge:testhelpers"),
|
||||
],
|
||||
)
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
package com.facebook.react.uimanager;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v4.view.ViewCompat;
|
||||
import com.facebook.react.uimanager.AccessibilityDelegateUtil.AccessibilityRole;
|
||||
import com.facebook.react.views.view.ReactViewGroup;
|
||||
import com.facebook.react.views.view.ReactViewManager;
|
||||
import com.facebook.react.R;
|
||||
import java.util.Locale;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import static org.fest.assertions.api.Assertions.assertThat;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class BaseViewManagerTest {
|
||||
|
||||
private BaseViewManager mViewManager;
|
||||
private ReactViewGroup mView;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
mViewManager = new ReactViewManager();
|
||||
mView = new ReactViewGroup(RuntimeEnvironment.application);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAccessibilityRoleNone() {
|
||||
mViewManager.setAccessibilityRole(mView, "none");
|
||||
assertThat(mView.getTag(R.id.accessibility_role)).isEqualTo(AccessibilityRole.NONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAccessibilityRoleTurkish() {
|
||||
Locale.setDefault(Locale.forLanguageTag("tr-TR"));
|
||||
mViewManager.setAccessibilityRole(mView, "image");
|
||||
assertThat(mView.getTag(R.id.accessibility_role)).isEqualTo(AccessibilityRole.IMAGE);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user