Skip to content

Commit

Permalink
Rename accessibilityValueDescription to accessibilityValue.
Browse files Browse the repository at this point in the history
  • Loading branch information
Marc Mulcahy committed Aug 26, 2019
1 parent d386d7a commit 6a0eab3
Show file tree
Hide file tree
Showing 14 changed files with 76 additions and 77 deletions.
2 changes: 1 addition & 1 deletion Libraries/Components/View/ReactNativeViewAttributes.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ const UIView = {
accessibilityRole: true,
accessibilityStates: true,
accessibilityState: true,
accessibilityValueDescription: true,
accessibilityValue: true,
accessibilityHint: true,
importantForAccessibility: true,
nativeID: true,
Expand Down
2 changes: 1 addition & 1 deletion Libraries/Components/View/ReactNativeViewViewConfig.js
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ const ReactNativeViewConfig = {
accessibilityRole: true,
accessibilityStates: true,
accessibilityState: true,
accessibilityValueDescription: true,
accessibilityValue: true,
accessibilityViewIsModal: true,
accessible: true,
alignContent: true,
Expand Down
14 changes: 7 additions & 7 deletions Libraries/Components/View/ViewAccessibility.js
Original file line number Diff line number Diff line change
Expand Up @@ -75,24 +75,24 @@ export type AccessibilityState = {
expanded?: boolean,
};

export type AccessibilityValueDescription = {
export type AccessibilityValue = $ReadOnly<{|
/**
* The minimum value of this component's range. (should be an integer)
*/
minimum?: number,
min?: number,

/**
* The current value of this component's range. (should be an integer)
* The maximum value of this component's range. (should be an integer)
*/
current?: number,
max?: number,

/**
* The maximum value of this component's range. (should be an integer)
* The current value of this component's range. (should be an integer)
*/
maximum?: number,
now?: number,

/**
* A textual description of this component's value. (will override minimum, current, and maximum if set)
*/
text?: string,
};
|}>;
4 changes: 2 additions & 2 deletions Libraries/Components/View/ViewPropTypes.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import type {
AccessibilityRole,
AccessibilityStates,
AccessibilityState,
AccessibilityValueDescription,
AccessibilityValue,
AccessibilityActionEvent,
AccessibilityActionInfo,
} from './ViewAccessibility';
Expand Down Expand Up @@ -416,7 +416,7 @@ export type ViewProps = $ReadOnly<{|
*/
accessibilityStates?: ?AccessibilityStates,
accessibilityState?: ?AccessibilityState,
accessibilityValueDescription?: ?AccessibilityValueDescription,
accessibilityValue?: ?AccessibilityValue,

/**
* Provides an array of custom actions available for accessibility.
Expand Down
2 changes: 1 addition & 1 deletion Libraries/DeprecatedPropTypes/DeprecatedViewPropTypes.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ module.exports = {
>,
>),
accessibilityState: PropTypes.object,
accessibilityValueDescription: PropTypes.object,
accessibilityValue: PropTypes.object,
/**
* Indicates to accessibility services whether the user should be notified
* when this view changes. Works for Android API >= 19 only.
Expand Down
10 changes: 5 additions & 5 deletions RNTester/js/examples/Accessibility/AccessibilityExample.js
Original file line number Diff line number Diff line change
Expand Up @@ -557,10 +557,10 @@ class FakeSliderExample extends React.Component {
break;
}
}}
accessibilityValueDescription={{
minimum: 0,
current: this.state.current,
maximum: 100,
accessibilityValue={{
min: 0,
now: this.state.current,
max: 100,
}}>
<Text>Fake Slider</Text>
</View>
Expand All @@ -587,7 +587,7 @@ class FakeSliderExample extends React.Component {
break;
}
}}
accessibilityValueDescription={{text: this.state.textualValue}}>
accessibilityValue={{text: this.state.textualValue}}>
<Text>Equalizer</Text>
</View>
</View>
Expand Down
24 changes: 12 additions & 12 deletions React/Views/RCTView.m
Original file line number Diff line number Diff line change
Expand Up @@ -285,21 +285,21 @@ - (NSString *)accessibilityValue
}
}

// handle accessibilityValueDescription
// handle accessibilityValue

if (self.accessibilityValueDescription) {
id minimum = self.accessibilityValueDescription[@"minimum"];
id current = self.accessibilityValueDescription[@"current"];
id maximum = self.accessibilityValueDescription[@"maximum"];
id text = self.accessibilityValueDescription[@"text"];
if (self.accessibilityValueInternal) {
id min = self.accessibilityValueInternal[@"min"];
id now = self.accessibilityValueInternal[@"now"];
id max = self.accessibilityValueInternal[@"max"];
id text = self.accessibilityValueInternal[@"text"];
if (text && [text isKindOfClass:[NSString class]]) {
[valueComponents addObject:text];
} else if ([minimum isKindOfClass:[NSNumber class]] &&
[current isKindOfClass:[NSNumber class]] &&
[maximum isKindOfClass:[NSNumber class]] &&
([minimum intValue] < [maximum intValue]) &&
([minimum intValue] <= [current intValue] && [current intValue] <= [maximum intValue])) {
int val = ([current intValue]*100)/([maximum intValue]-[minimum intValue]);
} else if ([min isKindOfClass:[NSNumber class]] &&
[now isKindOfClass:[NSNumber class]] &&
[max isKindOfClass:[NSNumber class]] &&
([min intValue] < [max intValue]) &&
([min intValue] <= [now intValue] && [now intValue] <= [max intValue])) {
int val = ([now intValue]*100)/([max intValue]-[min intValue]);
[valueComponents addObject:[NSString stringWithFormat:@"%d percent", val]];
}
}
Expand Down
2 changes: 1 addition & 1 deletion React/Views/RCTViewManager.m
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ - (RCTShadowView *)shadowView
RCT_REMAP_VIEW_PROPERTY(accessibilityActions, reactAccessibilityElement.accessibilityActions, NSDictionaryArray)
RCT_REMAP_VIEW_PROPERTY(accessibilityLabel, reactAccessibilityElement.accessibilityLabel, NSString)
RCT_REMAP_VIEW_PROPERTY(accessibilityHint, reactAccessibilityElement.accessibilityHint, NSString)
RCT_REMAP_VIEW_PROPERTY(accessibilityValueDescription, reactAccessibilityElement.accessibilityValueDescription, NSDictionary)
RCT_REMAP_VIEW_PROPERTY(accessibilityValue, reactAccessibilityElement.accessibilityValueInternal, NSDictionary)
RCT_REMAP_VIEW_PROPERTY(accessibilityViewIsModal, reactAccessibilityElement.accessibilityViewIsModal, BOOL)
RCT_REMAP_VIEW_PROPERTY(accessibilityElementsHidden, reactAccessibilityElement.accessibilityElementsHidden, BOOL)
RCT_REMAP_VIEW_PROPERTY(accessibilityIgnoresInvertColors, reactAccessibilityElement.shouldAccessibilityIgnoresInvertColors, BOOL)
Expand Down
2 changes: 1 addition & 1 deletion React/Views/UIView+React.h
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@
@property (nonatomic, copy) NSArray <NSString *> *accessibilityStates;
@property (nonatomic, copy) NSDictionary<NSString *, id> *accessibilityState;
@property (nonatomic, copy) NSArray <NSDictionary *> *accessibilityActions;
@property (nonatomic, copy) NSDictionary *accessibilityValueDescription;
@property (nonatomic, copy) NSDictionary *accessibilityValueInternal;

/**
* Used in debugging to get a description of the view hierarchy rooted at
Expand Down
7 changes: 3 additions & 4 deletions React/Views/UIView+React.m
Original file line number Diff line number Diff line change
Expand Up @@ -337,14 +337,13 @@ - (void)setAccessibilityState:(NSDictionary<NSString *, id> *)accessibilityState
objc_setAssociatedObject(self, @selector(accessibilityState), accessibilityState, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}

- (NSDictionary<NSString *, id> *)accessibilityValueDescription
- (NSDictionary<NSString *, id> *)accessibilityValueInternal
{
return objc_getAssociatedObject(self, _cmd);
}

- (void)setAccessibilityValueDescription:(NSDictionary<NSString *, id> *)accessibilityValueDescription
- (void)setAccessibilityValueInternal:(NSDictionary<NSString *, id> *)accessibilityValue
{
objc_setAssociatedObject(self, @selector(accessibilityValueDescription), accessibilityValueDescription, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
objc_setAssociatedObject(self, @selector(accessibilityValueInternal), accessibilityValue, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}

#pragma mark - Debug
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ private void updateViewContentDescription(@NonNull T view) {
final ReadableMap accessibilityState = (ReadableMap) view.getTag(R.id.accessibility_state);
final String accessibilityHint = (String) view.getTag(R.id.accessibility_hint);
final List<String> contentDescription = new ArrayList<>();
final ReadableMap accessibilityValueDescription = (ReadableMap) view.getTag(R.id.accessibility_value_description);
final ReadableMap accessibilityValue = (ReadableMap) view.getTag(R.id.accessibility_value);
if (accessibilityLabel != null) {
contentDescription.add(accessibilityLabel);
}
Expand Down Expand Up @@ -229,8 +229,8 @@ private void updateViewContentDescription(@NonNull T view) {
}
}
}
if (accessibilityValueDescription != null && accessibilityValueDescription.hasKey("text")) {
final Dynamic text = accessibilityValueDescription.getDynamic("text");
if (accessibilityValue != null && accessibilityValue.hasKey("text")) {
final Dynamic text = accessibilityValue.getDynamic("text");
if (text != null && text.getType() == ReadableType.String) {
contentDescription.add(text.asString());
}
Expand All @@ -252,14 +252,14 @@ public void setAccessibilityActions(T view, ReadableArray accessibilityActions)
view.setTag(R.id.accessibility_actions, accessibilityActions);
}

@ReactProp(name = ViewProps.ACCESSIBILITY_VALUE_DESCRIPTION)
public void setAccessibilityValueDescription(T view, ReadableMap accessibilityValueDescription) {
if (accessibilityValueDescription == null) {
@ReactProp(name = ViewProps.ACCESSIBILITY_VALUE)
public void setAccessibilityValue(T view, ReadableMap accessibilityValue) {
if (accessibilityValue == null) {
return;
}

view.setTag(R.id.accessibility_value_description, accessibilityValueDescription);
if (accessibilityValueDescription.hasKey("text")) {
view.setTag(R.id.accessibility_value, accessibilityValue);
if (accessibilityValue.hasKey("text")) {
updateViewContentDescription(view);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -221,23 +221,23 @@ public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCo
}
}

// Process accessibilityValueDescription
// Process accessibilityValue

final ReadableMap accessibilityValueDescription = (ReadableMap) host.getTag(R.id.accessibility_value_description);
if (accessibilityValueDescription != null && accessibilityValueDescription.hasKey("minimum")
&& accessibilityValueDescription.hasKey("current") && accessibilityValueDescription.hasKey("maximum")) {
final Dynamic minimum = accessibilityValueDescription.getDynamic("minimum");
final Dynamic current = accessibilityValueDescription.getDynamic("current");
final Dynamic maximum = accessibilityValueDescription.getDynamic("maximum");
if (minimum != null && minimum.getType() == ReadableType.Number &&
current != null && current.getType() == ReadableType.Number &&
maximum != null && maximum.getType() == ReadableType.Number) {
final int min = minimum.asInt();
final int cur = current.asInt();
final int max = maximum.asInt();
final ReadableMap accessibilityValue = (ReadableMap) host.getTag(R.id.accessibility_value);
if (accessibilityValue != null && accessibilityValue.hasKey("min")
&& accessibilityValue.hasKey("now") && accessibilityValue.hasKey("max")) {
final Dynamic minDynamic = accessibilityValue.getDynamic("min");
final Dynamic nowDynamic = accessibilityValue.getDynamic("now");
final Dynamic maxDynamic = accessibilityValue.getDynamic("max");
if (minDynamic != null && minDynamic.getType() == ReadableType.Number &&
nowDynamic != null && nowDynamic.getType() == ReadableType.Number &&
maxDynamic != null && maxDynamic.getType() == ReadableType.Number) {
final int min = minDynamic.asInt();
final int now = nowDynamic.asInt();
final int max = maxDynamic.asInt();
if (max > min &&
cur >= min && max >= cur) {
info.setRangeInfo(RangeInfoCompat.obtain(RangeInfoCompat.RANGE_TYPE_INT, min, max, cur));
now >= min && max >= now) {
info.setRangeInfo(RangeInfoCompat.obtain(RangeInfoCompat.RANGE_TYPE_INT, min, max, now));
}
}
}
Expand All @@ -248,22 +248,22 @@ public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event)
super.onInitializeAccessibilityEvent(host, event);
// Set item count and current item index on accessibility events for adjustable
// in order to make Talkback announce the value of the adjustable
final ReadableMap accessibilityValueDescription = (ReadableMap) host.getTag(R.id.accessibility_value_description);
if (accessibilityValueDescription != null && accessibilityValueDescription.hasKey("minimum")
&& accessibilityValueDescription.hasKey("current") && accessibilityValueDescription.hasKey("maximum")) {
final Dynamic minimum = accessibilityValueDescription.getDynamic("minimum");
final Dynamic current = accessibilityValueDescription.getDynamic("current");
final Dynamic maximum = accessibilityValueDescription.getDynamic("maximum");
if (minimum != null && minimum.getType() == ReadableType.Number &&
current != null && current.getType() == ReadableType.Number &&
maximum != null && maximum.getType() == ReadableType.Number) {
final int min = minimum.asInt();
final int cur = current.asInt();
final int max = maximum.asInt();
final ReadableMap accessibilityValue = (ReadableMap) host.getTag(R.id.accessibility_value);
if (accessibilityValue != null && accessibilityValue.hasKey("min")
&& accessibilityValue.hasKey("now") && accessibilityValue.hasKey("max")) {
final Dynamic minDynamic = accessibilityValue.getDynamic("min");
final Dynamic nowDynamic = accessibilityValue.getDynamic("now");
final Dynamic maxDynamic = accessibilityValue.getDynamic("max");
if (minDynamic != null && minDynamic.getType() == ReadableType.Number &&
nowDynamic != null && nowDynamic.getType() == ReadableType.Number &&
maxDynamic != null && maxDynamic.getType() == ReadableType.Number) {
final int min = minDynamic.asInt();
final int now = nowDynamic.asInt();
final int max = maxDynamic.asInt();
if (max > min &&
cur >= min && max >= cur) {
now >= min && max >= now) {
event.setItemCount(max - min);
event.setCurrentItemIndex(cur);
event.setCurrentItemIndex(now);
}
}
}
Expand All @@ -282,11 +282,11 @@ public boolean performAccessibilityAction(View host, int action, Bundle args) {
// In order to make Talkback announce the change of the adjustable's value,
// schedule to send a TYPE_VIEW_SELECTED event after performing the scroll actions.
final AccessibilityRole accessibilityRole = (AccessibilityRole) host.getTag(R.id.accessibility_role);
final ReadableMap accessibilityValueDescription = (ReadableMap) host.getTag(R.id.accessibility_value_description);
final ReadableMap accessibilityValue = (ReadableMap) host.getTag(R.id.accessibility_value);
if (accessibilityRole == AccessibilityRole.ADJUSTABLE
&& (action == AccessibilityActionCompat.ACTION_SCROLL_FORWARD.getId()
|| action == AccessibilityActionCompat.ACTION_SCROLL_BACKWARD.getId())) {
if (accessibilityValueDescription != null && !accessibilityValueDescription.hasKey("text")) {
if (accessibilityValue != null && !accessibilityValue.hasKey("text")) {
scheduleAccessibilityEventSender(host);
}
return super.performAccessibilityAction(host, action, args);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ public class ViewProps {
public static final String ACCESSIBILITY_STATES = "accessibilityStates";
public static final String ACCESSIBILITY_STATE = "accessibilityState";
public static final String ACCESSIBILITY_ACTIONS = "accessibilityActions";
public static final String ACCESSIBILITY_VALUE_DESCRIPTION = "accessibilityValueDescription";
public static final String ACCESSIBILITY_VALUE = "accessibilityValue";
public static final String IMPORTANT_FOR_ACCESSIBILITY = "importantForAccessibility";

// DEPRECATED
Expand Down
4 changes: 2 additions & 2 deletions ReactAndroid/src/main/res/views/uimanager/values/ids.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<!--tag is used to store accessibilityActions tag-->
<item type="id" name="accessibility_actions"/>

<!--tag is used to store accessibilityValueDescription tag -->
<item type="id" name="accessibility_value_description"/>
<!--tag is used to store accessibilityValue tag -->
<item type="id" name="accessibility_value"/>

</resources>

0 comments on commit 6a0eab3

Please sign in to comment.