Skip to content

Commit c933b16

Browse files
dmytrorykunfacebook-github-bot
authored andcommitted
Add enableImagePrefetchingAndroid to ReactNativeFeatureFlags (facebook#47755)
Summary: Pull Request resolved: facebook#47755 TIA. Changelog: [Internal] Differential Revision: D65596686
1 parent c4eb75d commit c933b16

19 files changed

+153
-47
lines changed

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

+7-1
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<<b1ad8179cf22c2e97f623435bf152aab>>
7+
* @generated SignedSource<<6a797c8665bb8e216ac1a98da033d076>>
88
*/
99

1010
/**
@@ -130,6 +130,12 @@ public object ReactNativeFeatureFlags {
130130
@JvmStatic
131131
public fun enableIOSViewClipToPaddingBox(): Boolean = accessor.enableIOSViewClipToPaddingBox()
132132

133+
/**
134+
* When enabled, Andoid will build and initiate image prefetch request on ImageShadowNode::layout
135+
*/
136+
@JvmStatic
137+
public fun enableImagePrefetchingAndroid(): Boolean = accessor.enableImagePrefetchingAndroid()
138+
133139
/**
134140
* When enabled, LayoutAnimations API will animate state changes on Android.
135141
*/

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

+11-1
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<<7dd21b62dfe429aecdbd179cb482fb26>>
7+
* @generated SignedSource<<031fce8e8b4c20a3e3d6dbecf94d138a>>
88
*/
99

1010
/**
@@ -37,6 +37,7 @@ public class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAccesso
3737
private var enableFixForViewCommandRaceCache: Boolean? = null
3838
private var enableGranularShadowTreeStateReconciliationCache: Boolean? = null
3939
private var enableIOSViewClipToPaddingBoxCache: Boolean? = null
40+
private var enableImagePrefetchingAndroidCache: Boolean? = null
4041
private var enableLayoutAnimationsOnAndroidCache: Boolean? = null
4142
private var enableLayoutAnimationsOnIOSCache: Boolean? = null
4243
private var enableLongTaskAPICache: Boolean? = null
@@ -219,6 +220,15 @@ public class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAccesso
219220
return cached
220221
}
221222

223+
override fun enableImagePrefetchingAndroid(): Boolean {
224+
var cached = enableImagePrefetchingAndroidCache
225+
if (cached == null) {
226+
cached = ReactNativeFeatureFlagsCxxInterop.enableImagePrefetchingAndroid()
227+
enableImagePrefetchingAndroidCache = cached
228+
}
229+
return cached
230+
}
231+
222232
override fun enableLayoutAnimationsOnAndroid(): Boolean {
223233
var cached = enableLayoutAnimationsOnAndroidCache
224234
if (cached == null) {

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

+3-1
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<<fcfded14a5fe05501892993c1f58f3ed>>
7+
* @generated SignedSource<<35811667ac2543e1f64e27bbdb483ec1>>
88
*/
99

1010
/**
@@ -62,6 +62,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
6262

6363
@DoNotStrip @JvmStatic public external fun enableIOSViewClipToPaddingBox(): Boolean
6464

65+
@DoNotStrip @JvmStatic public external fun enableImagePrefetchingAndroid(): Boolean
66+
6567
@DoNotStrip @JvmStatic public external fun enableLayoutAnimationsOnAndroid(): Boolean
6668

6769
@DoNotStrip @JvmStatic public external fun enableLayoutAnimationsOnIOS(): Boolean

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

+3-1
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<<86d8dd894e80a788af7f47172d30d33c>>
7+
* @generated SignedSource<<9d829c58e49164a0b2b6b66bc0ce088a>>
88
*/
99

1010
/**
@@ -57,6 +57,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
5757

5858
override fun enableIOSViewClipToPaddingBox(): Boolean = false
5959

60+
override fun enableImagePrefetchingAndroid(): Boolean = false
61+
6062
override fun enableLayoutAnimationsOnAndroid(): Boolean = false
6163

6264
override fun enableLayoutAnimationsOnIOS(): Boolean = true

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

+12-1
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<<4bb5173b9ba1d3e620f3a7d613b27ac7>>
7+
* @generated SignedSource<<0121e113410a5b0e14eaf74a3076df2f>>
88
*/
99

1010
/**
@@ -41,6 +41,7 @@ public class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcces
4141
private var enableFixForViewCommandRaceCache: Boolean? = null
4242
private var enableGranularShadowTreeStateReconciliationCache: Boolean? = null
4343
private var enableIOSViewClipToPaddingBoxCache: Boolean? = null
44+
private var enableImagePrefetchingAndroidCache: Boolean? = null
4445
private var enableLayoutAnimationsOnAndroidCache: Boolean? = null
4546
private var enableLayoutAnimationsOnIOSCache: Boolean? = null
4647
private var enableLongTaskAPICache: Boolean? = null
@@ -240,6 +241,16 @@ public class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcces
240241
return cached
241242
}
242243

244+
override fun enableImagePrefetchingAndroid(): Boolean {
245+
var cached = enableImagePrefetchingAndroidCache
246+
if (cached == null) {
247+
cached = currentProvider.enableImagePrefetchingAndroid()
248+
accessedFeatureFlags.add("enableImagePrefetchingAndroid")
249+
enableImagePrefetchingAndroidCache = cached
250+
}
251+
return cached
252+
}
253+
243254
override fun enableLayoutAnimationsOnAndroid(): Boolean {
244255
var cached = enableLayoutAnimationsOnAndroidCache
245256
if (cached == null) {

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

+3-1
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<<2217f2b9992c9424c3d1d221bdfa2236>>
7+
* @generated SignedSource<<2787d9027695dd14ec6b917a32a1a6de>>
88
*/
99

1010
/**
@@ -57,6 +57,8 @@ public interface ReactNativeFeatureFlagsProvider {
5757

5858
@DoNotStrip public fun enableIOSViewClipToPaddingBox(): Boolean
5959

60+
@DoNotStrip public fun enableImagePrefetchingAndroid(): Boolean
61+
6062
@DoNotStrip public fun enableLayoutAnimationsOnAndroid(): Boolean
6163

6264
@DoNotStrip public fun enableLayoutAnimationsOnIOS(): Boolean

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

+15-1
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<<d5ccaecdf8cc2cf6144409658d9076ae>>
7+
* @generated SignedSource<<902b269e45fcb4970c6f8a86818e1940>>
88
*/
99

1010
/**
@@ -141,6 +141,12 @@ class ReactNativeFeatureFlagsProviderHolder
141141
return method(javaProvider_);
142142
}
143143

144+
bool enableImagePrefetchingAndroid() override {
145+
static const auto method =
146+
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableImagePrefetchingAndroid");
147+
return method(javaProvider_);
148+
}
149+
144150
bool enableLayoutAnimationsOnAndroid() override {
145151
static const auto method =
146152
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableLayoutAnimationsOnAndroid");
@@ -398,6 +404,11 @@ bool JReactNativeFeatureFlagsCxxInterop::enableIOSViewClipToPaddingBox(
398404
return ReactNativeFeatureFlags::enableIOSViewClipToPaddingBox();
399405
}
400406

407+
bool JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingAndroid(
408+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
409+
return ReactNativeFeatureFlags::enableImagePrefetchingAndroid();
410+
}
411+
401412
bool JReactNativeFeatureFlagsCxxInterop::enableLayoutAnimationsOnAndroid(
402413
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
403414
return ReactNativeFeatureFlags::enableLayoutAnimationsOnAndroid();
@@ -620,6 +631,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
620631
makeNativeMethod(
621632
"enableIOSViewClipToPaddingBox",
622633
JReactNativeFeatureFlagsCxxInterop::enableIOSViewClipToPaddingBox),
634+
makeNativeMethod(
635+
"enableImagePrefetchingAndroid",
636+
JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingAndroid),
623637
makeNativeMethod(
624638
"enableLayoutAnimationsOnAndroid",
625639
JReactNativeFeatureFlagsCxxInterop::enableLayoutAnimationsOnAndroid),

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

+4-1
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<<0b07eaeba8112f65ecb18d53b7b893af>>
7+
* @generated SignedSource<<17da0d7937c5c0c533293b86c8cdc9be>>
88
*/
99

1010
/**
@@ -81,6 +81,9 @@ class JReactNativeFeatureFlagsCxxInterop
8181
static bool enableIOSViewClipToPaddingBox(
8282
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
8383

84+
static bool enableImagePrefetchingAndroid(
85+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
86+
8487
static bool enableLayoutAnimationsOnAndroid(
8588
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
8689

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

+5-1
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<<90e3ea3abb6f13c711aec3754ab03126>>
7+
* @generated SignedSource<<ef215623465d45c563030d724287b1c9>>
88
*/
99

1010
/**
@@ -94,6 +94,10 @@ bool ReactNativeFeatureFlags::enableIOSViewClipToPaddingBox() {
9494
return getAccessor().enableIOSViewClipToPaddingBox();
9595
}
9696

97+
bool ReactNativeFeatureFlags::enableImagePrefetchingAndroid() {
98+
return getAccessor().enableImagePrefetchingAndroid();
99+
}
100+
97101
bool ReactNativeFeatureFlags::enableLayoutAnimationsOnAndroid() {
98102
return getAccessor().enableLayoutAnimationsOnAndroid();
99103
}

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

+6-1
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<<4544b1e206765808859ef84c2e6333a9>>
7+
* @generated SignedSource<<5a098a8b8b232632c79fd45cd2161929>>
88
*/
99

1010
/**
@@ -124,6 +124,11 @@ class ReactNativeFeatureFlags {
124124
*/
125125
RN_EXPORT static bool enableIOSViewClipToPaddingBox();
126126

127+
/**
128+
* When enabled, Andoid will build and initiate image prefetch request on ImageShadowNode::layout
129+
*/
130+
RN_EXPORT static bool enableImagePrefetchingAndroid();
131+
127132
/**
128133
* When enabled, LayoutAnimations API will animate state changes on Android.
129134
*/

0 commit comments

Comments
 (0)