react-native-tvos 0.85.0-0rc5 → 0.85.3-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +1 -0
- package/Libraries/Components/ScrollView/ScrollView.d.ts +7 -0
- package/Libraries/Components/ScrollView/ScrollView.js +6 -0
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +2 -0
- package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +1 -0
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +5 -1
- package/Libraries/Components/TextInput/TextInput.flow.js +1 -0
- package/Libraries/Core/ReactNativeVersion.js +2 -2
- package/Libraries/Utilities/HMRClient.js +28 -1
- package/README.md +52 -0
- package/React/Base/RCTVersion.m +2 -2
- package/React/CoreModules/RCTDevLoadingView.mm +17 -0
- package/React/CoreModules/RCTJscSafeUrl+Internal.h +23 -0
- package/React/CoreModules/RCTJscSafeUrl.mm +38 -0
- package/React/CoreModules/RCTRedBox+Internal.h +42 -0
- package/React/CoreModules/RCTRedBox.mm +30 -471
- package/React/CoreModules/RCTRedBox2AnsiParser+Internal.h +22 -0
- package/React/CoreModules/RCTRedBox2AnsiParser.mm +55 -0
- package/React/CoreModules/RCTRedBox2Controller+Internal.h +34 -0
- package/React/CoreModules/RCTRedBox2Controller.mm +764 -0
- package/React/CoreModules/RCTRedBox2ErrorParser+Internal.h +46 -0
- package/React/CoreModules/RCTRedBox2ErrorParser.mm +57 -0
- package/React/CoreModules/RCTRedBoxController+Internal.h +31 -0
- package/React/CoreModules/RCTRedBoxController.mm +447 -0
- package/React/CoreModules/RCTRedBoxHMRClient+Internal.h +26 -0
- package/React/CoreModules/RCTRedBoxHMRClient.mm +125 -0
- package/React/CoreModules/React-CoreModules.podspec +1 -0
- package/React/DevSupport/RCTFrameTimingsObserver.h +24 -0
- package/React/DevSupport/RCTFrameTimingsObserver.mm +298 -0
- package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +40 -0
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTEnhancedScrollView.h +1 -0
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTEnhancedScrollView.mm +78 -0
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +32 -6
- package/React/Views/ScrollView/RCTScrollViewManager.m +1 -0
- package/ReactAndroid/build.gradle.kts +2 -0
- package/ReactAndroid/gradle.properties +1 -1
- package/ReactAndroid/hermes-engine/build.gradle.kts +17 -0
- package/ReactAndroid/publish.gradle +20 -46
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorFlags.kt +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/FrameTimingSequence.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/FrameTimingsObserver.kt +127 -26
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +31 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +51 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +11 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +12 -2
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +56 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt +5 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +11 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/tracing/PerformanceTracer.kt +39 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt +8 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/RequestBodyUtil.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.kt +50 -10
- package/ReactAndroid/src/main/java/com/facebook/react/views/common/UiModeUtils.kt +20 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +57 -8
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.kt +5 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +48 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.kt +5 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +28 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt +5 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputSubmitEditingEvent.kt +6 -1
- package/ReactAndroid/src/main/jni/CMakeLists.txt +7 -0
- package/ReactAndroid/src/main/jni/react/devsupport/JInspectorFlags.cpp +22 -0
- package/ReactAndroid/src/main/jni/react/devsupport/JInspectorFlags.h +2 -0
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +71 -1
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +16 -1
- package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.cpp +14 -0
- package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.h +18 -4
- package/ReactCommon/React-Fabric.podspec +7 -0
- package/ReactCommon/cxxreact/ReactNativeVersion.h +3 -3
- package/ReactCommon/jsinspector-modern/HostAgent.cpp +36 -0
- package/ReactCommon/jsinspector-modern/HostTarget.cpp +7 -1
- package/ReactCommon/jsinspector-modern/HostTarget.h +25 -0
- package/ReactCommon/jsinspector-modern/HostTargetTracing.cpp +1 -1
- package/ReactCommon/jsinspector-modern/HostTargetTracing.h +4 -4
- package/ReactCommon/jsinspector-modern/InspectorFlags.cpp +12 -0
- package/ReactCommon/jsinspector-modern/InspectorFlags.h +12 -0
- package/ReactCommon/jsinspector-modern/NetworkIOAgent.cpp +1 -1
- package/ReactCommon/jsinspector-modern/RuntimeAgent.cpp +19 -0
- package/ReactCommon/jsinspector-modern/RuntimeAgent.h +7 -0
- package/ReactCommon/jsinspector-modern/RuntimeTarget.cpp +33 -0
- package/ReactCommon/jsinspector-modern/RuntimeTarget.h +6 -0
- package/ReactCommon/jsinspector-modern/tests/HostTargetTest.cpp +12 -0
- package/ReactCommon/jsinspector-modern/tests/InspectorMocks.h +3 -2
- package/ReactCommon/jsinspector-modern/tests/JsiIntegrationTest.cpp +1 -0
- package/ReactCommon/jsinspector-modern/tests/NetworkReporterTest.cpp +1 -1
- package/ReactCommon/jsinspector-modern/tests/TracingTest.cpp +1 -1
- package/ReactCommon/jsinspector-modern/tests/utils/InspectorFlagOverridesGuard.cpp +10 -0
- package/ReactCommon/jsinspector-modern/tests/utils/InspectorFlagOverridesGuard.h +3 -1
- package/ReactCommon/jsinspector-modern/tracing/CMakeLists.txt +1 -0
- package/ReactCommon/jsinspector-modern/tracing/FrameTimingSequence.h +7 -3
- package/ReactCommon/jsinspector-modern/tracing/HostTracingProfileSerializer.cpp +52 -29
- package/ReactCommon/jsinspector-modern/tracing/HostTracingProfileSerializer.h +6 -6
- package/ReactCommon/jsinspector-modern/tracing/PerformanceTracerSection.h +113 -0
- package/ReactCommon/jsinspector-modern/tracing/React-jsinspectortracing.podspec +1 -0
- package/ReactCommon/jsinspector-modern/tracing/TraceEventGenerator.cpp +12 -5
- package/ReactCommon/jsinspector-modern/tracing/TraceEventGenerator.h +3 -1
- package/ReactCommon/jsinspector-modern/tracing/TraceEventSerializer.cpp +42 -0
- package/ReactCommon/jsinspector-modern/tracing/TraceEventSerializer.h +7 -0
- package/ReactCommon/react/debug/CMakeLists.txt +2 -1
- package/ReactCommon/react/debug/React-debug.podspec +7 -1
- package/ReactCommon/react/debug/redbox/AnsiParser.cpp +139 -0
- package/ReactCommon/react/debug/redbox/AnsiParser.h +35 -0
- package/ReactCommon/react/debug/redbox/JscSafeUrl.cpp +179 -0
- package/ReactCommon/react/debug/redbox/JscSafeUrl.h +27 -0
- package/ReactCommon/react/debug/redbox/RedBoxErrorParser.cpp +171 -0
- package/ReactCommon/react/debug/redbox/RedBoxErrorParser.h +40 -0
- package/ReactCommon/react/debug/redbox/tests/AnsiParserTest.cpp +97 -0
- package/ReactCommon/react/debug/redbox/tests/JscSafeUrlTest.cpp +173 -0
- package/ReactCommon/react/debug/redbox/tests/RedBoxErrorParserTest.cpp +107 -0
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +21 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +26 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +135 -45
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +12 -2
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +22 -2
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +46 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +9 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +6 -1
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +3 -1
- package/ReactCommon/react/nativemodule/defaults/CMakeLists.txt +1 -0
- package/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.cpp +7 -0
- package/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec +1 -0
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +26 -1
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +11 -1
- package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.h +4 -0
- package/ReactCommon/react/nativemodule/mutationobserver/React-mutationobservernativemodule.podspec +66 -0
- package/ReactCommon/react/performance/timeline/PerformanceObserver.cpp +18 -6
- package/ReactCommon/react/performance/timeline/PerformanceObserver.h +2 -0
- package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +4 -1
- package/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp +58 -25
- package/ReactCommon/react/renderer/animationbackend/AnimationBackend.h +9 -0
- package/ReactCommon/react/renderer/animationbackend/AnimationChoreographer.h +5 -0
- package/ReactCommon/react/renderer/components/scrollview/BaseScrollViewProps.cpp +10 -0
- package/ReactCommon/react/renderer/components/scrollview/BaseScrollViewProps.h +1 -0
- package/ReactCommon/react/renderer/uimanager/UIManagerAnimationBackend.h +1 -0
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +115 -0
- package/ReactCommon/{jsinspector-modern → react/utils}/Base64.h +2 -2
- package/package.json +11 -11
- package/scripts/cocoapods/utils.rb +1 -0
- package/scripts/codegen/generate-artifacts-executor/generateAppDependencyProvider.js +4 -4
- package/scripts/codegen/generate-artifacts-executor/generateCustomURLHandlers.js +3 -3
- package/scripts/codegen/generate-artifacts-executor/generateNativeCode.js +2 -3
- package/scripts/codegen/generate-artifacts-executor/generatePackageSwift.js +2 -2
- package/scripts/codegen/generate-artifacts-executor/generateRCTModuleProviders.js +3 -2
- package/scripts/codegen/generate-artifacts-executor/generateRCTThirdPartyComponents.js +3 -2
- package/scripts/codegen/generate-artifacts-executor/generateReactCodegenPodspec.js +2 -2
- package/scripts/codegen/generate-artifacts-executor/generateUnstableModulesRequiringMainQueueSetupProvider.js +3 -3
- package/scripts/codegen/generate-artifacts-executor/utils.js +48 -0
- package/scripts/react_native_pods.rb +1 -0
- package/scripts/replace-rncore-version.js +72 -15
- package/src/private/featureflags/ReactNativeFeatureFlags.js +27 -2
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +6 -1
- package/src/private/setup/setUpDefaultReactNativeEnvironment.js +6 -0
- package/types/public/ReactNativeTVTypes.d.ts +8 -0
package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java
CHANGED
|
@@ -39,6 +39,7 @@ import androidx.core.view.ViewCompat.FocusDirection;
|
|
|
39
39
|
import com.facebook.common.logging.FLog;
|
|
40
40
|
import com.facebook.infer.annotation.Assertions;
|
|
41
41
|
import com.facebook.infer.annotation.Nullsafe;
|
|
42
|
+
import com.facebook.react.views.common.UiModeUtils;
|
|
42
43
|
import com.facebook.react.R;
|
|
43
44
|
import com.facebook.react.common.ReactConstants;
|
|
44
45
|
import com.facebook.react.common.build.ReactBuildConfig;
|
|
@@ -139,6 +140,8 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
|
|
|
139
140
|
private boolean mEmittedOverScrollSinceScrollBegin = false;
|
|
140
141
|
private boolean mScrollsChildToFocus = true;
|
|
141
142
|
private int mSnapToItemPadding;
|
|
143
|
+
private boolean mScrollAnimationEnabled = true;
|
|
144
|
+
private boolean mBlockScrollDelta = false;
|
|
142
145
|
|
|
143
146
|
public ReactHorizontalScrollView(Context context) {
|
|
144
147
|
this(context, null);
|
|
@@ -251,9 +254,23 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
|
|
|
251
254
|
return mScrollEnabled && super.canScrollHorizontally(direction);
|
|
252
255
|
}
|
|
253
256
|
|
|
257
|
+
@Override
|
|
258
|
+
public void computeScroll() {
|
|
259
|
+
if (UiModeUtils.isTVDevice(getContext())
|
|
260
|
+
&& !mScrollAnimationEnabled
|
|
261
|
+
&& mScroller != null
|
|
262
|
+
&& !mScroller.isFinished()) {
|
|
263
|
+
// Jump instantly to the target position instead of animating.
|
|
264
|
+
scrollTo(mScroller.getFinalX(), mScroller.getFinalY());
|
|
265
|
+
mScroller.forceFinished(true);
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
super.computeScroll();
|
|
269
|
+
}
|
|
270
|
+
|
|
254
271
|
@Override
|
|
255
272
|
protected int computeScrollDeltaToGetChildRectOnScreen(Rect rect) {
|
|
256
|
-
if (!mScrollEnabled) {
|
|
273
|
+
if (!mScrollEnabled || mBlockScrollDelta) {
|
|
257
274
|
return 0;
|
|
258
275
|
}
|
|
259
276
|
return super.computeScrollDeltaToGetChildRectOnScreen(rect);
|
|
@@ -400,6 +417,10 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
|
|
|
400
417
|
mSnapToItemPadding = snapToItemPadding;
|
|
401
418
|
}
|
|
402
419
|
|
|
420
|
+
public void setScrollAnimationEnabled(boolean scrollAnimationEnabled) {
|
|
421
|
+
mScrollAnimationEnabled = scrollAnimationEnabled;
|
|
422
|
+
}
|
|
423
|
+
|
|
403
424
|
@Override
|
|
404
425
|
protected float getLeftFadingEdgeStrength() {
|
|
405
426
|
float max = Math.max(mFadingEdgeLengthStart, mFadingEdgeLengthEnd);
|
|
@@ -623,7 +644,11 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
|
|
|
623
644
|
* unblocks such customization.
|
|
624
645
|
*/
|
|
625
646
|
protected void requestChildFocusWithoutScroll(View child, View focused) {
|
|
647
|
+
// Temporarily block HorizontalScrollView's internal scrollToChild from running
|
|
648
|
+
// during super.requestChildFocus — we've already handled scrolling in requestChildFocus.
|
|
649
|
+
mBlockScrollDelta = true;
|
|
626
650
|
super.requestChildFocus(child, focused);
|
|
651
|
+
mBlockScrollDelta = false;
|
|
627
652
|
}
|
|
628
653
|
|
|
629
654
|
@Override
|
|
@@ -839,21 +864,41 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
|
|
|
839
864
|
public boolean arrowScroll(int direction) {
|
|
840
865
|
boolean handled = false;
|
|
841
866
|
|
|
842
|
-
if (
|
|
867
|
+
if (mSnapToAlignment == SNAP_ALIGNMENT_ITEM) {
|
|
868
|
+
// When snapToAlignment is "item", find the next focusable and request focus directly.
|
|
869
|
+
// This avoids super.arrowScroll() which starts its own scroll animation that conflicts
|
|
870
|
+
// with tryScrollSnapToChild's snap scrolling.
|
|
871
|
+
// requestChildFocus → tryScrollSnapToChild handles scrolling.
|
|
872
|
+
View currentFocused = findFocus();
|
|
873
|
+
View nextFocused = FocusFinder.getInstance().findNextFocus(this, currentFocused, direction);
|
|
874
|
+
if (nextFocused != null && nextFocused != currentFocused && nextFocused != this) {
|
|
875
|
+
nextFocused.requestFocus(direction);
|
|
876
|
+
handled = true;
|
|
877
|
+
}
|
|
878
|
+
} else if (mPagingEnabled) {
|
|
843
879
|
mPagedArrowScrolling = true;
|
|
844
880
|
|
|
845
881
|
if (getChildCount() > 0) {
|
|
846
882
|
View currentFocused = findFocus();
|
|
847
883
|
View nextFocused = FocusFinder.getInstance().findNextFocus(this, currentFocused, direction);
|
|
848
884
|
View rootChild = getContentView();
|
|
849
|
-
if (isDescendantOf(rootChild, nextFocused)) {
|
|
850
|
-
if (
|
|
851
|
-
smoothScrollToNextPage(
|
|
885
|
+
if (rootChild != null && nextFocused != null && isDescendantOf(rootChild, nextFocused)) {
|
|
886
|
+
if (mSnapToAlignment == SNAP_ALIGNMENT_ITEM) {
|
|
887
|
+
// When snapToAlignment is "item", don't use smoothScrollToNextPage (which scrolls
|
|
888
|
+
// by full page width and ignores snapToItemPadding). Instead just request focus —
|
|
889
|
+
// requestChildFocus → tryScrollSnapToChild handles scrolling with correct padding.
|
|
890
|
+
nextFocused.requestFocus();
|
|
891
|
+
} else {
|
|
892
|
+
if (!isScrolledInView(nextFocused) && !isMostlyScrolledInView(nextFocused)) {
|
|
893
|
+
smoothScrollToNextPage(direction);
|
|
894
|
+
}
|
|
895
|
+
nextFocused.requestFocus();
|
|
852
896
|
}
|
|
853
|
-
nextFocused.requestFocus();
|
|
854
897
|
handled = true;
|
|
855
898
|
} else {
|
|
856
|
-
|
|
899
|
+
if (mSnapToAlignment != SNAP_ALIGNMENT_ITEM) {
|
|
900
|
+
smoothScrollToNextPage(direction);
|
|
901
|
+
}
|
|
857
902
|
handled = true;
|
|
858
903
|
}
|
|
859
904
|
}
|
|
@@ -1652,7 +1697,11 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
|
|
|
1652
1697
|
* scroll view and state. Calling raw `smoothScrollTo` doesn't update state.
|
|
1653
1698
|
*/
|
|
1654
1699
|
public void reactSmoothScrollTo(int x, int y) {
|
|
1655
|
-
|
|
1700
|
+
if (mScrollAnimationEnabled || !UiModeUtils.isTVDevice(getContext())) {
|
|
1701
|
+
ReactScrollViewHelper.smoothScrollTo(this, x, y);
|
|
1702
|
+
} else {
|
|
1703
|
+
scrollTo(x, y);
|
|
1704
|
+
}
|
|
1656
1705
|
setPendingContentOffsets(x, y);
|
|
1657
1706
|
}
|
|
1658
1707
|
|
|
@@ -169,6 +169,11 @@ constructor(private val fpsListener: FpsListener? = null) :
|
|
|
169
169
|
view.setSnapToItemPadding(px)
|
|
170
170
|
}
|
|
171
171
|
|
|
172
|
+
@ReactProp(name = "scrollAnimationEnabled", defaultBoolean = true)
|
|
173
|
+
public fun setScrollAnimationEnabled(view: ReactHorizontalScrollView, value: Boolean) {
|
|
174
|
+
view.setScrollAnimationEnabled(value)
|
|
175
|
+
}
|
|
176
|
+
|
|
172
177
|
@ReactProp(name = ReactClippingViewGroupHelper.PROP_REMOVE_CLIPPED_SUBVIEWS)
|
|
173
178
|
public fun setRemoveClippedSubviews(
|
|
174
179
|
view: ReactHorizontalScrollView,
|
|
@@ -24,6 +24,7 @@ import android.graphics.Rect;
|
|
|
24
24
|
import android.graphics.drawable.ColorDrawable;
|
|
25
25
|
import android.graphics.drawable.Drawable;
|
|
26
26
|
import android.os.Build;
|
|
27
|
+
import android.view.FocusFinder;
|
|
27
28
|
import android.view.KeyEvent;
|
|
28
29
|
import android.view.MotionEvent;
|
|
29
30
|
import android.view.View;
|
|
@@ -38,6 +39,7 @@ import androidx.core.view.ViewCompat.FocusDirection;
|
|
|
38
39
|
import com.facebook.common.logging.FLog;
|
|
39
40
|
import com.facebook.infer.annotation.Assertions;
|
|
40
41
|
import com.facebook.infer.annotation.Nullsafe;
|
|
42
|
+
import com.facebook.react.views.common.UiModeUtils;
|
|
41
43
|
import com.facebook.react.R;
|
|
42
44
|
import com.facebook.react.bridge.ReadableMap;
|
|
43
45
|
import com.facebook.react.common.ReactConstants;
|
|
@@ -136,6 +138,8 @@ public class ReactScrollView extends ScrollView
|
|
|
136
138
|
private boolean mEmittedOverScrollSinceScrollBegin;
|
|
137
139
|
private boolean mScrollsChildToFocus = true;
|
|
138
140
|
private int mSnapToItemPadding;
|
|
141
|
+
private boolean mScrollAnimationEnabled = true;
|
|
142
|
+
private boolean mBlockScrollDelta = false;
|
|
139
143
|
|
|
140
144
|
public ReactScrollView(Context context) {
|
|
141
145
|
this(context, null);
|
|
@@ -366,6 +370,10 @@ public class ReactScrollView extends ScrollView
|
|
|
366
370
|
mSnapToItemPadding = snapToItemPadding;
|
|
367
371
|
}
|
|
368
372
|
|
|
373
|
+
public void setScrollAnimationEnabled(boolean scrollAnimationEnabled) {
|
|
374
|
+
mScrollAnimationEnabled = scrollAnimationEnabled;
|
|
375
|
+
}
|
|
376
|
+
|
|
369
377
|
@Override
|
|
370
378
|
protected float getTopFadingEdgeStrength() {
|
|
371
379
|
float max = Math.max(mFadingEdgeLengthStart, mFadingEdgeLengthEnd);
|
|
@@ -544,6 +552,24 @@ public class ReactScrollView extends ScrollView
|
|
|
544
552
|
return true;
|
|
545
553
|
}
|
|
546
554
|
|
|
555
|
+
@Override
|
|
556
|
+
public boolean arrowScroll(int direction) {
|
|
557
|
+
if (mSnapToAlignment == SNAP_ALIGNMENT_ITEM) {
|
|
558
|
+
// When snapToAlignment is "item", find the next focusable and request focus directly.
|
|
559
|
+
// This avoids super.arrowScroll() which starts its own scroll animation that conflicts
|
|
560
|
+
// with tryScrollSnapToChild's snap scrolling.
|
|
561
|
+
// requestChildFocus → tryScrollSnapToChild handles scrolling.
|
|
562
|
+
View currentFocused = findFocus();
|
|
563
|
+
View nextFocused = FocusFinder.getInstance().findNextFocus(this, currentFocused, direction);
|
|
564
|
+
if (nextFocused != null && nextFocused != currentFocused && nextFocused != this) {
|
|
565
|
+
nextFocused.requestFocus(direction);
|
|
566
|
+
return true;
|
|
567
|
+
}
|
|
568
|
+
return false;
|
|
569
|
+
}
|
|
570
|
+
return super.arrowScroll(direction);
|
|
571
|
+
}
|
|
572
|
+
|
|
547
573
|
/**
|
|
548
574
|
* Since ReactScrollView handles layout changes on JS side, it does not call super.onlayout due to
|
|
549
575
|
* which mIsLayoutDirty flag in ScrollView remains true and prevents scrolling to child when
|
|
@@ -567,7 +593,9 @@ public class ReactScrollView extends ScrollView
|
|
|
567
593
|
* unblocks such customization.
|
|
568
594
|
*/
|
|
569
595
|
protected void requestChildFocusWithoutScroll(View child, View focused) {
|
|
596
|
+
mBlockScrollDelta = true;
|
|
570
597
|
super.requestChildFocus(child, focused);
|
|
598
|
+
mBlockScrollDelta = false;
|
|
571
599
|
}
|
|
572
600
|
|
|
573
601
|
@Override
|
|
@@ -619,9 +647,23 @@ public class ReactScrollView extends ScrollView
|
|
|
619
647
|
}
|
|
620
648
|
}
|
|
621
649
|
|
|
650
|
+
@Override
|
|
651
|
+
public void computeScroll() {
|
|
652
|
+
if (UiModeUtils.isTVDevice(getContext())
|
|
653
|
+
&& !mScrollAnimationEnabled
|
|
654
|
+
&& mScroller != null
|
|
655
|
+
&& !mScroller.isFinished()) {
|
|
656
|
+
// Jump instantly to the target position instead of animating.
|
|
657
|
+
scrollTo(mScroller.getFinalX(), mScroller.getFinalY());
|
|
658
|
+
mScroller.forceFinished(true);
|
|
659
|
+
return;
|
|
660
|
+
}
|
|
661
|
+
super.computeScroll();
|
|
662
|
+
}
|
|
663
|
+
|
|
622
664
|
@Override
|
|
623
665
|
protected int computeScrollDeltaToGetChildRectOnScreen(Rect rect) {
|
|
624
|
-
if (!mScrollEnabled) {
|
|
666
|
+
if (!mScrollEnabled || mBlockScrollDelta) {
|
|
625
667
|
return 0;
|
|
626
668
|
}
|
|
627
669
|
return super.computeScrollDeltaToGetChildRectOnScreen(rect);
|
|
@@ -1396,7 +1438,11 @@ public class ReactScrollView extends ScrollView
|
|
|
1396
1438
|
* scroll view and state. Calling raw `smoothScrollTo` doesn't update state.
|
|
1397
1439
|
*/
|
|
1398
1440
|
public void reactSmoothScrollTo(int x, int y) {
|
|
1399
|
-
|
|
1441
|
+
if (mScrollAnimationEnabled || !UiModeUtils.isTVDevice(getContext())) {
|
|
1442
|
+
ReactScrollViewHelper.smoothScrollTo(this, x, y);
|
|
1443
|
+
} else {
|
|
1444
|
+
scrollTo(x, y);
|
|
1445
|
+
}
|
|
1400
1446
|
setPendingContentOffsets(x, y);
|
|
1401
1447
|
}
|
|
1402
1448
|
|
package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.kt
CHANGED
|
@@ -153,6 +153,11 @@ constructor(private val fpsListener: FpsListener? = null) :
|
|
|
153
153
|
view.setSnapToItemPadding(px)
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
+
@ReactProp(name = "scrollAnimationEnabled", defaultBoolean = true)
|
|
157
|
+
public fun setScrollAnimationEnabled(view: ReactScrollView, value: Boolean) {
|
|
158
|
+
view.setScrollAnimationEnabled(value)
|
|
159
|
+
}
|
|
160
|
+
|
|
156
161
|
@ReactProp(name = ReactClippingViewGroupHelper.PROP_REMOVE_CLIPPED_SUBVIEWS)
|
|
157
162
|
public fun setRemoveClippedSubviews(view: ReactScrollView, removeClippedSubviews: Boolean) {
|
|
158
163
|
view.removeClippedSubviews = removeClippedSubviews
|
|
@@ -30,6 +30,7 @@ import androidx.appcompat.widget.TintContextWrapper;
|
|
|
30
30
|
import androidx.core.view.AccessibilityDelegateCompat;
|
|
31
31
|
import androidx.core.view.ViewCompat;
|
|
32
32
|
import androidx.customview.widget.ExploreByTouchHelper;
|
|
33
|
+
import com.facebook.react.views.common.UiModeUtils;
|
|
33
34
|
import com.facebook.common.logging.FLog;
|
|
34
35
|
import com.facebook.infer.annotation.Assertions;
|
|
35
36
|
import com.facebook.infer.annotation.Nullsafe;
|
|
@@ -153,14 +154,38 @@ public class ReactTextView extends AppCompatTextView implements ReactCompoundVie
|
|
|
153
154
|
// mViewFlags = SOUND_EFFECTS_ENABLED | HAPTIC_FEEDBACK_ENABLED |
|
|
154
155
|
// LAYOUT_DIRECTION_INHERIT;
|
|
155
156
|
setEnabled(true);
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
157
|
+
// Changed from FOCUSABLE_AUTO to NOT_FOCUSABLE to prevent Android TV's
|
|
158
|
+
// focus engine from landing on text views when no other views are available
|
|
159
|
+
setFocusable(View.NOT_FOCUSABLE);
|
|
159
160
|
|
|
160
161
|
setHyphenationFrequency(Layout.HYPHENATION_FREQUENCY_NONE);
|
|
161
162
|
updateView(); // call after changing ellipsizeLocation in particular
|
|
162
163
|
}
|
|
163
164
|
|
|
165
|
+
// On Android TV, prevent text views from becoming focusable.
|
|
166
|
+
// ReactTextAnchorViewManager.setAccessible() ties isFocusable to the
|
|
167
|
+
// "accessible" prop, which causes Android TV's D-pad focus engine to land
|
|
168
|
+
// on text views inside recycled list items (FlashList), triggering
|
|
169
|
+
// requestChildFocus -> scrollToChild scroll jumps.
|
|
170
|
+
// On non-TV devices, focusability is left unchanged for accessibility.
|
|
171
|
+
@Override
|
|
172
|
+
public void setFocusable(boolean focusable) {
|
|
173
|
+
if (UiModeUtils.isTVDevice(getContext())) {
|
|
174
|
+
super.setFocusable(false);
|
|
175
|
+
} else {
|
|
176
|
+
super.setFocusable(focusable);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
@Override
|
|
181
|
+
public void setFocusable(int focusable) {
|
|
182
|
+
if (UiModeUtils.isTVDevice(getContext())) {
|
|
183
|
+
super.setFocusable(View.NOT_FOCUSABLE);
|
|
184
|
+
} else {
|
|
185
|
+
super.setFocusable(focusable);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
164
189
|
private static WritableMap inlineViewJson(
|
|
165
190
|
int visibility, int index, int left, int top, int right, int bottom) {
|
|
166
191
|
WritableMap json = Arguments.createMap();
|
package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt
CHANGED
|
@@ -925,6 +925,11 @@ public open class ReactTextInputManager public constructor() :
|
|
|
925
925
|
reactContext.surfaceId,
|
|
926
926
|
editText.id,
|
|
927
927
|
editText.text.toString(),
|
|
928
|
+
action = when (actionId) {
|
|
929
|
+
EditorInfo.IME_ACTION_NEXT -> ReactTextInputSubmitEditingEvent.ACTION_NEXT
|
|
930
|
+
EditorInfo.IME_ACTION_PREVIOUS -> ReactTextInputSubmitEditingEvent.ACTION_PREVIOUS
|
|
931
|
+
else -> ReactTextInputSubmitEditingEvent.ACTION_SUBMIT
|
|
932
|
+
},
|
|
928
933
|
)
|
|
929
934
|
)
|
|
930
935
|
}
|
|
@@ -11,11 +11,12 @@ import com.facebook.react.bridge.Arguments
|
|
|
11
11
|
import com.facebook.react.bridge.WritableMap
|
|
12
12
|
import com.facebook.react.uimanager.events.Event
|
|
13
13
|
|
|
14
|
-
/** Event emitted by EditText native view when the user
|
|
14
|
+
/** Event emitted by EditText native view when the user triggers an IME editor action. */
|
|
15
15
|
internal class ReactTextInputSubmitEditingEvent(
|
|
16
16
|
surfaceId: Int,
|
|
17
17
|
viewId: Int,
|
|
18
18
|
private val text: String,
|
|
19
|
+
private val action: String = ACTION_SUBMIT,
|
|
19
20
|
) : Event<ReactTextInputSubmitEditingEvent>(surfaceId, viewId) {
|
|
20
21
|
override fun getEventName(): String = EVENT_NAME
|
|
21
22
|
|
|
@@ -23,6 +24,7 @@ internal class ReactTextInputSubmitEditingEvent(
|
|
|
23
24
|
return Arguments.createMap().apply {
|
|
24
25
|
putInt("target", viewTag)
|
|
25
26
|
putString("text", text)
|
|
27
|
+
putString("action", action)
|
|
26
28
|
}
|
|
27
29
|
}
|
|
28
30
|
|
|
@@ -30,5 +32,8 @@ internal class ReactTextInputSubmitEditingEvent(
|
|
|
30
32
|
|
|
31
33
|
companion object {
|
|
32
34
|
private const val EVENT_NAME = "topSubmitEditing"
|
|
35
|
+
const val ACTION_SUBMIT = "submit"
|
|
36
|
+
const val ACTION_NEXT = "next"
|
|
37
|
+
const val ACTION_PREVIOUS = "previous"
|
|
33
38
|
}
|
|
34
39
|
}
|
|
@@ -117,6 +117,7 @@ add_react_common_subdir(react/renderer/components/safeareaview)
|
|
|
117
117
|
add_react_common_subdir(react/renderer/leakchecker)
|
|
118
118
|
add_react_common_subdir(react/renderer/observers/events)
|
|
119
119
|
add_react_common_subdir(react/renderer/observers/intersection)
|
|
120
|
+
add_react_common_subdir(react/renderer/observers/mutation)
|
|
120
121
|
add_react_common_subdir(react/renderer/textlayoutmanager)
|
|
121
122
|
add_react_common_subdir(react/utils)
|
|
122
123
|
add_react_common_subdir(react/bridging)
|
|
@@ -128,6 +129,7 @@ add_react_common_subdir(react/nativemodule/featureflags)
|
|
|
128
129
|
add_react_common_subdir(react/nativemodule/microtasks)
|
|
129
130
|
add_react_common_subdir(react/nativemodule/idlecallbacks)
|
|
130
131
|
add_react_common_subdir(react/nativemodule/intersectionobserver)
|
|
132
|
+
add_react_common_subdir(react/nativemodule/mutationobserver)
|
|
131
133
|
add_react_common_subdir(react/nativemodule/webperformance)
|
|
132
134
|
add_react_common_subdir(react/networking)
|
|
133
135
|
add_react_common_subdir(jserrorhandler)
|
|
@@ -197,6 +199,7 @@ add_library(reactnative
|
|
|
197
199
|
$<TARGET_OBJECTS:react_nativemodule_idlecallbacks>
|
|
198
200
|
$<TARGET_OBJECTS:react_nativemodule_intersectionobserver>
|
|
199
201
|
$<TARGET_OBJECTS:react_nativemodule_microtasks>
|
|
202
|
+
$<TARGET_OBJECTS:react_nativemodule_mutationobserver>
|
|
200
203
|
$<TARGET_OBJECTS:react_nativemodule_webperformance>
|
|
201
204
|
$<TARGET_OBJECTS:react_networking>
|
|
202
205
|
$<TARGET_OBJECTS:react_newarchdefaults>
|
|
@@ -219,6 +222,7 @@ add_library(reactnative
|
|
|
219
222
|
$<TARGET_OBJECTS:react_renderer_mounting>
|
|
220
223
|
$<TARGET_OBJECTS:react_renderer_observers_events>
|
|
221
224
|
$<TARGET_OBJECTS:react_renderer_observers_intersection>
|
|
225
|
+
$<TARGET_OBJECTS:react_renderer_observers_mutation>
|
|
222
226
|
$<TARGET_OBJECTS:react_renderer_runtimescheduler>
|
|
223
227
|
$<TARGET_OBJECTS:react_renderer_scheduler>
|
|
224
228
|
$<TARGET_OBJECTS:react_renderer_telemetry>
|
|
@@ -292,6 +296,7 @@ target_include_directories(reactnative
|
|
|
292
296
|
$<TARGET_PROPERTY:react_nativemodule_idlecallbacks,INTERFACE_INCLUDE_DIRECTORIES>
|
|
293
297
|
$<TARGET_PROPERTY:react_nativemodule_intersectionobserver,INTERFACE_INCLUDE_DIRECTORIES>
|
|
294
298
|
$<TARGET_PROPERTY:react_nativemodule_microtasks,INTERFACE_INCLUDE_DIRECTORIES>
|
|
299
|
+
$<TARGET_PROPERTY:react_nativemodule_mutationobserver,INTERFACE_INCLUDE_DIRECTORIES>
|
|
295
300
|
$<TARGET_PROPERTY:react_nativemodule_webperformance,INTERFACE_INCLUDE_DIRECTORIES>
|
|
296
301
|
$<TARGET_PROPERTY:react_networking,INTERFACE_INCLUDE_DIRECTORIES>
|
|
297
302
|
$<TARGET_PROPERTY:react_newarchdefaults,INTERFACE_INCLUDE_DIRECTORIES>
|
|
@@ -315,6 +320,8 @@ target_include_directories(reactnative
|
|
|
315
320
|
$<TARGET_PROPERTY:react_renderer_mapbuffer,INTERFACE_INCLUDE_DIRECTORIES>
|
|
316
321
|
$<TARGET_PROPERTY:react_renderer_mounting,INTERFACE_INCLUDE_DIRECTORIES>
|
|
317
322
|
$<TARGET_PROPERTY:react_renderer_observers_events,INTERFACE_INCLUDE_DIRECTORIES>
|
|
323
|
+
$<TARGET_PROPERTY:react_renderer_observers_intersection,INTERFACE_INCLUDE_DIRECTORIES>
|
|
324
|
+
$<TARGET_PROPERTY:react_renderer_observers_mutation,INTERFACE_INCLUDE_DIRECTORIES>
|
|
318
325
|
$<TARGET_PROPERTY:react_renderer_runtimescheduler,INTERFACE_INCLUDE_DIRECTORIES>
|
|
319
326
|
$<TARGET_PROPERTY:react_renderer_scheduler,INTERFACE_INCLUDE_DIRECTORIES>
|
|
320
327
|
$<TARGET_PROPERTY:react_renderer_telemetry,INTERFACE_INCLUDE_DIRECTORIES>
|
|
@@ -11,6 +11,12 @@
|
|
|
11
11
|
|
|
12
12
|
namespace facebook::react::jsinspector_modern {
|
|
13
13
|
|
|
14
|
+
bool JInspectorFlags::getScreenshotCaptureEnabled(
|
|
15
|
+
jni::alias_ref<jclass> /*unused*/) {
|
|
16
|
+
auto& inspectorFlags = InspectorFlags::getInstance();
|
|
17
|
+
return inspectorFlags.getScreenshotCaptureEnabled();
|
|
18
|
+
}
|
|
19
|
+
|
|
14
20
|
bool JInspectorFlags::getFuseboxEnabled(jni::alias_ref<jclass> /*unused*/) {
|
|
15
21
|
auto& inspectorFlags = InspectorFlags::getInstance();
|
|
16
22
|
return inspectorFlags.getFuseboxEnabled();
|
|
@@ -21,7 +27,18 @@ bool JInspectorFlags::getIsProfilingBuild(jni::alias_ref<jclass> /*unused*/) {
|
|
|
21
27
|
return inspectorFlags.getIsProfilingBuild();
|
|
22
28
|
}
|
|
23
29
|
|
|
30
|
+
bool JInspectorFlags::getFrameRecordingEnabled(
|
|
31
|
+
jni::alias_ref<jclass> /*unused*/) {
|
|
32
|
+
auto& inspectorFlags = InspectorFlags::getInstance();
|
|
33
|
+
return inspectorFlags.getFrameRecordingEnabled();
|
|
34
|
+
}
|
|
35
|
+
|
|
24
36
|
void JInspectorFlags::registerNatives() {
|
|
37
|
+
javaClassLocal()->registerNatives({
|
|
38
|
+
makeNativeMethod(
|
|
39
|
+
"getScreenshotCaptureEnabled",
|
|
40
|
+
JInspectorFlags::getScreenshotCaptureEnabled),
|
|
41
|
+
});
|
|
25
42
|
javaClassLocal()->registerNatives({
|
|
26
43
|
makeNativeMethod("getFuseboxEnabled", JInspectorFlags::getFuseboxEnabled),
|
|
27
44
|
});
|
|
@@ -29,6 +46,11 @@ void JInspectorFlags::registerNatives() {
|
|
|
29
46
|
makeNativeMethod(
|
|
30
47
|
"getIsProfilingBuild", JInspectorFlags::getIsProfilingBuild),
|
|
31
48
|
});
|
|
49
|
+
javaClassLocal()->registerNatives({
|
|
50
|
+
makeNativeMethod(
|
|
51
|
+
"getFrameRecordingEnabled",
|
|
52
|
+
JInspectorFlags::getFrameRecordingEnabled),
|
|
53
|
+
});
|
|
32
54
|
}
|
|
33
55
|
|
|
34
56
|
} // namespace facebook::react::jsinspector_modern
|
|
@@ -18,8 +18,10 @@ class JInspectorFlags : public jni::JavaClass<JInspectorFlags> {
|
|
|
18
18
|
public:
|
|
19
19
|
static constexpr auto kJavaDescriptor = "Lcom/facebook/react/devsupport/InspectorFlags;";
|
|
20
20
|
|
|
21
|
+
static bool getScreenshotCaptureEnabled(jni::alias_ref<jclass> /*unused*/);
|
|
21
22
|
static bool getFuseboxEnabled(jni::alias_ref<jclass> /*unused*/);
|
|
22
23
|
static bool getIsProfilingBuild(jni::alias_ref<jclass> /*unused*/);
|
|
24
|
+
static bool getFrameRecordingEnabled(jni::alias_ref<jclass> /*unused*/);
|
|
23
25
|
|
|
24
26
|
static void registerNatives();
|
|
25
27
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<fbfa1db0da68d08e055002244a6847de>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -285,6 +285,12 @@ class ReactNativeFeatureFlagsJavaProvider
|
|
|
285
285
|
return method(javaProvider_);
|
|
286
286
|
}
|
|
287
287
|
|
|
288
|
+
bool enableMutationObserverByDefault() override {
|
|
289
|
+
static const auto method =
|
|
290
|
+
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableMutationObserverByDefault");
|
|
291
|
+
return method(javaProvider_);
|
|
292
|
+
}
|
|
293
|
+
|
|
288
294
|
bool enableNativeCSSParsing() override {
|
|
289
295
|
static const auto method =
|
|
290
296
|
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableNativeCSSParsing");
|
|
@@ -393,12 +399,24 @@ class ReactNativeFeatureFlagsJavaProvider
|
|
|
393
399
|
return method(javaProvider_);
|
|
394
400
|
}
|
|
395
401
|
|
|
402
|
+
bool fuseboxFrameRecordingEnabled() override {
|
|
403
|
+
static const auto method =
|
|
404
|
+
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("fuseboxFrameRecordingEnabled");
|
|
405
|
+
return method(javaProvider_);
|
|
406
|
+
}
|
|
407
|
+
|
|
396
408
|
bool fuseboxNetworkInspectionEnabled() override {
|
|
397
409
|
static const auto method =
|
|
398
410
|
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("fuseboxNetworkInspectionEnabled");
|
|
399
411
|
return method(javaProvider_);
|
|
400
412
|
}
|
|
401
413
|
|
|
414
|
+
bool fuseboxScreenshotCaptureEnabled() override {
|
|
415
|
+
static const auto method =
|
|
416
|
+
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("fuseboxScreenshotCaptureEnabled");
|
|
417
|
+
return method(javaProvider_);
|
|
418
|
+
}
|
|
419
|
+
|
|
402
420
|
bool hideOffscreenVirtualViewsOnIOS() override {
|
|
403
421
|
static const auto method =
|
|
404
422
|
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("hideOffscreenVirtualViewsOnIOS");
|
|
@@ -435,6 +453,18 @@ class ReactNativeFeatureFlagsJavaProvider
|
|
|
435
453
|
return method(javaProvider_);
|
|
436
454
|
}
|
|
437
455
|
|
|
456
|
+
bool redBoxV2Android() override {
|
|
457
|
+
static const auto method =
|
|
458
|
+
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("redBoxV2Android");
|
|
459
|
+
return method(javaProvider_);
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
bool redBoxV2IOS() override {
|
|
463
|
+
static const auto method =
|
|
464
|
+
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("redBoxV2IOS");
|
|
465
|
+
return method(javaProvider_);
|
|
466
|
+
}
|
|
467
|
+
|
|
438
468
|
bool shouldPressibilityUseW3CPointerEventsForHover() override {
|
|
439
469
|
static const auto method =
|
|
440
470
|
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("shouldPressibilityUseW3CPointerEventsForHover");
|
|
@@ -758,6 +788,11 @@ bool JReactNativeFeatureFlagsCxxInterop::enableModuleArgumentNSNullConversionIOS
|
|
|
758
788
|
return ReactNativeFeatureFlags::enableModuleArgumentNSNullConversionIOS();
|
|
759
789
|
}
|
|
760
790
|
|
|
791
|
+
bool JReactNativeFeatureFlagsCxxInterop::enableMutationObserverByDefault(
|
|
792
|
+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
|
|
793
|
+
return ReactNativeFeatureFlags::enableMutationObserverByDefault();
|
|
794
|
+
}
|
|
795
|
+
|
|
761
796
|
bool JReactNativeFeatureFlagsCxxInterop::enableNativeCSSParsing(
|
|
762
797
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
|
|
763
798
|
return ReactNativeFeatureFlags::enableNativeCSSParsing();
|
|
@@ -848,11 +883,21 @@ bool JReactNativeFeatureFlagsCxxInterop::fuseboxEnabledRelease(
|
|
|
848
883
|
return ReactNativeFeatureFlags::fuseboxEnabledRelease();
|
|
849
884
|
}
|
|
850
885
|
|
|
886
|
+
bool JReactNativeFeatureFlagsCxxInterop::fuseboxFrameRecordingEnabled(
|
|
887
|
+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
|
|
888
|
+
return ReactNativeFeatureFlags::fuseboxFrameRecordingEnabled();
|
|
889
|
+
}
|
|
890
|
+
|
|
851
891
|
bool JReactNativeFeatureFlagsCxxInterop::fuseboxNetworkInspectionEnabled(
|
|
852
892
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
|
|
853
893
|
return ReactNativeFeatureFlags::fuseboxNetworkInspectionEnabled();
|
|
854
894
|
}
|
|
855
895
|
|
|
896
|
+
bool JReactNativeFeatureFlagsCxxInterop::fuseboxScreenshotCaptureEnabled(
|
|
897
|
+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
|
|
898
|
+
return ReactNativeFeatureFlags::fuseboxScreenshotCaptureEnabled();
|
|
899
|
+
}
|
|
900
|
+
|
|
856
901
|
bool JReactNativeFeatureFlagsCxxInterop::hideOffscreenVirtualViewsOnIOS(
|
|
857
902
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
|
|
858
903
|
return ReactNativeFeatureFlags::hideOffscreenVirtualViewsOnIOS();
|
|
@@ -883,6 +928,16 @@ bool JReactNativeFeatureFlagsCxxInterop::preventShadowTreeCommitExhaustion(
|
|
|
883
928
|
return ReactNativeFeatureFlags::preventShadowTreeCommitExhaustion();
|
|
884
929
|
}
|
|
885
930
|
|
|
931
|
+
bool JReactNativeFeatureFlagsCxxInterop::redBoxV2Android(
|
|
932
|
+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
|
|
933
|
+
return ReactNativeFeatureFlags::redBoxV2Android();
|
|
934
|
+
}
|
|
935
|
+
|
|
936
|
+
bool JReactNativeFeatureFlagsCxxInterop::redBoxV2IOS(
|
|
937
|
+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
|
|
938
|
+
return ReactNativeFeatureFlags::redBoxV2IOS();
|
|
939
|
+
}
|
|
940
|
+
|
|
886
941
|
bool JReactNativeFeatureFlagsCxxInterop::shouldPressibilityUseW3CPointerEventsForHover(
|
|
887
942
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
|
|
888
943
|
return ReactNativeFeatureFlags::shouldPressibilityUseW3CPointerEventsForHover();
|
|
@@ -1132,6 +1187,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
|
|
|
1132
1187
|
makeNativeMethod(
|
|
1133
1188
|
"enableModuleArgumentNSNullConversionIOS",
|
|
1134
1189
|
JReactNativeFeatureFlagsCxxInterop::enableModuleArgumentNSNullConversionIOS),
|
|
1190
|
+
makeNativeMethod(
|
|
1191
|
+
"enableMutationObserverByDefault",
|
|
1192
|
+
JReactNativeFeatureFlagsCxxInterop::enableMutationObserverByDefault),
|
|
1135
1193
|
makeNativeMethod(
|
|
1136
1194
|
"enableNativeCSSParsing",
|
|
1137
1195
|
JReactNativeFeatureFlagsCxxInterop::enableNativeCSSParsing),
|
|
@@ -1186,9 +1244,15 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
|
|
|
1186
1244
|
makeNativeMethod(
|
|
1187
1245
|
"fuseboxEnabledRelease",
|
|
1188
1246
|
JReactNativeFeatureFlagsCxxInterop::fuseboxEnabledRelease),
|
|
1247
|
+
makeNativeMethod(
|
|
1248
|
+
"fuseboxFrameRecordingEnabled",
|
|
1249
|
+
JReactNativeFeatureFlagsCxxInterop::fuseboxFrameRecordingEnabled),
|
|
1189
1250
|
makeNativeMethod(
|
|
1190
1251
|
"fuseboxNetworkInspectionEnabled",
|
|
1191
1252
|
JReactNativeFeatureFlagsCxxInterop::fuseboxNetworkInspectionEnabled),
|
|
1253
|
+
makeNativeMethod(
|
|
1254
|
+
"fuseboxScreenshotCaptureEnabled",
|
|
1255
|
+
JReactNativeFeatureFlagsCxxInterop::fuseboxScreenshotCaptureEnabled),
|
|
1192
1256
|
makeNativeMethod(
|
|
1193
1257
|
"hideOffscreenVirtualViewsOnIOS",
|
|
1194
1258
|
JReactNativeFeatureFlagsCxxInterop::hideOffscreenVirtualViewsOnIOS),
|
|
@@ -1207,6 +1271,12 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
|
|
|
1207
1271
|
makeNativeMethod(
|
|
1208
1272
|
"preventShadowTreeCommitExhaustion",
|
|
1209
1273
|
JReactNativeFeatureFlagsCxxInterop::preventShadowTreeCommitExhaustion),
|
|
1274
|
+
makeNativeMethod(
|
|
1275
|
+
"redBoxV2Android",
|
|
1276
|
+
JReactNativeFeatureFlagsCxxInterop::redBoxV2Android),
|
|
1277
|
+
makeNativeMethod(
|
|
1278
|
+
"redBoxV2IOS",
|
|
1279
|
+
JReactNativeFeatureFlagsCxxInterop::redBoxV2IOS),
|
|
1210
1280
|
makeNativeMethod(
|
|
1211
1281
|
"shouldPressibilityUseW3CPointerEventsForHover",
|
|
1212
1282
|
JReactNativeFeatureFlagsCxxInterop::shouldPressibilityUseW3CPointerEventsForHover),
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<707465eb2a901c79a91681f2bcec1972>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -153,6 +153,9 @@ class JReactNativeFeatureFlagsCxxInterop
|
|
|
153
153
|
static bool enableModuleArgumentNSNullConversionIOS(
|
|
154
154
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
155
155
|
|
|
156
|
+
static bool enableMutationObserverByDefault(
|
|
157
|
+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
158
|
+
|
|
156
159
|
static bool enableNativeCSSParsing(
|
|
157
160
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
158
161
|
|
|
@@ -207,9 +210,15 @@ class JReactNativeFeatureFlagsCxxInterop
|
|
|
207
210
|
static bool fuseboxEnabledRelease(
|
|
208
211
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
209
212
|
|
|
213
|
+
static bool fuseboxFrameRecordingEnabled(
|
|
214
|
+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
215
|
+
|
|
210
216
|
static bool fuseboxNetworkInspectionEnabled(
|
|
211
217
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
212
218
|
|
|
219
|
+
static bool fuseboxScreenshotCaptureEnabled(
|
|
220
|
+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
221
|
+
|
|
213
222
|
static bool hideOffscreenVirtualViewsOnIOS(
|
|
214
223
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
215
224
|
|
|
@@ -228,6 +237,12 @@ class JReactNativeFeatureFlagsCxxInterop
|
|
|
228
237
|
static bool preventShadowTreeCommitExhaustion(
|
|
229
238
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
230
239
|
|
|
240
|
+
static bool redBoxV2Android(
|
|
241
|
+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
242
|
+
|
|
243
|
+
static bool redBoxV2IOS(
|
|
244
|
+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
245
|
+
|
|
231
246
|
static bool shouldPressibilityUseW3CPointerEventsForHover(
|
|
232
247
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
233
248
|
|