react-native 0.84.0-nightly-20251114-dd6805dec → 0.84.0-nightly-20251116-d52b9d2f8
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/Core/ReactNativeVersion.js +1 -1
- package/React/Base/RCTBundleManager.h +2 -2
- package/React/Base/RCTBundleManager.m +14 -1
- package/React/Base/RCTVersion.m +1 -1
- package/React/CoreModules/RCTDevSettings.h +36 -1
- package/React/CoreModules/RCTDevSettings.mm +45 -9
- package/React/DevSupport/RCTPackagerConnection.h +4 -2
- package/React/DevSupport/RCTPackagerConnection.mm +30 -33
- package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +8 -0
- package/ReactAndroid/api/ReactAndroid.api +1 -0
- package/ReactAndroid/gradle.properties +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +7 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +11 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +12 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +84 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageView.kt +12 -9
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +15 -1
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +4 -1
- package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
- package/ReactCommon/jsi/jsi/jsi.h +6 -0
- package/ReactCommon/jsinspector-modern/tracing/TracingCategory.h +10 -5
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +5 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +6 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +93 -75
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +4 -2
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +5 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +10 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +2 -1
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.h +0 -1
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +6 -1
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +3 -1
- package/ReactCommon/react/renderer/components/image/ImageProps.cpp +2 -2
- package/ReactCommon/react/renderer/components/image/ImageProps.h +2 -2
- package/ReactCommon/react/renderer/components/image/ImageShadowNode.cpp +9 -2
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageRequestParams.h +9 -4
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/conversions.h +8 -4
- package/package.json +9 -9
- package/sdks/hermes-engine/version.properties +1 -1
- package/src/private/featureflags/ReactNativeFeatureFlags.js +6 -1
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +2 -1
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboCxxModule.cpp +0 -212
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboCxxModule.h +0 -40
|
@@ -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<<fb735bdc4e4085fd415f21894340dd75>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -46,6 +46,7 @@ class ReactNativeFeatureFlagsAccessor {
|
|
|
46
46
|
bool disableViewPreallocationAndroid();
|
|
47
47
|
bool enableAccessibilityOrder();
|
|
48
48
|
bool enableAccumulatedUpdatesInRawPropsAndroid();
|
|
49
|
+
bool enableAndroidAntialiasedBorderRadiusClipping();
|
|
49
50
|
bool enableAndroidLinearText();
|
|
50
51
|
bool enableAndroidTextMeasurementOptimizations();
|
|
51
52
|
bool enableBridgelessArchitecture();
|
|
@@ -131,7 +132,7 @@ class ReactNativeFeatureFlagsAccessor {
|
|
|
131
132
|
std::unique_ptr<ReactNativeFeatureFlagsProvider> currentProvider_;
|
|
132
133
|
bool wasOverridden_;
|
|
133
134
|
|
|
134
|
-
std::array<std::atomic<const char*>,
|
|
135
|
+
std::array<std::atomic<const char*>, 89> accessedFeatureFlags_;
|
|
135
136
|
|
|
136
137
|
std::atomic<std::optional<bool>> commonTestFlag_;
|
|
137
138
|
std::atomic<std::optional<bool>> cdpInteractionMetricsEnabled_;
|
|
@@ -147,6 +148,7 @@ class ReactNativeFeatureFlagsAccessor {
|
|
|
147
148
|
std::atomic<std::optional<bool>> disableViewPreallocationAndroid_;
|
|
148
149
|
std::atomic<std::optional<bool>> enableAccessibilityOrder_;
|
|
149
150
|
std::atomic<std::optional<bool>> enableAccumulatedUpdatesInRawPropsAndroid_;
|
|
151
|
+
std::atomic<std::optional<bool>> enableAndroidAntialiasedBorderRadiusClipping_;
|
|
150
152
|
std::atomic<std::optional<bool>> enableAndroidLinearText_;
|
|
151
153
|
std::atomic<std::optional<bool>> enableAndroidTextMeasurementOptimizations_;
|
|
152
154
|
std::atomic<std::optional<bool>> enableBridgelessArchitecture_;
|
|
@@ -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<<e5affd56757a5b815ac0a16305d1a82d>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -83,6 +83,10 @@ class ReactNativeFeatureFlagsDefaults : public ReactNativeFeatureFlagsProvider {
|
|
|
83
83
|
return false;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
+
bool enableAndroidAntialiasedBorderRadiusClipping() override {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
|
|
86
90
|
bool enableAndroidLinearText() override {
|
|
87
91
|
return false;
|
|
88
92
|
}
|
|
@@ -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<<c345dba878d470a42fcff41aac490083>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -171,6 +171,15 @@ class ReactNativeFeatureFlagsDynamicProvider : public ReactNativeFeatureFlagsDef
|
|
|
171
171
|
return ReactNativeFeatureFlagsDefaults::enableAccumulatedUpdatesInRawPropsAndroid();
|
|
172
172
|
}
|
|
173
173
|
|
|
174
|
+
bool enableAndroidAntialiasedBorderRadiusClipping() override {
|
|
175
|
+
auto value = values_["enableAndroidAntialiasedBorderRadiusClipping"];
|
|
176
|
+
if (!value.isNull()) {
|
|
177
|
+
return value.getBool();
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
return ReactNativeFeatureFlagsDefaults::enableAndroidAntialiasedBorderRadiusClipping();
|
|
181
|
+
}
|
|
182
|
+
|
|
174
183
|
bool enableAndroidLinearText() override {
|
|
175
184
|
auto value = values_["enableAndroidLinearText"];
|
|
176
185
|
if (!value.isNull()) {
|
|
@@ -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<<3e8df9a7ff492fee6b5755c1691e150c>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -39,6 +39,7 @@ class ReactNativeFeatureFlagsProvider {
|
|
|
39
39
|
virtual bool disableViewPreallocationAndroid() = 0;
|
|
40
40
|
virtual bool enableAccessibilityOrder() = 0;
|
|
41
41
|
virtual bool enableAccumulatedUpdatesInRawPropsAndroid() = 0;
|
|
42
|
+
virtual bool enableAndroidAntialiasedBorderRadiusClipping() = 0;
|
|
42
43
|
virtual bool enableAndroidLinearText() = 0;
|
|
43
44
|
virtual bool enableAndroidTextMeasurementOptimizations() = 0;
|
|
44
45
|
virtual bool enableBridgelessArchitecture() = 0;
|
|
@@ -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<<0cdf0b920d8c8a083781028ff0490bf3>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -114,6 +114,11 @@ bool NativeReactNativeFeatureFlags::enableAccumulatedUpdatesInRawPropsAndroid(
|
|
|
114
114
|
return ReactNativeFeatureFlags::enableAccumulatedUpdatesInRawPropsAndroid();
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
+
bool NativeReactNativeFeatureFlags::enableAndroidAntialiasedBorderRadiusClipping(
|
|
118
|
+
jsi::Runtime& /*runtime*/) {
|
|
119
|
+
return ReactNativeFeatureFlags::enableAndroidAntialiasedBorderRadiusClipping();
|
|
120
|
+
}
|
|
121
|
+
|
|
117
122
|
bool NativeReactNativeFeatureFlags::enableAndroidLinearText(
|
|
118
123
|
jsi::Runtime& /*runtime*/) {
|
|
119
124
|
return ReactNativeFeatureFlags::enableAndroidLinearText();
|
|
@@ -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<<dc1786ebed10af9cf4343d88b6336960>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -64,6 +64,8 @@ class NativeReactNativeFeatureFlags
|
|
|
64
64
|
|
|
65
65
|
bool enableAccumulatedUpdatesInRawPropsAndroid(jsi::Runtime& runtime);
|
|
66
66
|
|
|
67
|
+
bool enableAndroidAntialiasedBorderRadiusClipping(jsi::Runtime& runtime);
|
|
68
|
+
|
|
67
69
|
bool enableAndroidLinearText(jsi::Runtime& runtime);
|
|
68
70
|
|
|
69
71
|
bool enableAndroidTextMeasurementOptimizations(jsi::Runtime& runtime);
|
|
@@ -98,7 +98,7 @@ ImageProps::ImageProps(
|
|
|
98
98
|
rawProps,
|
|
99
99
|
"resizeMethod",
|
|
100
100
|
sourceProps.resizeMethod,
|
|
101
|
-
{})),
|
|
101
|
+
{"auto"})),
|
|
102
102
|
resizeMultiplier(
|
|
103
103
|
ReactNativeFeatureFlags::enableCppPropsIteratorSetter()
|
|
104
104
|
? sourceProps.resizeMultiplier
|
|
@@ -107,7 +107,7 @@ ImageProps::ImageProps(
|
|
|
107
107
|
rawProps,
|
|
108
108
|
"resizeMultiplier",
|
|
109
109
|
sourceProps.resizeMultiplier,
|
|
110
|
-
|
|
110
|
+
1)),
|
|
111
111
|
shouldNotifyLoadEvents(
|
|
112
112
|
ReactNativeFeatureFlags::enableCppPropsIteratorSetter()
|
|
113
113
|
? sourceProps.shouldNotifyLoadEvents
|
|
@@ -33,8 +33,8 @@ class ImageProps final : public ViewProps {
|
|
|
33
33
|
EdgeInsets capInsets{};
|
|
34
34
|
SharedColor tintColor{};
|
|
35
35
|
std::string internal_analyticTag{};
|
|
36
|
-
std::string resizeMethod{};
|
|
37
|
-
Float resizeMultiplier{};
|
|
36
|
+
std::string resizeMethod{"auto"};
|
|
37
|
+
Float resizeMultiplier{1.f};
|
|
38
38
|
bool shouldNotifyLoadEvents{};
|
|
39
39
|
SharedColor overlayColor{};
|
|
40
40
|
Float fadeDuration{};
|
|
@@ -65,7 +65,12 @@ void ImageShadowNode::updateStateIfNeeded() {
|
|
|
65
65
|
imageProps.fadeDuration,
|
|
66
66
|
imageProps.progressiveRenderingEnabled,
|
|
67
67
|
imageProps.loadingIndicatorSource,
|
|
68
|
-
imageProps.internal_analyticTag
|
|
68
|
+
imageProps.internal_analyticTag,
|
|
69
|
+
Size{
|
|
70
|
+
.width =
|
|
71
|
+
layoutMetrics_.frame.size.width * layoutMetrics_.pointScaleFactor,
|
|
72
|
+
.height = layoutMetrics_.frame.size.height *
|
|
73
|
+
layoutMetrics_.pointScaleFactor}
|
|
69
74
|
#endif
|
|
70
75
|
);
|
|
71
76
|
|
|
@@ -85,7 +90,9 @@ void ImageShadowNode::updateStateIfNeeded() {
|
|
|
85
90
|
(uri.starts_with("content://") || uri.starts_with("file://")));
|
|
86
91
|
// If we would resize but have no dimensions, skip creating the request
|
|
87
92
|
if (shouldResize &&
|
|
88
|
-
(newImageSource.size.width == 0 || newImageSource.size.height == 0
|
|
93
|
+
(newImageSource.size.width == 0 || newImageSource.size.height == 0 ||
|
|
94
|
+
layoutMetrics_.frame.size.width == 0 ||
|
|
95
|
+
layoutMetrics_.frame.size.height == 0)) {
|
|
89
96
|
// Keep the old state - don't create a new image request
|
|
90
97
|
return;
|
|
91
98
|
}
|
|
@@ -30,7 +30,8 @@ class ImageRequestParams {
|
|
|
30
30
|
Float fadeDuration,
|
|
31
31
|
bool progressiveRenderingEnabled,
|
|
32
32
|
ImageSource loadingIndicatorSource,
|
|
33
|
-
std::string analyticTag
|
|
33
|
+
std::string analyticTag,
|
|
34
|
+
Size size)
|
|
34
35
|
: blurRadius(blurRadius),
|
|
35
36
|
defaultSource(std::move(defaultSource)),
|
|
36
37
|
resizeMode(resizeMode),
|
|
@@ -42,7 +43,8 @@ class ImageRequestParams {
|
|
|
42
43
|
fadeDuration(fadeDuration),
|
|
43
44
|
progressiveRenderingEnabled(progressiveRenderingEnabled),
|
|
44
45
|
loadingIndicatorSource(std::move(loadingIndicatorSource)),
|
|
45
|
-
analyticTag(std::move(analyticTag))
|
|
46
|
+
analyticTag(std::move(analyticTag)),
|
|
47
|
+
size(size)
|
|
46
48
|
{
|
|
47
49
|
}
|
|
48
50
|
|
|
@@ -58,6 +60,7 @@ class ImageRequestParams {
|
|
|
58
60
|
bool progressiveRenderingEnabled{};
|
|
59
61
|
ImageSource loadingIndicatorSource{};
|
|
60
62
|
std::string analyticTag{};
|
|
63
|
+
Size size{};
|
|
61
64
|
|
|
62
65
|
bool operator==(const ImageRequestParams &rhs) const
|
|
63
66
|
{
|
|
@@ -73,7 +76,8 @@ class ImageRequestParams {
|
|
|
73
76
|
this->fadeDuration,
|
|
74
77
|
this->progressiveRenderingEnabled,
|
|
75
78
|
this->loadingIndicatorSource,
|
|
76
|
-
this->analyticTag
|
|
79
|
+
this->analyticTag,
|
|
80
|
+
this->size) ==
|
|
77
81
|
std::tie(
|
|
78
82
|
rhs.blurRadius,
|
|
79
83
|
rhs.defaultSource,
|
|
@@ -86,7 +90,8 @@ class ImageRequestParams {
|
|
|
86
90
|
rhs.fadeDuration,
|
|
87
91
|
rhs.progressiveRenderingEnabled,
|
|
88
92
|
rhs.loadingIndicatorSource,
|
|
89
|
-
rhs.analyticTag
|
|
93
|
+
rhs.analyticTag,
|
|
94
|
+
rhs.size);
|
|
90
95
|
}
|
|
91
96
|
|
|
92
97
|
bool operator!=(const ImageRequestParams &rhs) const
|
|
@@ -24,8 +24,8 @@ constexpr MapBuffer::Key IS_KEY_DEFAULT_SRC = 1;
|
|
|
24
24
|
constexpr MapBuffer::Key IS_KEY_RESIZE_MODE = 2;
|
|
25
25
|
constexpr MapBuffer::Key IS_KEY_RESIZE_METHOD = 3;
|
|
26
26
|
constexpr MapBuffer::Key IS_KEY_BLUR_RADIUS = 4;
|
|
27
|
-
constexpr MapBuffer::Key
|
|
28
|
-
constexpr MapBuffer::Key
|
|
27
|
+
constexpr MapBuffer::Key IS_KEY_IMAGE_WIDTH = 5;
|
|
28
|
+
constexpr MapBuffer::Key IS_KEY_IMAGE_HEIGHT = 6;
|
|
29
29
|
constexpr MapBuffer::Key IS_KEY_RESIZE_MULTIPLIER = 7;
|
|
30
30
|
constexpr MapBuffer::Key IS_KEY_SHOULD_NOTIFY_LOAD_EVENTS = 8;
|
|
31
31
|
constexpr MapBuffer::Key IS_KEY_OVERLAY_COLOR = 9;
|
|
@@ -35,16 +35,20 @@ constexpr MapBuffer::Key IS_KEY_PROGRESSIVE_RENDERING_ENABLED = 12;
|
|
|
35
35
|
constexpr MapBuffer::Key IS_KEY_LOADING_INDICATOR_SRC = 13;
|
|
36
36
|
constexpr MapBuffer::Key IS_KEY_ANALYTIC_TAG = 14;
|
|
37
37
|
constexpr MapBuffer::Key IS_KEY_TAG = 15;
|
|
38
|
+
constexpr MapBuffer::Key IS_KEY_VIEW_WIDTH = 16;
|
|
39
|
+
constexpr MapBuffer::Key IS_KEY_VIEW_HEIGHT = 17;
|
|
38
40
|
|
|
39
41
|
inline void serializeImageSource(MapBufferBuilder &builder, const ImageSource &imageSource)
|
|
40
42
|
{
|
|
41
43
|
builder.putString(IS_KEY_URI, imageSource.uri);
|
|
42
|
-
builder.putInt(
|
|
43
|
-
builder.putInt(
|
|
44
|
+
builder.putInt(IS_KEY_IMAGE_WIDTH, static_cast<int32_t>(imageSource.size.width));
|
|
45
|
+
builder.putInt(IS_KEY_IMAGE_HEIGHT, static_cast<int32_t>(imageSource.size.height));
|
|
44
46
|
}
|
|
45
47
|
|
|
46
48
|
inline void serializeImageRequestParams(MapBufferBuilder &builder, const ImageRequestParams &imageRequestParams)
|
|
47
49
|
{
|
|
50
|
+
builder.putInt(IS_KEY_VIEW_WIDTH, static_cast<int32_t>(imageRequestParams.size.width));
|
|
51
|
+
builder.putInt(IS_KEY_VIEW_HEIGHT, static_cast<int32_t>(imageRequestParams.size.height));
|
|
48
52
|
builder.putString(IS_KEY_DEFAULT_SRC, imageRequestParams.defaultSource.uri);
|
|
49
53
|
builder.putInt(IS_KEY_RESIZE_MODE, to_underlying(imageRequestParams.resizeMode));
|
|
50
54
|
builder.putString(IS_KEY_RESIZE_METHOD, imageRequestParams.resizeMethod);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native",
|
|
3
|
-
"version": "0.84.0-nightly-
|
|
3
|
+
"version": "0.84.0-nightly-20251116-d52b9d2f8",
|
|
4
4
|
"description": "A framework for building native apps using React",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -160,13 +160,13 @@
|
|
|
160
160
|
},
|
|
161
161
|
"dependencies": {
|
|
162
162
|
"@jest/create-cache-key-function": "^29.7.0",
|
|
163
|
-
"@react-native/assets-registry": "0.84.0-nightly-
|
|
164
|
-
"@react-native/codegen": "0.84.0-nightly-
|
|
165
|
-
"@react-native/community-cli-plugin": "0.84.0-nightly-
|
|
166
|
-
"@react-native/gradle-plugin": "0.84.0-nightly-
|
|
167
|
-
"@react-native/js-polyfills": "0.84.0-nightly-
|
|
168
|
-
"@react-native/normalize-colors": "0.84.0-nightly-
|
|
169
|
-
"@react-native/virtualized-lists": "0.84.0-nightly-
|
|
163
|
+
"@react-native/assets-registry": "0.84.0-nightly-20251116-d52b9d2f8",
|
|
164
|
+
"@react-native/codegen": "0.84.0-nightly-20251116-d52b9d2f8",
|
|
165
|
+
"@react-native/community-cli-plugin": "0.84.0-nightly-20251116-d52b9d2f8",
|
|
166
|
+
"@react-native/gradle-plugin": "0.84.0-nightly-20251116-d52b9d2f8",
|
|
167
|
+
"@react-native/js-polyfills": "0.84.0-nightly-20251116-d52b9d2f8",
|
|
168
|
+
"@react-native/normalize-colors": "0.84.0-nightly-20251116-d52b9d2f8",
|
|
169
|
+
"@react-native/virtualized-lists": "0.84.0-nightly-20251116-d52b9d2f8",
|
|
170
170
|
"abort-controller": "^3.0.0",
|
|
171
171
|
"anser": "^1.4.9",
|
|
172
172
|
"ansi-regex": "^5.0.0",
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
"commander": "^12.0.0",
|
|
177
177
|
"flow-enums-runtime": "^0.0.6",
|
|
178
178
|
"glob": "^7.1.1",
|
|
179
|
-
"hermes-compiler": "0.14.0-commitly-
|
|
179
|
+
"hermes-compiler": "0.14.0-commitly-202511160156-8b7dd3e16",
|
|
180
180
|
"invariant": "^2.2.4",
|
|
181
181
|
"jest-environment-node": "^29.7.0",
|
|
182
182
|
"memoize-one": "^5.0.0",
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
HERMES_VERSION_NAME=0.14.0-commitly-
|
|
1
|
+
HERMES_VERSION_NAME=0.14.0-commitly-202511160156-8b7dd3e16
|
|
2
2
|
HERMES_V1_VERSION_NAME=250829098.0.3
|
|
@@ -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<<d9337b8c6a6d759ce9bd2ff95f2ba2e2>>
|
|
8
8
|
* @flow strict
|
|
9
9
|
* @noformat
|
|
10
10
|
*/
|
|
@@ -65,6 +65,7 @@ export type ReactNativeFeatureFlags = $ReadOnly<{
|
|
|
65
65
|
disableViewPreallocationAndroid: Getter<boolean>,
|
|
66
66
|
enableAccessibilityOrder: Getter<boolean>,
|
|
67
67
|
enableAccumulatedUpdatesInRawPropsAndroid: Getter<boolean>,
|
|
68
|
+
enableAndroidAntialiasedBorderRadiusClipping: Getter<boolean>,
|
|
68
69
|
enableAndroidLinearText: Getter<boolean>,
|
|
69
70
|
enableAndroidTextMeasurementOptimizations: Getter<boolean>,
|
|
70
71
|
enableBridgelessArchitecture: Getter<boolean>,
|
|
@@ -281,6 +282,10 @@ export const enableAccessibilityOrder: Getter<boolean> = createNativeFlagGetter(
|
|
|
281
282
|
* When enabled, Android will accumulate updates in rawProps to reduce the number of mounting instructions for cascading re-renders.
|
|
282
283
|
*/
|
|
283
284
|
export const enableAccumulatedUpdatesInRawPropsAndroid: Getter<boolean> = createNativeFlagGetter('enableAccumulatedUpdatesInRawPropsAndroid', false);
|
|
285
|
+
/**
|
|
286
|
+
* Enable antialiased border radius clipping for Android API 28 and below using manual masking with Porter-Duff compositing
|
|
287
|
+
*/
|
|
288
|
+
export const enableAndroidAntialiasedBorderRadiusClipping: Getter<boolean> = createNativeFlagGetter('enableAndroidAntialiasedBorderRadiusClipping', false);
|
|
284
289
|
/**
|
|
285
290
|
* Enables linear text rendering on Android wherever subpixel text rendering is enabled
|
|
286
291
|
*/
|
|
@@ -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<<0de9df853ee6af976b4e15f55e6b9b26>>
|
|
8
8
|
* @flow strict
|
|
9
9
|
* @noformat
|
|
10
10
|
*/
|
|
@@ -39,6 +39,7 @@ export interface Spec extends TurboModule {
|
|
|
39
39
|
+disableViewPreallocationAndroid?: () => boolean;
|
|
40
40
|
+enableAccessibilityOrder?: () => boolean;
|
|
41
41
|
+enableAccumulatedUpdatesInRawPropsAndroid?: () => boolean;
|
|
42
|
+
+enableAndroidAntialiasedBorderRadiusClipping?: () => boolean;
|
|
42
43
|
+enableAndroidLinearText?: () => boolean;
|
|
43
44
|
+enableAndroidTextMeasurementOptimizations?: () => boolean;
|
|
44
45
|
+enableBridgelessArchitecture?: () => boolean;
|
|
@@ -1,212 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
#include "TurboCxxModule.h"
|
|
9
|
-
|
|
10
|
-
#include <vector>
|
|
11
|
-
|
|
12
|
-
#include <ReactCommon/TurboModuleUtils.h>
|
|
13
|
-
#include <glog/logging.h>
|
|
14
|
-
#include <jsi/JSIDynamic.h>
|
|
15
|
-
|
|
16
|
-
using namespace facebook;
|
|
17
|
-
using namespace facebook::xplat::module;
|
|
18
|
-
|
|
19
|
-
namespace facebook::react {
|
|
20
|
-
|
|
21
|
-
namespace {
|
|
22
|
-
CxxModule::Callback makeTurboCxxModuleCallback(
|
|
23
|
-
std::weak_ptr<CallbackWrapper> weakWrapper) {
|
|
24
|
-
return [weakWrapper, wrapperWasCalled = false](
|
|
25
|
-
const std::vector<folly::dynamic>& args) mutable {
|
|
26
|
-
if (wrapperWasCalled) {
|
|
27
|
-
LOG(FATAL) << "callback arg cannot be called more than once";
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
auto strongWrapper = weakWrapper.lock();
|
|
31
|
-
if (!strongWrapper) {
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
strongWrapper->jsInvoker().invokeAsync(
|
|
36
|
-
[weakWrapper, args](jsi::Runtime& rt) {
|
|
37
|
-
auto strongWrapper2 = weakWrapper.lock();
|
|
38
|
-
if (!strongWrapper2) {
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
std::vector<jsi::Value> innerArgs;
|
|
43
|
-
innerArgs.reserve(args.size());
|
|
44
|
-
for (auto& a : args) {
|
|
45
|
-
innerArgs.push_back(jsi::valueFromDynamic(rt, a));
|
|
46
|
-
}
|
|
47
|
-
strongWrapper2->callback().call(
|
|
48
|
-
rt, (const jsi::Value*)innerArgs.data(), innerArgs.size());
|
|
49
|
-
|
|
50
|
-
strongWrapper2->destroy();
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
wrapperWasCalled = true;
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
} // namespace
|
|
57
|
-
|
|
58
|
-
TurboCxxModule::TurboCxxModule(
|
|
59
|
-
std::unique_ptr<CxxModule> cxxModule,
|
|
60
|
-
std::shared_ptr<CallInvoker> jsInvoker)
|
|
61
|
-
: TurboModule(cxxModule->getName(), std::move(jsInvoker)),
|
|
62
|
-
cxxMethods_(cxxModule->getMethods()),
|
|
63
|
-
cxxModule_(std::move(cxxModule)) {}
|
|
64
|
-
|
|
65
|
-
jsi::Value TurboCxxModule::create(
|
|
66
|
-
jsi::Runtime& runtime,
|
|
67
|
-
const jsi::PropNameID& propName) {
|
|
68
|
-
std::string propNameUtf8 = propName.utf8(runtime);
|
|
69
|
-
|
|
70
|
-
if (propNameUtf8 == "getConstants") {
|
|
71
|
-
// This is special cased because `getConstants()` is already a part of
|
|
72
|
-
// CxxModule.
|
|
73
|
-
return jsi::Function::createFromHostFunction(
|
|
74
|
-
runtime,
|
|
75
|
-
propName,
|
|
76
|
-
0,
|
|
77
|
-
[this](
|
|
78
|
-
jsi::Runtime& rt,
|
|
79
|
-
const jsi::Value& /*thisVal*/,
|
|
80
|
-
const jsi::Value* /*args*/,
|
|
81
|
-
size_t /*count*/) {
|
|
82
|
-
jsi::Object result(rt);
|
|
83
|
-
auto constants = cxxModule_->getConstants();
|
|
84
|
-
for (auto& pair : constants) {
|
|
85
|
-
result.setProperty(
|
|
86
|
-
rt, pair.first.c_str(), jsi::valueFromDynamic(rt, pair.second));
|
|
87
|
-
}
|
|
88
|
-
return result;
|
|
89
|
-
});
|
|
90
|
-
} else {
|
|
91
|
-
for (auto& method : cxxMethods_) {
|
|
92
|
-
if (method.name == propNameUtf8) {
|
|
93
|
-
return jsi::Function::createFromHostFunction(
|
|
94
|
-
runtime,
|
|
95
|
-
propName,
|
|
96
|
-
0,
|
|
97
|
-
[this, propNameUtf8](
|
|
98
|
-
jsi::Runtime& rt,
|
|
99
|
-
const jsi::Value& /*thisVal*/,
|
|
100
|
-
const jsi::Value* args,
|
|
101
|
-
size_t count) {
|
|
102
|
-
return invokeMethod(rt, propNameUtf8, args, count);
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
return jsi::Value::undefined();
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
std::vector<jsi::PropNameID> TurboCxxModule::getPropertyNames(
|
|
112
|
-
jsi::Runtime& runtime) {
|
|
113
|
-
std::vector<jsi::PropNameID> result;
|
|
114
|
-
result.reserve(cxxMethods_.size() + 1);
|
|
115
|
-
result.push_back(jsi::PropNameID::forUtf8(runtime, "getConstants"));
|
|
116
|
-
for (auto& cxxMethod : cxxMethods_) {
|
|
117
|
-
result.push_back(jsi::PropNameID::forUtf8(runtime, cxxMethod.name));
|
|
118
|
-
}
|
|
119
|
-
return result;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
jsi::Value TurboCxxModule::invokeMethod(
|
|
123
|
-
jsi::Runtime& runtime,
|
|
124
|
-
const std::string& methodName,
|
|
125
|
-
const jsi::Value* args,
|
|
126
|
-
size_t count) {
|
|
127
|
-
auto it = cxxMethods_.begin();
|
|
128
|
-
for (; it != cxxMethods_.end(); it++) {
|
|
129
|
-
auto method = *it;
|
|
130
|
-
if (method.name == methodName) {
|
|
131
|
-
break;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
if (it == cxxMethods_.end()) {
|
|
136
|
-
throw std::runtime_error(
|
|
137
|
-
"Function '" + methodName + "' cannot be found on cxxmodule: " + name_);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
auto method = *it;
|
|
141
|
-
|
|
142
|
-
if (method.syncFunc) {
|
|
143
|
-
auto innerArgs = folly::dynamic::array();
|
|
144
|
-
for (size_t i = 0; i < count; i++) {
|
|
145
|
-
innerArgs.push_back(jsi::dynamicFromValue(runtime, args[i]));
|
|
146
|
-
}
|
|
147
|
-
return jsi::valueFromDynamic(
|
|
148
|
-
runtime, method.syncFunc(std::move(innerArgs)));
|
|
149
|
-
} else if (method.func && !method.isPromise) {
|
|
150
|
-
// Async method.
|
|
151
|
-
CxxModule::Callback first;
|
|
152
|
-
CxxModule::Callback second;
|
|
153
|
-
|
|
154
|
-
if (count < method.callbacks) {
|
|
155
|
-
throw std::invalid_argument(
|
|
156
|
-
"Expected " + std::to_string(method.callbacks) +
|
|
157
|
-
" callbacks, but only " + std::to_string(count) +
|
|
158
|
-
" parameters provided");
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
if (method.callbacks == 1) {
|
|
162
|
-
auto wrapper = CallbackWrapper::createWeak(
|
|
163
|
-
args[count - 1].getObject(runtime).getFunction(runtime),
|
|
164
|
-
runtime,
|
|
165
|
-
jsInvoker_);
|
|
166
|
-
first = makeTurboCxxModuleCallback(wrapper);
|
|
167
|
-
} else if (method.callbacks == 2) {
|
|
168
|
-
auto wrapper1 = CallbackWrapper::createWeak(
|
|
169
|
-
args[count - 2].getObject(runtime).getFunction(runtime),
|
|
170
|
-
runtime,
|
|
171
|
-
jsInvoker_);
|
|
172
|
-
auto wrapper2 = CallbackWrapper::createWeak(
|
|
173
|
-
args[count - 1].getObject(runtime).getFunction(runtime),
|
|
174
|
-
runtime,
|
|
175
|
-
jsInvoker_);
|
|
176
|
-
first = makeTurboCxxModuleCallback(wrapper1);
|
|
177
|
-
second = makeTurboCxxModuleCallback(wrapper2);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
auto innerArgs = folly::dynamic::array();
|
|
181
|
-
for (size_t i = 0; i < count - method.callbacks; i++) {
|
|
182
|
-
innerArgs.push_back(jsi::dynamicFromValue(runtime, args[i]));
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
method.func(std::move(innerArgs), first, second);
|
|
186
|
-
} else if (method.isPromise) {
|
|
187
|
-
return createPromiseAsJSIValue(
|
|
188
|
-
runtime,
|
|
189
|
-
[method, args, count, this](
|
|
190
|
-
jsi::Runtime& rt, std::shared_ptr<Promise> promise) {
|
|
191
|
-
auto resolveWrapper = CallbackWrapper::createWeak(
|
|
192
|
-
promise->resolve_.getFunction(rt), rt, jsInvoker_);
|
|
193
|
-
auto rejectWrapper = CallbackWrapper::createWeak(
|
|
194
|
-
promise->reject_.getFunction(rt), rt, jsInvoker_);
|
|
195
|
-
CxxModule::Callback resolve =
|
|
196
|
-
makeTurboCxxModuleCallback(resolveWrapper);
|
|
197
|
-
CxxModule::Callback reject =
|
|
198
|
-
makeTurboCxxModuleCallback(rejectWrapper);
|
|
199
|
-
|
|
200
|
-
auto innerArgs = folly::dynamic::array();
|
|
201
|
-
for (size_t i = 0; i < count; i++) {
|
|
202
|
-
innerArgs.push_back(jsi::dynamicFromValue(rt, args[i]));
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
method.func(std::move(innerArgs), resolve, reject);
|
|
206
|
-
});
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
return jsi::Value::undefined();
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
} // namespace facebook::react
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
#pragma once
|
|
9
|
-
|
|
10
|
-
#include <memory>
|
|
11
|
-
#include <vector>
|
|
12
|
-
|
|
13
|
-
#include <cxxreact/CxxModule.h>
|
|
14
|
-
|
|
15
|
-
#include "TurboModule.h"
|
|
16
|
-
|
|
17
|
-
namespace facebook::react {
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* A helper class to convert the legacy CxxModule instance to a TurboModule
|
|
21
|
-
* instance. This should be used only for migration purpose (to TurboModule),
|
|
22
|
-
* since it's not very performant due to a lot of back-and-forth value
|
|
23
|
-
* conversions between folly::dynamic and jsi::Value.
|
|
24
|
-
*/
|
|
25
|
-
class JSI_EXPORT TurboCxxModule : public TurboModule {
|
|
26
|
-
public:
|
|
27
|
-
TurboCxxModule(std::unique_ptr<facebook::xplat::module::CxxModule> cxxModule, std::shared_ptr<CallInvoker> jsInvoker);
|
|
28
|
-
|
|
29
|
-
facebook::jsi::Value create(facebook::jsi::Runtime &runtime, const facebook::jsi::PropNameID &propName) override;
|
|
30
|
-
|
|
31
|
-
std::vector<facebook::jsi::PropNameID> getPropertyNames(facebook::jsi::Runtime &runtime) override;
|
|
32
|
-
|
|
33
|
-
jsi::Value invokeMethod(jsi::Runtime &runtime, const std::string &methodName, const jsi::Value *args, size_t count);
|
|
34
|
-
|
|
35
|
-
private:
|
|
36
|
-
std::vector<facebook::xplat::module::CxxModule::Method> cxxMethods_;
|
|
37
|
-
std::unique_ptr<facebook::xplat::module::CxxModule> cxxModule_;
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
} // namespace facebook::react
|