Skip to content

Commit fc66884

Browse files
fabriziocuccimeta-codesync[bot]
authored andcommitted
Remove shouldSetEnabledBasedOnAccessibilityState feature flag (#55120)
Summary: Pull Request resolved: #55120 Changelog: [Android][Fixed] - Properly set view.setEnabled() based on accessibilityState.disabled --- This diff removes the `shouldSetEnabledBasedOnAccessibilityState` feature flag since it has been tested in FB4A for a month with `defaultValue: true`. The flag was introduced to fix `BaseViewManager` to properly set `view.setEnabled()` based on `accessibilityState.disabled`. Previously, the old behavior only set `enabled(true)` when `disabled=false`, but didn't set `enabled(false)` when `disabled=true`. The new behavior properly sets the enabled state for both cases. This behavior is now the default. Changes: - Removed the flag definition from `ReactNativeFeatureFlags.config.js` - Removed the conditional check in `BaseViewManager.java`, now `view.setEnabled(!accessibilityState.getBoolean("disabled"))` is always called unconditionally - Removed the override from `ReactNativeFeatureFlagsOverrides_Facebook_Android.kt` - Regenerated all feature flag files via `js1 featureflags --update` Reviewed By: javache Differential Revision: D90384878 fbshipit-source-id: e367bd46e394685702524e3d7dc7f6f4c08ecbca
1 parent 04bdebc commit fc66884

21 files changed

Lines changed: 35 additions & 160 deletions

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<2fe5a4982aef97d3877c9f00d874ee37>>
7+
* @generated SignedSource<<7a9f9d29e1d5f01df33a0893e143a6db>>
88
*/
99

1010
/**
@@ -414,12 +414,6 @@ public object ReactNativeFeatureFlags {
414414
@JvmStatic
415415
public fun shouldPressibilityUseW3CPointerEventsForHover(): Boolean = accessor.shouldPressibilityUseW3CPointerEventsForHover()
416416

417-
/**
418-
* Fix BaseViewManager to properly set view.setEnabled() based on accessibilityState.disabled.
419-
*/
420-
@JvmStatic
421-
public fun shouldSetEnabledBasedOnAccessibilityState(): Boolean = accessor.shouldSetEnabledBasedOnAccessibilityState()
422-
423417
/**
424418
* Do not emit touchcancel from Android ScrollView, instead native topScroll event will trigger responder transfer and terminate in RN renderer.
425419
*/

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<7558273a79cd4a0c68f7c47dd54ed119>>
7+
* @generated SignedSource<<a0dee36eb68677b468c991297f0e95f7>>
88
*/
99

1010
/**
@@ -84,7 +84,6 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
8484
private var preparedTextCacheSizeCache: Double? = null
8585
private var preventShadowTreeCommitExhaustionCache: Boolean? = null
8686
private var shouldPressibilityUseW3CPointerEventsForHoverCache: Boolean? = null
87-
private var shouldSetEnabledBasedOnAccessibilityStateCache: Boolean? = null
8887
private var shouldTriggerResponderTransferOnScrollAndroidCache: Boolean? = null
8988
private var skipActivityIdentityAssertionOnHostPauseCache: Boolean? = null
9089
private var traceTurboModulePromiseRejectionsOnAndroidCache: Boolean? = null
@@ -676,15 +675,6 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
676675
return cached
677676
}
678677

679-
override fun shouldSetEnabledBasedOnAccessibilityState(): Boolean {
680-
var cached = shouldSetEnabledBasedOnAccessibilityStateCache
681-
if (cached == null) {
682-
cached = ReactNativeFeatureFlagsCxxInterop.shouldSetEnabledBasedOnAccessibilityState()
683-
shouldSetEnabledBasedOnAccessibilityStateCache = cached
684-
}
685-
return cached
686-
}
687-
688678
override fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean {
689679
var cached = shouldTriggerResponderTransferOnScrollAndroidCache
690680
if (cached == null) {

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<b41bdf33f0a9d878376a29c39222c808>>
7+
* @generated SignedSource<<ebb2bd0f070345e71737dab60a788a88>>
88
*/
99

1010
/**
@@ -156,8 +156,6 @@ public object ReactNativeFeatureFlagsCxxInterop {
156156

157157
@DoNotStrip @JvmStatic public external fun shouldPressibilityUseW3CPointerEventsForHover(): Boolean
158158

159-
@DoNotStrip @JvmStatic public external fun shouldSetEnabledBasedOnAccessibilityState(): Boolean
160-
161159
@DoNotStrip @JvmStatic public external fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean
162160

163161
@DoNotStrip @JvmStatic public external fun skipActivityIdentityAssertionOnHostPause(): Boolean

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<5c0d05705dae0f5accff59c1b51d77db>>
7+
* @generated SignedSource<<beceb761f215c0819c27da186138971e>>
88
*/
99

1010
/**
@@ -151,8 +151,6 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
151151

152152
override fun shouldPressibilityUseW3CPointerEventsForHover(): Boolean = false
153153

154-
override fun shouldSetEnabledBasedOnAccessibilityState(): Boolean = true
155-
156154
override fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean = false
157155

158156
override fun skipActivityIdentityAssertionOnHostPause(): Boolean = false

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<5e318e662ea5a25be4a5e7e45fe9f967>>
7+
* @generated SignedSource<<44f52bff0ecd0f26c2173581b09dccce>>
88
*/
99

1010
/**
@@ -88,7 +88,6 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
8888
private var preparedTextCacheSizeCache: Double? = null
8989
private var preventShadowTreeCommitExhaustionCache: Boolean? = null
9090
private var shouldPressibilityUseW3CPointerEventsForHoverCache: Boolean? = null
91-
private var shouldSetEnabledBasedOnAccessibilityStateCache: Boolean? = null
9291
private var shouldTriggerResponderTransferOnScrollAndroidCache: Boolean? = null
9392
private var skipActivityIdentityAssertionOnHostPauseCache: Boolean? = null
9493
private var traceTurboModulePromiseRejectionsOnAndroidCache: Boolean? = null
@@ -744,16 +743,6 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
744743
return cached
745744
}
746745

747-
override fun shouldSetEnabledBasedOnAccessibilityState(): Boolean {
748-
var cached = shouldSetEnabledBasedOnAccessibilityStateCache
749-
if (cached == null) {
750-
cached = currentProvider.shouldSetEnabledBasedOnAccessibilityState()
751-
accessedFeatureFlags.add("shouldSetEnabledBasedOnAccessibilityState")
752-
shouldSetEnabledBasedOnAccessibilityStateCache = cached
753-
}
754-
return cached
755-
}
756-
757746
override fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean {
758747
var cached = shouldTriggerResponderTransferOnScrollAndroidCache
759748
if (cached == null) {

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<672f9916bd65231de961c3a945abf84e>>
7+
* @generated SignedSource<<2bc1b7c78ced990301722e1c1dcc2dcf>>
88
*/
99

1010
/**
@@ -151,8 +151,6 @@ public interface ReactNativeFeatureFlagsProvider {
151151

152152
@DoNotStrip public fun shouldPressibilityUseW3CPointerEventsForHover(): Boolean
153153

154-
@DoNotStrip public fun shouldSetEnabledBasedOnAccessibilityState(): Boolean
155-
156154
@DoNotStrip public fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean
157155

158156
@DoNotStrip public fun skipActivityIdentityAssertionOnHostPause(): Boolean

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import com.facebook.react.bridge.ReadableType;
3131
import com.facebook.react.common.MapBuilder;
3232
import com.facebook.react.common.ReactConstants;
33-
import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags;
3433
import com.facebook.react.uimanager.ReactAccessibilityDelegate.AccessibilityRole;
3534
import com.facebook.react.uimanager.ReactAccessibilityDelegate.Role;
3635
import com.facebook.react.uimanager.annotations.ReactProp;
@@ -391,15 +390,7 @@ public void setViewState(@NonNull T view, @Nullable ReadableMap accessibilitySta
391390
}
392391
view.setTag(R.id.accessibility_state, accessibilityState);
393392
if (accessibilityState.hasKey("disabled")) {
394-
if (ReactNativeFeatureFlags.shouldSetEnabledBasedOnAccessibilityState()) {
395-
// New behavior: properly set enabled state for both true and false
396-
view.setEnabled(!accessibilityState.getBoolean("disabled"));
397-
} else {
398-
// Old behavior: only set enabled(true) when disabled=false
399-
if (!accessibilityState.getBoolean("disabled")) {
400-
view.setEnabled(true);
401-
}
402-
}
393+
view.setEnabled(!accessibilityState.getBoolean("disabled"));
403394
}
404395

405396
// For states which don't have corresponding methods in

packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<fb3fcd12e6e8fd496d90be50f5f06c70>>
7+
* @generated SignedSource<<89d63e717ae8634f32613243bcbe2c40>>
88
*/
99

1010
/**
@@ -423,12 +423,6 @@ class ReactNativeFeatureFlagsJavaProvider
423423
return method(javaProvider_);
424424
}
425425

426-
bool shouldSetEnabledBasedOnAccessibilityState() override {
427-
static const auto method =
428-
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("shouldSetEnabledBasedOnAccessibilityState");
429-
return method(javaProvider_);
430-
}
431-
432426
bool shouldTriggerResponderTransferOnScrollAndroid() override {
433427
static const auto method =
434428
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("shouldTriggerResponderTransferOnScrollAndroid");
@@ -837,11 +831,6 @@ bool JReactNativeFeatureFlagsCxxInterop::shouldPressibilityUseW3CPointerEventsFo
837831
return ReactNativeFeatureFlags::shouldPressibilityUseW3CPointerEventsForHover();
838832
}
839833

840-
bool JReactNativeFeatureFlagsCxxInterop::shouldSetEnabledBasedOnAccessibilityState(
841-
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
842-
return ReactNativeFeatureFlags::shouldSetEnabledBasedOnAccessibilityState();
843-
}
844-
845834
bool JReactNativeFeatureFlagsCxxInterop::shouldTriggerResponderTransferOnScrollAndroid(
846835
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
847836
return ReactNativeFeatureFlags::shouldTriggerResponderTransferOnScrollAndroid();
@@ -1135,9 +1124,6 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
11351124
makeNativeMethod(
11361125
"shouldPressibilityUseW3CPointerEventsForHover",
11371126
JReactNativeFeatureFlagsCxxInterop::shouldPressibilityUseW3CPointerEventsForHover),
1138-
makeNativeMethod(
1139-
"shouldSetEnabledBasedOnAccessibilityState",
1140-
JReactNativeFeatureFlagsCxxInterop::shouldSetEnabledBasedOnAccessibilityState),
11411127
makeNativeMethod(
11421128
"shouldTriggerResponderTransferOnScrollAndroid",
11431129
JReactNativeFeatureFlagsCxxInterop::shouldTriggerResponderTransferOnScrollAndroid),

packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<3b35756e1d6e07f3ef9e3cb495022266>>
7+
* @generated SignedSource<<1cf1c6d1d2a98a495db315e0e7edcc32>>
88
*/
99

1010
/**
@@ -222,9 +222,6 @@ class JReactNativeFeatureFlagsCxxInterop
222222
static bool shouldPressibilityUseW3CPointerEventsForHover(
223223
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
224224

225-
static bool shouldSetEnabledBasedOnAccessibilityState(
226-
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
227-
228225
static bool shouldTriggerResponderTransferOnScrollAndroid(
229226
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
230227

packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<0b2eb9cd4cd22a91a645c205ac7c3845>>
7+
* @generated SignedSource<<a931a366c816b23f59896dafc9285f85>>
88
*/
99

1010
/**
@@ -282,10 +282,6 @@ bool ReactNativeFeatureFlags::shouldPressibilityUseW3CPointerEventsForHover() {
282282
return getAccessor().shouldPressibilityUseW3CPointerEventsForHover();
283283
}
284284

285-
bool ReactNativeFeatureFlags::shouldSetEnabledBasedOnAccessibilityState() {
286-
return getAccessor().shouldSetEnabledBasedOnAccessibilityState();
287-
}
288-
289285
bool ReactNativeFeatureFlags::shouldTriggerResponderTransferOnScrollAndroid() {
290286
return getAccessor().shouldTriggerResponderTransferOnScrollAndroid();
291287
}

0 commit comments

Comments
 (0)