Skip to content

Commit b7add0a

Browse files
Riccardo Cipolleschifacebook-github-bot
Riccardo Cipolleschi
authored andcommitted
Always generate an EmptyNativeState (#34754)
Summary: Pull Request resolved: #34754 This Diff is the second step of enabling the CodeGen to parse and generate a NativeState for the components. The feature has been largely requested by the OSS community but it could be also helpful for people in Meta. ## Changelog [General][Added] - Always generate an empty NativeState for Fabric Components Reviewed By: cortinico Differential Revision: D39696435 fbshipit-source-id: e24768af78f59696c0b4db009e8065bb5c89316b
1 parent 69f8cf1 commit b7add0a

File tree

18 files changed

+2314
-56
lines changed

18 files changed

+2314
-56
lines changed

ReactAndroid/cmake-utils/ReactNative-application.cmake

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@ set(CMAKE_VERBOSE_MAKEFILE on)
1818

1919
include(${REACT_ANDROID_DIR}/cmake-utils/Android-prebuilt.cmake)
2020

21-
file(GLOB input_SRC CONFIGURE_DEPENDS
21+
file(GLOB input_SRC CONFIGURE_DEPENDS
2222
*.cpp
2323
${PROJECT_BUILD_DIR}/generated/rncli/src/main/jni/*.cpp)
2424

2525
add_library(${CMAKE_PROJECT_NAME} SHARED ${input_SRC})
2626

27-
target_include_directories(${CMAKE_PROJECT_NAME}
28-
PUBLIC
27+
target_include_directories(${CMAKE_PROJECT_NAME}
28+
PUBLIC
2929
${CMAKE_CURRENT_SOURCE_DIR}
3030
${PROJECT_BUILD_DIR}/generated/rncli/src/main/jni)
3131

@@ -45,6 +45,7 @@ target_link_libraries(${CMAKE_PROJECT_NAME}
4545
react_render_core
4646
react_render_debug
4747
react_render_graphics
48+
react_render_mapbuffer
4849
rrc_view
4950
runtimeexecutor
5051
turbomodulejsijni

packages/react-native-codegen/DEFS.bzl

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,8 @@ def rn_codegen_components(
263263
generate_event_emitter_h_name = "generate_event_emitter_h-{}".format(name)
264264
generate_props_cpp_name = "generate_props_cpp-{}".format(name)
265265
generate_props_h_name = "generated_props_h-{}".format(name)
266+
generate_state_cpp_name = "generate_state_cpp-{}".format(name)
267+
generate_state_h_name = "generated_state_h-{}".format(name)
266268
generate_tests_cpp_name = "generate_tests_cpp-{}".format(name)
267269
generate_shadow_node_cpp_name = "generated_shadow_node_cpp-{}".format(name)
268270
generate_shadow_node_h_name = "generated_shadow_node_h-{}".format(name)
@@ -314,6 +316,13 @@ def rn_codegen_components(
314316
labels = ["codegen_rule"],
315317
)
316318

319+
fb_native.genrule(
320+
name = generate_state_cpp_name,
321+
cmd = "cp $(location :{})/States.cpp $OUT".format(generate_fixtures_rule_name),
322+
out = "States.cpp",
323+
labels = ["codegen_rule"],
324+
)
325+
317326
fb_native.genrule(
318327
name = generate_tests_cpp_name,
319328
cmd = "cp $(location :{})/Tests.cpp $OUT".format(generate_fixtures_rule_name),
@@ -328,6 +337,13 @@ def rn_codegen_components(
328337
labels = ["codegen_rule"],
329338
)
330339

340+
fb_native.genrule(
341+
name = generate_state_h_name,
342+
cmd = "cp $(location :{})/States.h $OUT".format(generate_fixtures_rule_name),
343+
out = "States.h",
344+
labels = ["codegen_rule"],
345+
)
346+
331347
fb_native.genrule(
332348
name = copy_generated_java_files,
333349
# TODO: support different package name internally.
@@ -388,12 +404,14 @@ def rn_codegen_components(
388404
srcs = [
389405
":{}".format(generate_event_emitter_cpp_name),
390406
":{}".format(generate_props_cpp_name),
407+
":{}".format(generate_state_cpp_name),
391408
":{}".format(generate_shadow_node_cpp_name),
392409
],
393410
headers = [
394411
":{}".format(generate_component_descriptor_h_name),
395412
":{}".format(generate_event_emitter_h_name),
396413
":{}".format(generate_props_h_name),
414+
":{}".format(generate_state_h_name),
397415
":{}".format(generate_shadow_node_h_name),
398416
],
399417
header_namespace = "react/renderer/components/{}".format(name),
@@ -403,6 +421,7 @@ def rn_codegen_components(
403421
"Props.h": ":{}".format(generate_props_h_name),
404422
"RCTComponentViewHelpers.h": ":{}".format(generate_component_hobjcpp_name),
405423
"ShadowNodes.h": ":{}".format(generate_shadow_node_h_name),
424+
"States.h": ":{}".format(generate_state_h_name),
406425
},
407426
fbobjc_compiler_flags = get_apple_compiler_flags(),
408427
fbobjc_preprocessor_flags = get_preprocessor_flags_for_build_mode() + get_apple_inspector_flags(),

packages/react-native-codegen/e2e/__tests__/components/__snapshots__/GenerateShadowNodeH-test.js.snap

Lines changed: 46 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Object {
1616
1717
#include <react/renderer/components/RNCodegenModuleFixtures/EventEmitters.h>
1818
#include <react/renderer/components/RNCodegenModuleFixtures/Props.h>
19+
#include <react/renderer/components/RNCodegenModuleFixtures/States.h>
1920
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
2021
#include <jsi/jsi.h>
2122
@@ -30,7 +31,8 @@ JSI_EXPORT extern const char ArrayPropsNativeComponentViewComponentName[];
3031
using ArrayPropsNativeComponentViewShadowNode = ConcreteViewShadowNode<
3132
ArrayPropsNativeComponentViewComponentName,
3233
ArrayPropsNativeComponentViewProps,
33-
ArrayPropsNativeComponentViewEventEmitter>;
34+
ArrayPropsNativeComponentViewEventEmitter,
35+
ArrayPropsNativeComponentViewState>;
3436
3537
} // namespace react
3638
} // namespace facebook
@@ -54,6 +56,7 @@ Object {
5456
5557
#include <react/renderer/components/RNCodegenModuleFixtures/EventEmitters.h>
5658
#include <react/renderer/components/RNCodegenModuleFixtures/Props.h>
59+
#include <react/renderer/components/RNCodegenModuleFixtures/States.h>
5760
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
5861
#include <jsi/jsi.h>
5962
@@ -68,7 +71,8 @@ JSI_EXPORT extern const char BooleanPropNativeComponentViewComponentName[];
6871
using BooleanPropNativeComponentViewShadowNode = ConcreteViewShadowNode<
6972
BooleanPropNativeComponentViewComponentName,
7073
BooleanPropNativeComponentViewProps,
71-
BooleanPropNativeComponentViewEventEmitter>;
74+
BooleanPropNativeComponentViewEventEmitter,
75+
BooleanPropNativeComponentViewState>;
7276
7377
} // namespace react
7478
} // namespace facebook
@@ -92,6 +96,7 @@ Object {
9296
9397
#include <react/renderer/components/RNCodegenModuleFixtures/EventEmitters.h>
9498
#include <react/renderer/components/RNCodegenModuleFixtures/Props.h>
99+
#include <react/renderer/components/RNCodegenModuleFixtures/States.h>
95100
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
96101
#include <jsi/jsi.h>
97102
@@ -106,7 +111,8 @@ JSI_EXPORT extern const char ColorPropNativeComponentViewComponentName[];
106111
using ColorPropNativeComponentViewShadowNode = ConcreteViewShadowNode<
107112
ColorPropNativeComponentViewComponentName,
108113
ColorPropNativeComponentViewProps,
109-
ColorPropNativeComponentViewEventEmitter>;
114+
ColorPropNativeComponentViewEventEmitter,
115+
ColorPropNativeComponentViewState>;
110116
111117
} // namespace react
112118
} // namespace facebook
@@ -130,6 +136,7 @@ Object {
130136
131137
#include <react/renderer/components/RNCodegenModuleFixtures/EventEmitters.h>
132138
#include <react/renderer/components/RNCodegenModuleFixtures/Props.h>
139+
#include <react/renderer/components/RNCodegenModuleFixtures/States.h>
133140
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
134141
#include <jsi/jsi.h>
135142
@@ -144,7 +151,8 @@ JSI_EXPORT extern const char EdgeInsetsPropNativeComponentViewComponentName[];
144151
using EdgeInsetsPropNativeComponentViewShadowNode = ConcreteViewShadowNode<
145152
EdgeInsetsPropNativeComponentViewComponentName,
146153
EdgeInsetsPropNativeComponentViewProps,
147-
EdgeInsetsPropNativeComponentViewEventEmitter>;
154+
EdgeInsetsPropNativeComponentViewEventEmitter,
155+
EdgeInsetsPropNativeComponentViewState>;
148156
149157
} // namespace react
150158
} // namespace facebook
@@ -168,6 +176,7 @@ Object {
168176
169177
#include <react/renderer/components/RNCodegenModuleFixtures/EventEmitters.h>
170178
#include <react/renderer/components/RNCodegenModuleFixtures/Props.h>
179+
#include <react/renderer/components/RNCodegenModuleFixtures/States.h>
171180
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
172181
#include <jsi/jsi.h>
173182
@@ -182,7 +191,8 @@ JSI_EXPORT extern const char EnumPropNativeComponentViewComponentName[];
182191
using EnumPropNativeComponentViewShadowNode = ConcreteViewShadowNode<
183192
EnumPropNativeComponentViewComponentName,
184193
EnumPropNativeComponentViewProps,
185-
EnumPropNativeComponentViewEventEmitter>;
194+
EnumPropNativeComponentViewEventEmitter,
195+
EnumPropNativeComponentViewState>;
186196
187197
} // namespace react
188198
} // namespace facebook
@@ -206,6 +216,7 @@ Object {
206216
207217
#include <react/renderer/components/RNCodegenModuleFixtures/EventEmitters.h>
208218
#include <react/renderer/components/RNCodegenModuleFixtures/Props.h>
219+
#include <react/renderer/components/RNCodegenModuleFixtures/States.h>
209220
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
210221
#include <jsi/jsi.h>
211222
@@ -220,7 +231,8 @@ JSI_EXPORT extern const char EventNestedObjectPropsNativeComponentViewComponentN
220231
using EventNestedObjectPropsNativeComponentViewShadowNode = ConcreteViewShadowNode<
221232
EventNestedObjectPropsNativeComponentViewComponentName,
222233
EventNestedObjectPropsNativeComponentViewProps,
223-
EventNestedObjectPropsNativeComponentViewEventEmitter>;
234+
EventNestedObjectPropsNativeComponentViewEventEmitter,
235+
EventNestedObjectPropsNativeComponentViewState>;
224236
225237
} // namespace react
226238
} // namespace facebook
@@ -244,6 +256,7 @@ Object {
244256
245257
#include <react/renderer/components/RNCodegenModuleFixtures/EventEmitters.h>
246258
#include <react/renderer/components/RNCodegenModuleFixtures/Props.h>
259+
#include <react/renderer/components/RNCodegenModuleFixtures/States.h>
247260
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
248261
#include <jsi/jsi.h>
249262
@@ -258,7 +271,8 @@ JSI_EXPORT extern const char EventPropsNativeComponentViewComponentName[];
258271
using EventPropsNativeComponentViewShadowNode = ConcreteViewShadowNode<
259272
EventPropsNativeComponentViewComponentName,
260273
EventPropsNativeComponentViewProps,
261-
EventPropsNativeComponentViewEventEmitter>;
274+
EventPropsNativeComponentViewEventEmitter,
275+
EventPropsNativeComponentViewState>;
262276
263277
} // namespace react
264278
} // namespace facebook
@@ -282,6 +296,7 @@ Object {
282296
283297
#include <react/renderer/components/RNCodegenModuleFixtures/EventEmitters.h>
284298
#include <react/renderer/components/RNCodegenModuleFixtures/Props.h>
299+
#include <react/renderer/components/RNCodegenModuleFixtures/States.h>
285300
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
286301
#include <jsi/jsi.h>
287302
@@ -296,7 +311,8 @@ JSI_EXPORT extern const char FloatPropsNativeComponentViewComponentName[];
296311
using FloatPropsNativeComponentViewShadowNode = ConcreteViewShadowNode<
297312
FloatPropsNativeComponentViewComponentName,
298313
FloatPropsNativeComponentViewProps,
299-
FloatPropsNativeComponentViewEventEmitter>;
314+
FloatPropsNativeComponentViewEventEmitter,
315+
FloatPropsNativeComponentViewState>;
300316
301317
} // namespace react
302318
} // namespace facebook
@@ -320,6 +336,7 @@ Object {
320336
321337
#include <react/renderer/components/RNCodegenModuleFixtures/EventEmitters.h>
322338
#include <react/renderer/components/RNCodegenModuleFixtures/Props.h>
339+
#include <react/renderer/components/RNCodegenModuleFixtures/States.h>
323340
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
324341
#include <jsi/jsi.h>
325342
@@ -334,7 +351,8 @@ JSI_EXPORT extern const char ImagePropNativeComponentViewComponentName[];
334351
using ImagePropNativeComponentViewShadowNode = ConcreteViewShadowNode<
335352
ImagePropNativeComponentViewComponentName,
336353
ImagePropNativeComponentViewProps,
337-
ImagePropNativeComponentViewEventEmitter>;
354+
ImagePropNativeComponentViewEventEmitter,
355+
ImagePropNativeComponentViewState>;
338356
339357
} // namespace react
340358
} // namespace facebook
@@ -358,6 +376,7 @@ Object {
358376
359377
#include <react/renderer/components/RNCodegenModuleFixtures/EventEmitters.h>
360378
#include <react/renderer/components/RNCodegenModuleFixtures/Props.h>
379+
#include <react/renderer/components/RNCodegenModuleFixtures/States.h>
361380
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
362381
#include <jsi/jsi.h>
363382
@@ -372,7 +391,8 @@ JSI_EXPORT extern const char IntegerPropNativeComponentViewComponentName[];
372391
using IntegerPropNativeComponentViewShadowNode = ConcreteViewShadowNode<
373392
IntegerPropNativeComponentViewComponentName,
374393
IntegerPropNativeComponentViewProps,
375-
IntegerPropNativeComponentViewEventEmitter>;
394+
IntegerPropNativeComponentViewEventEmitter,
395+
IntegerPropNativeComponentViewState>;
376396
377397
} // namespace react
378398
} // namespace facebook
@@ -396,6 +416,7 @@ Object {
396416
397417
#include <react/renderer/components/RNCodegenModuleFixtures/EventEmitters.h>
398418
#include <react/renderer/components/RNCodegenModuleFixtures/Props.h>
419+
#include <react/renderer/components/RNCodegenModuleFixtures/States.h>
399420
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
400421
#include <jsi/jsi.h>
401422
@@ -426,6 +447,7 @@ Object {
426447
427448
#include <react/renderer/components/RNCodegenModuleFixtures/EventEmitters.h>
428449
#include <react/renderer/components/RNCodegenModuleFixtures/Props.h>
450+
#include <react/renderer/components/RNCodegenModuleFixtures/States.h>
429451
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
430452
#include <jsi/jsi.h>
431453
@@ -440,7 +462,8 @@ JSI_EXPORT extern const char MultiNativePropNativeComponentViewComponentName[];
440462
using MultiNativePropNativeComponentViewShadowNode = ConcreteViewShadowNode<
441463
MultiNativePropNativeComponentViewComponentName,
442464
MultiNativePropNativeComponentViewProps,
443-
MultiNativePropNativeComponentViewEventEmitter>;
465+
MultiNativePropNativeComponentViewEventEmitter,
466+
MultiNativePropNativeComponentViewState>;
444467
445468
} // namespace react
446469
} // namespace facebook
@@ -464,6 +487,7 @@ Object {
464487
465488
#include <react/renderer/components/RNCodegenModuleFixtures/EventEmitters.h>
466489
#include <react/renderer/components/RNCodegenModuleFixtures/Props.h>
490+
#include <react/renderer/components/RNCodegenModuleFixtures/States.h>
467491
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
468492
#include <jsi/jsi.h>
469493
@@ -478,7 +502,8 @@ JSI_EXPORT extern const char NoPropsNoEventsNativeComponentViewComponentName[];
478502
using NoPropsNoEventsNativeComponentViewShadowNode = ConcreteViewShadowNode<
479503
NoPropsNoEventsNativeComponentViewComponentName,
480504
NoPropsNoEventsNativeComponentViewProps,
481-
NoPropsNoEventsNativeComponentViewEventEmitter>;
505+
NoPropsNoEventsNativeComponentViewEventEmitter,
506+
NoPropsNoEventsNativeComponentViewState>;
482507
483508
} // namespace react
484509
} // namespace facebook
@@ -502,6 +527,7 @@ Object {
502527
503528
#include <react/renderer/components/RNCodegenModuleFixtures/EventEmitters.h>
504529
#include <react/renderer/components/RNCodegenModuleFixtures/Props.h>
530+
#include <react/renderer/components/RNCodegenModuleFixtures/States.h>
505531
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
506532
#include <jsi/jsi.h>
507533
@@ -516,7 +542,8 @@ JSI_EXPORT extern const char ObjectPropsNativeComponentComponentName[];
516542
using ObjectPropsNativeComponentShadowNode = ConcreteViewShadowNode<
517543
ObjectPropsNativeComponentComponentName,
518544
ObjectPropsNativeComponentProps,
519-
ObjectPropsNativeComponentEventEmitter>;
545+
ObjectPropsNativeComponentEventEmitter,
546+
ObjectPropsNativeComponentState>;
520547
521548
} // namespace react
522549
} // namespace facebook
@@ -540,6 +567,7 @@ Object {
540567
541568
#include <react/renderer/components/RNCodegenModuleFixtures/EventEmitters.h>
542569
#include <react/renderer/components/RNCodegenModuleFixtures/Props.h>
570+
#include <react/renderer/components/RNCodegenModuleFixtures/States.h>
543571
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
544572
#include <jsi/jsi.h>
545573
@@ -554,7 +582,8 @@ JSI_EXPORT extern const char PointPropNativeComponentViewComponentName[];
554582
using PointPropNativeComponentViewShadowNode = ConcreteViewShadowNode<
555583
PointPropNativeComponentViewComponentName,
556584
PointPropNativeComponentViewProps,
557-
PointPropNativeComponentViewEventEmitter>;
585+
PointPropNativeComponentViewEventEmitter,
586+
PointPropNativeComponentViewState>;
558587
559588
} // namespace react
560589
} // namespace facebook
@@ -578,6 +607,7 @@ Object {
578607
579608
#include <react/renderer/components/RNCodegenModuleFixtures/EventEmitters.h>
580609
#include <react/renderer/components/RNCodegenModuleFixtures/Props.h>
610+
#include <react/renderer/components/RNCodegenModuleFixtures/States.h>
581611
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
582612
#include <jsi/jsi.h>
583613
@@ -592,7 +622,8 @@ JSI_EXPORT extern const char StringPropNativeComponentViewComponentName[];
592622
using StringPropNativeComponentViewShadowNode = ConcreteViewShadowNode<
593623
StringPropNativeComponentViewComponentName,
594624
StringPropNativeComponentViewProps,
595-
StringPropNativeComponentViewEventEmitter>;
625+
StringPropNativeComponentViewEventEmitter,
626+
StringPropNativeComponentViewState>;
596627
597628
} // namespace react
598629
} // namespace facebook

packages/react-native-codegen/src/cli/generators/generate-all.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ RNCodegen.generate(
5555
'descriptors',
5656
'events',
5757
'props',
58+
'states',
5859
'tests',
5960
'shadow-nodes',
6061
'modulesAndroid',

0 commit comments

Comments
 (0)