diff --git a/packages/react-native/Libraries/AppDelegate/React-RCTAppDelegate.podspec b/packages/react-native/Libraries/AppDelegate/React-RCTAppDelegate.podspec index 56b01504655..3342af0fe6a 100644 --- a/packages/react-native/Libraries/AppDelegate/React-RCTAppDelegate.podspec +++ b/packages/react-native/Libraries/AppDelegate/React-RCTAppDelegate.podspec @@ -44,6 +44,7 @@ header_search_paths = [ "$(PODS_ROOT)/Headers/Public/hermes-engine" ] : []).concat(use_frameworks ? [ "$(PODS_CONFIGURATION_BUILD_DIR)/React-Fabric/React_Fabric.framework/Headers/", + "$(PODS_CONFIGURATION_BUILD_DIR)/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx/", "$(PODS_CONFIGURATION_BUILD_DIR)/React-graphics/React_graphics.framework/Headers/", "$(PODS_CONFIGURATION_BUILD_DIR)/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios", "$(PODS_CONFIGURATION_BUILD_DIR)/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core", diff --git a/packages/react-native/React/React-RCTFabric.podspec b/packages/react-native/React/React-RCTFabric.podspec index af3ed97086b..a38a040197c 100644 --- a/packages/react-native/React/React-RCTFabric.podspec +++ b/packages/react-native/React/React-RCTFabric.podspec @@ -38,6 +38,7 @@ if ENV['USE_FRAMEWORKS'] header_search_paths << "\"${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage/React_FabricImage.framework/Headers\"" header_search_paths << "\"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/textlayoutmanager/platform/ios\"" header_search_paths << "\"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/textinput/iostextinput\"" + header_search_paths << "\"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx\"" header_search_paths << "\"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/imagemanager/platform/ios\"" header_search_paths << "\"${PODS_CONFIGURATION_BUILD_DIR}/React-nativeconfig/React_nativeconfig.framework/Headers\"" header_search_paths << "\"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers\"" diff --git a/packages/react-native/ReactAndroid/build.gradle b/packages/react-native/ReactAndroid/build.gradle index 08313ab7dee..cf466939059 100644 --- a/packages/react-native/ReactAndroid/build.gradle +++ b/packages/react-native/ReactAndroid/build.gradle @@ -118,7 +118,10 @@ final def preparePrefab = tasks.register("preparePrefab", PreparePrefabHeadersTa ), new PrefabPreprocessingEntry( "rrc_view", - new Pair("../ReactCommon/react/renderer/components/view/", "react/renderer/components/view/") + [ + new Pair("../ReactCommon/react/renderer/components/view/", "react/renderer/components/view/"), + new Pair("../ReactCommon/react/renderer/components/view/platform/android/", ""), + ] ), new PrefabPreprocessingEntry( "rrc_legacyviewmanagerinterop", diff --git a/packages/react-native/ReactCommon/React-Fabric.podspec b/packages/react-native/ReactCommon/React-Fabric.podspec index bf0ad1d2f39..de5b3234a4e 100644 --- a/packages/react-native/ReactCommon/React-Fabric.podspec +++ b/packages/react-native/ReactCommon/React-Fabric.podspec @@ -105,6 +105,7 @@ Pod::Spec.new do |s| "\"$(PODS_CONFIGURATION_BUILD_DIR)/React-rendererdebug/React_rendererdebug.framework/Headers/\"", "\"$(PODS_TARGET_SRCROOT)/react/renderer/textlayoutmanager/platform/ios\"", "\"$(PODS_TARGET_SRCROOT)/react/renderer/components/textinput/iostextinput\"", + "\"$(PODS_TARGET_SRCROOT)/react/renderer/components/view/platform/cxx\"", ] end @@ -224,7 +225,7 @@ Pod::Spec.new do |s| sss.dependency "Yoga" sss.compiler_flags = folly_compiler_flags sss.source_files = "react/renderer/components/view/**/*.{m,mm,cpp,h}" - sss.exclude_files = "react/renderer/components/view/tests" + sss.exclude_files = "react/renderer/components/view/tests", "react/renderer/components/view/platform/android" sss.header_dir = "react/renderer/components/view" sss.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/Headers/Private/Yoga\"" } end diff --git a/packages/react-native/ReactCommon/React-FabricImage.podspec b/packages/react-native/ReactCommon/React-FabricImage.podspec index 385ecdf322a..853fea35aac 100644 --- a/packages/react-native/ReactCommon/React-FabricImage.podspec +++ b/packages/react-native/ReactCommon/React-FabricImage.podspec @@ -36,6 +36,7 @@ if ENV['USE_FRAMEWORKS'] "\"$(PODS_CONFIGURATION_BUILD_DIR)/React-Codegen/React_Codegen.framework/Headers\"", "\"$(PODS_CONFIGURATION_BUILD_DIR)/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\"", "\"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/imagemanager/platform/ios\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx\"", "\"$(PODS_TARGET_SRCROOT)/react/renderer/textlayoutmanager/platform/ios\"", "\"$(PODS_TARGET_SRCROOT)/react/renderer/components/textinput/iostextinput\"", "\"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers\"", diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/ViewProps.cpp b/packages/react-native/ReactCommon/react/renderer/components/view/BaseViewProps.cpp similarity index 80% rename from packages/react-native/ReactCommon/react/renderer/components/view/ViewProps.cpp rename to packages/react-native/ReactCommon/react/renderer/components/view/BaseViewProps.cpp index 900080e6646..2f0f22023b2 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/ViewProps.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/view/BaseViewProps.cpp @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -#include "ViewProps.h" +#include "BaseViewProps.h" #include @@ -18,9 +18,9 @@ namespace facebook::react { -ViewProps::ViewProps( +BaseViewProps::BaseViewProps( const PropsParserContext &context, - ViewProps const &sourceProps, + BaseViewProps const &sourceProps, RawProps const &rawProps, bool shouldSetRawProps) : YogaStylableProps(context, sourceProps, rawProps, shouldSetRawProps), @@ -190,74 +190,7 @@ ViewProps::ViewProps( rawProps, "removeClippedSubviews", sourceProps.removeClippedSubviews, - false)) -#ifdef ANDROID - , - elevation( - CoreFeatures::enablePropIteratorSetter ? sourceProps.elevation - : convertRawProp( - context, - rawProps, - "elevation", - sourceProps.elevation, - {})), - nativeBackground( - CoreFeatures::enablePropIteratorSetter - ? sourceProps.nativeBackground - : convertRawProp( - context, - rawProps, - "nativeBackgroundAndroid", - sourceProps.nativeBackground, - {})), - nativeForeground( - CoreFeatures::enablePropIteratorSetter - ? sourceProps.nativeForeground - : convertRawProp( - context, - rawProps, - "nativeForegroundAndroid", - sourceProps.nativeForeground, - {})), - focusable( - CoreFeatures::enablePropIteratorSetter ? sourceProps.focusable - : convertRawProp( - context, - rawProps, - "focusable", - sourceProps.focusable, - {})), - hasTVPreferredFocus( - CoreFeatures::enablePropIteratorSetter - ? sourceProps.hasTVPreferredFocus - : convertRawProp( - context, - rawProps, - "hasTVPreferredFocus", - sourceProps.hasTVPreferredFocus, - {})), - needsOffscreenAlphaCompositing( - CoreFeatures::enablePropIteratorSetter - ? sourceProps.needsOffscreenAlphaCompositing - : convertRawProp( - context, - rawProps, - "needsOffscreenAlphaCompositing", - sourceProps.needsOffscreenAlphaCompositing, - {})), - renderToHardwareTextureAndroid( - CoreFeatures::enablePropIteratorSetter - ? sourceProps.renderToHardwareTextureAndroid - : convertRawProp( - context, - rawProps, - "renderToHardwareTextureAndroid", - sourceProps.renderToHardwareTextureAndroid, - {})) - -#endif -{ -} + false)) {} #define VIEW_EVENT_CASE(eventType) \ case CONSTEXPR_RAW_PROPS_KEY_HASH("on" #eventType): { \ @@ -271,7 +204,7 @@ ViewProps::ViewProps( return; \ } -void ViewProps::setProp( +void BaseViewProps::setProp( const PropsParserContext &context, RawPropsPropNameHash hash, const char *propName, @@ -282,7 +215,7 @@ void ViewProps::setProp( YogaStylableProps::setProp(context, hash, propName, value); AccessibilityProps::setProp(context, hash, propName, value); - static auto defaults = ViewProps{}; + static auto defaults = BaseViewProps{}; switch (hash) { RAW_SET_PROP_SWITCH_CASE_BASIC(opacity); @@ -326,15 +259,6 @@ void ViewProps::setProp( VIEW_EVENT_CASE(TouchMove); VIEW_EVENT_CASE(TouchEnd); VIEW_EVENT_CASE(TouchCancel); -#ifdef ANDROID - RAW_SET_PROP_SWITCH_CASE_BASIC(elevation); - RAW_SET_PROP_SWITCH_CASE(nativeBackground, "nativeBackgroundAndroid"); - RAW_SET_PROP_SWITCH_CASE(nativeForeground, "nativeForegroundAndroid"); - RAW_SET_PROP_SWITCH_CASE_BASIC(focusable); - RAW_SET_PROP_SWITCH_CASE_BASIC(hasTVPreferredFocus); - RAW_SET_PROP_SWITCH_CASE_BASIC(needsOffscreenAlphaCompositing); - RAW_SET_PROP_SWITCH_CASE_BASIC(renderToHardwareTextureAndroid); -#endif // BorderRadii SET_CASCADED_RECTANGLE_CORNERS(borderRadii, "border", "Radius", value); SET_CASCADED_RECTANGLE_EDGES(borderColors, "border", "Color", value); @@ -380,7 +304,7 @@ static BorderRadii ensureNoOverlap(BorderRadii const &radii, Size const &size) { }; } -BorderMetrics ViewProps::resolveBorderMetrics( +BorderMetrics BaseViewProps::resolveBorderMetrics( LayoutMetrics const &layoutMetrics) const { auto isRTL = bool{layoutMetrics.layoutDirection == LayoutDirection::RightToLeft}; @@ -412,33 +336,27 @@ BorderMetrics ViewProps::resolveBorderMetrics( }; } -bool ViewProps::getClipsContentToBounds() const { +bool BaseViewProps::getClipsContentToBounds() const { return yogaStyle.overflow() != YGOverflowVisible; } -#ifdef ANDROID -bool ViewProps::getProbablyMoreHorizontalThanVertical_DEPRECATED() const { - return yogaStyle.flexDirection() == YGFlexDirectionRow; -} -#endif - #pragma mark - DebugStringConvertible #if RN_DEBUG_STRING_CONVERTIBLE -SharedDebugStringConvertibleList ViewProps::getDebugProps() const { - const auto &defaultViewProps = ViewProps(); +SharedDebugStringConvertibleList BaseViewProps::getDebugProps() const { + const auto &defaultBaseViewProps = BaseViewProps(); return AccessibilityProps::getDebugProps() + YogaStylableProps::getDebugProps() + SharedDebugStringConvertibleList{ debugStringConvertibleItem( - "opacity", opacity, defaultViewProps.opacity), + "opacity", opacity, defaultBaseViewProps.opacity), debugStringConvertibleItem( "backgroundColor", backgroundColor, - defaultViewProps.backgroundColor), + defaultBaseViewProps.backgroundColor), debugStringConvertibleItem( - "zIndex", zIndex, defaultViewProps.zIndex.value_or(0)), + "zIndex", zIndex, defaultBaseViewProps.zIndex.value_or(0)), }; } #endif diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/ViewProps.h b/packages/react-native/ReactCommon/react/renderer/components/view/BaseViewProps.h similarity index 73% rename from packages/react-native/ReactCommon/react/renderer/components/view/ViewProps.h rename to packages/react-native/ReactCommon/react/renderer/components/view/BaseViewProps.h index 8b6a8445fe8..706620f7b5a 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/ViewProps.h +++ b/packages/react-native/ReactCommon/react/renderer/components/view/BaseViewProps.h @@ -20,16 +20,12 @@ namespace facebook::react { -class ViewProps; - -using SharedViewProps = std::shared_ptr; - -class ViewProps : public YogaStylableProps, public AccessibilityProps { +class BaseViewProps : public YogaStylableProps, public AccessibilityProps { public: - ViewProps() = default; - ViewProps( + BaseViewProps() = default; + BaseViewProps( const PropsParserContext &context, - ViewProps const &sourceProps, + BaseViewProps const &sourceProps, RawProps const &rawProps, bool shouldSetRawProps = true); @@ -39,11 +35,6 @@ class ViewProps : public YogaStylableProps, public AccessibilityProps { const char *propName, RawValue const &value); -#ifdef ANDROID - void propsDiffMapBuffer(Props const *oldProps, MapBufferBuilder &builder) - const override; -#endif - #pragma mark - Props // Color @@ -81,27 +72,11 @@ class ViewProps : public YogaStylableProps, public AccessibilityProps { Float elevation{}; /* Android-only */ -#ifdef ANDROID - - std::optional nativeBackground{}; - std::optional nativeForeground{}; - - bool focusable{false}; - bool hasTVPreferredFocus{false}; - bool needsOffscreenAlphaCompositing{false}; - bool renderToHardwareTextureAndroid{false}; - -#endif - #pragma mark - Convenience Methods BorderMetrics resolveBorderMetrics(LayoutMetrics const &layoutMetrics) const; bool getClipsContentToBounds() const; -#ifdef ANDROID - bool getProbablyMoreHorizontalThanVertical_DEPRECATED() const; -#endif - #pragma mark - DebugStringConvertible #if RN_DEBUG_STRING_CONVERTIBLE diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/CMakeLists.txt b/packages/react-native/ReactCommon/react/renderer/components/view/CMakeLists.txt index fb32b0b1873..10755bf772c 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/CMakeLists.txt +++ b/packages/react-native/ReactCommon/react/renderer/components/view/CMakeLists.txt @@ -15,10 +15,17 @@ add_compile_options( -Wno-gnu-zero-variadic-macro-arguments -DLOG_TAG=\"Fabric\") -file(GLOB rrc_view_SRC CONFIGURE_DEPENDS *.cpp) +file(GLOB rrc_view_SRC CONFIGURE_DEPENDS + *.cpp + platform/android/react/renderer/components/view/*.cpp) + add_library(rrc_view SHARED ${rrc_view_SRC}) -target_include_directories(rrc_view PUBLIC ${REACT_COMMON_DIR}) +target_include_directories(rrc_view + PUBLIC + ${REACT_COMMON_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/platform/android/ +) target_link_libraries(rrc_view folly_runtime diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/AccessibilityPropsMapBuffer.cpp b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/AccessibilityPropsMapBuffer.cpp similarity index 98% rename from packages/react-native/ReactCommon/react/renderer/components/view/AccessibilityPropsMapBuffer.cpp rename to packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/AccessibilityPropsMapBuffer.cpp index a9fa5e60e2c..5dc010c78d3 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/AccessibilityPropsMapBuffer.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/AccessibilityPropsMapBuffer.cpp @@ -6,12 +6,10 @@ */ #include "AccessibilityPropsMapBuffer.h" -#include "AccessibilityProps.h" +#include namespace facebook::react { -#ifdef ANDROID - static MapBuffer convertAccessibilityActions( std::vector const &actions) { MapBufferBuilder builder(actions.size()); @@ -163,6 +161,5 @@ void AccessibilityProps::propsDiffMapBuffer( builder.putInt(AP_ROLE, static_cast(newProps.role)); } } -#endif } // namespace facebook::react diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/AccessibilityPropsMapBuffer.h b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/AccessibilityPropsMapBuffer.h similarity index 98% rename from packages/react-native/ReactCommon/react/renderer/components/view/AccessibilityPropsMapBuffer.h rename to packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/AccessibilityPropsMapBuffer.h index 51d96ee40a0..46631bd4aed 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/AccessibilityPropsMapBuffer.h +++ b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/AccessibilityPropsMapBuffer.h @@ -7,8 +7,6 @@ #pragma once -#ifdef ANDROID - #include #include @@ -35,4 +33,3 @@ constexpr MapBuffer::Key ACCESSIBILITY_ACTION_NAME = 0; constexpr MapBuffer::Key ACCESSIBILITY_ACTION_LABEL = 1; } // namespace facebook::react -#endif diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/NativeDrawable.h b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/NativeDrawable.h new file mode 100644 index 00000000000..89ec3f31ee3 --- /dev/null +++ b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/NativeDrawable.h @@ -0,0 +1,105 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#pragma once + +#include +#include +#include + +namespace facebook::react { + +struct NativeDrawable { + enum class Kind : uint8_t { + Ripple, + ThemeAttr, + }; + + struct Ripple { + std::optional color{}; + std::optional rippleRadius{}; + bool borderless{false}; + + bool operator==(const Ripple &rhs) const { + return std::tie(this->color, this->borderless, this->rippleRadius) == + std::tie(rhs.color, rhs.borderless, rhs.rippleRadius); + } + }; + + std::string themeAttr; + Ripple ripple; + Kind kind; + + bool operator==(const NativeDrawable &rhs) const { + if (this->kind != rhs.kind) { + return false; + } + + switch (this->kind) { + case Kind::ThemeAttr: + return this->themeAttr == rhs.themeAttr; + case Kind::Ripple: + return this->ripple == rhs.ripple; + } + } + + bool operator!=(const NativeDrawable &rhs) const { + return !(*this == rhs); + } + + ~NativeDrawable() = default; +}; + +static inline void fromRawValue( + const PropsParserContext & /*context*/, + RawValue const &rawValue, + NativeDrawable &result) { + auto map = (butter::map)rawValue; + + auto typeIterator = map.find("type"); + react_native_expect( + typeIterator != map.end() && typeIterator->second.hasType()); + std::string type = (std::string)typeIterator->second; + + if (type == "ThemeAttrAndroid") { + auto attrIterator = map.find("attribute"); + react_native_expect( + attrIterator != map.end() && + attrIterator->second.hasType()); + + result = NativeDrawable{ + (std::string)attrIterator->second, + {}, + NativeDrawable::Kind::ThemeAttr, + }; + } else if (type == "RippleAndroid") { + auto color = map.find("color"); + auto borderless = map.find("borderless"); + auto rippleRadius = map.find("rippleRadius"); + + result = NativeDrawable{ + std::string{}, + NativeDrawable::Ripple{ + color != map.end() && color->second.hasType() + ? (int32_t)color->second + : std::optional{}, + rippleRadius != map.end() && rippleRadius->second.hasType() + ? (Float)rippleRadius->second + : std::optional{}, + borderless != map.end() && borderless->second.hasType() + ? (bool)borderless->second + : false, + }, + NativeDrawable::Kind::Ripple, + }; + } else { + LOG(ERROR) << "Unknown native drawable type: " << type; + react_native_expect(false); + } +} + +} // namespace facebook::react diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/ViewProps.cpp b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/ViewProps.cpp new file mode 100644 index 00000000000..20f2d5feea3 --- /dev/null +++ b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/ViewProps.cpp @@ -0,0 +1,125 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#include "ViewProps.h" + +#include + +#include +#include +#include +#include +#include + +namespace facebook::react { + +ViewProps::ViewProps( + const PropsParserContext &context, + ViewProps const &sourceProps, + RawProps const &rawProps, + bool shouldSetRawProps) + : BaseViewProps(context, sourceProps, rawProps, shouldSetRawProps), + nativeBackground( + CoreFeatures::enablePropIteratorSetter + ? sourceProps.nativeBackground + : convertRawProp( + context, + rawProps, + "nativeBackgroundAndroid", + sourceProps.nativeBackground, + {})), + nativeForeground( + CoreFeatures::enablePropIteratorSetter + ? sourceProps.nativeForeground + : convertRawProp( + context, + rawProps, + "nativeForegroundAndroid", + sourceProps.nativeForeground, + {})), + focusable( + CoreFeatures::enablePropIteratorSetter ? sourceProps.focusable + : convertRawProp( + context, + rawProps, + "focusable", + sourceProps.focusable, + {})), + hasTVPreferredFocus( + CoreFeatures::enablePropIteratorSetter + ? sourceProps.hasTVPreferredFocus + : convertRawProp( + context, + rawProps, + "hasTVPreferredFocus", + sourceProps.hasTVPreferredFocus, + {})), + needsOffscreenAlphaCompositing( + CoreFeatures::enablePropIteratorSetter + ? sourceProps.needsOffscreenAlphaCompositing + : convertRawProp( + context, + rawProps, + "needsOffscreenAlphaCompositing", + sourceProps.needsOffscreenAlphaCompositing, + {})), + renderToHardwareTextureAndroid( + CoreFeatures::enablePropIteratorSetter + ? sourceProps.renderToHardwareTextureAndroid + : convertRawProp( + context, + rawProps, + "renderToHardwareTextureAndroid", + sourceProps.renderToHardwareTextureAndroid, + {})) {} + +#define VIEW_EVENT_CASE(eventType) \ + case CONSTEXPR_RAW_PROPS_KEY_HASH("on" #eventType): { \ + const auto offset = ViewEvents::Offset::eventType; \ + ViewEvents defaultViewEvents{}; \ + bool res = defaultViewEvents[offset]; \ + if (value.hasValue()) { \ + fromRawValue(context, value, res); \ + } \ + events[offset] = res; \ + return; \ + } + +void ViewProps::setProp( + const PropsParserContext &context, + RawPropsPropNameHash hash, + const char *propName, + RawValue const &value) { + // All Props structs setProp methods must always, unconditionally, + // call all super::setProp methods, since multiple structs may + // reuse the same values. + BaseViewProps::setProp(context, hash, propName, value); + + static auto defaults = ViewProps{}; + + switch (hash) { + RAW_SET_PROP_SWITCH_CASE_BASIC(elevation); + RAW_SET_PROP_SWITCH_CASE(nativeBackground, "nativeBackgroundAndroid"); + RAW_SET_PROP_SWITCH_CASE(nativeForeground, "nativeForegroundAndroid"); + RAW_SET_PROP_SWITCH_CASE_BASIC(focusable); + RAW_SET_PROP_SWITCH_CASE_BASIC(hasTVPreferredFocus); + RAW_SET_PROP_SWITCH_CASE_BASIC(needsOffscreenAlphaCompositing); + RAW_SET_PROP_SWITCH_CASE_BASIC(renderToHardwareTextureAndroid); + } +} + +bool ViewProps::getProbablyMoreHorizontalThanVertical_DEPRECATED() const { + return yogaStyle.flexDirection() == YGFlexDirectionRow; +} + +#if RN_DEBUG_STRING_CONVERTIBLE +SharedDebugStringConvertibleList ViewProps::getDebugProps() const { + return BaseViewProps::getDebugProps(); +} +#endif + +} // namespace facebook::react diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/ViewProps.h b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/ViewProps.h new file mode 100644 index 00000000000..5ebda517aea --- /dev/null +++ b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/ViewProps.h @@ -0,0 +1,64 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +namespace facebook::react { + +class ViewProps; + +using SharedViewProps = std::shared_ptr; + +class ViewProps : public BaseViewProps { + public: + ViewProps() = default; + ViewProps( + const PropsParserContext &context, + ViewProps const &sourceProps, + RawProps const &rawProps, + bool shouldSetRawProps = true); + + void setProp( + const PropsParserContext &context, + RawPropsPropNameHash hash, + const char *propName, + RawValue const &value); + + void propsDiffMapBuffer(Props const *oldProps, MapBufferBuilder &builder) + const override; + +#pragma mark - Props + + std::optional nativeBackground{}; + std::optional nativeForeground{}; + + bool focusable{false}; + bool hasTVPreferredFocus{false}; + bool needsOffscreenAlphaCompositing{false}; + bool renderToHardwareTextureAndroid{false}; + +#pragma mark - Convenience Methods + + bool getProbablyMoreHorizontalThanVertical_DEPRECATED() const; + +#if RN_DEBUG_STRING_CONVERTIBLE + SharedDebugStringConvertibleList getDebugProps() const override; +#endif +}; + +} // namespace facebook::react diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/ViewPropsMapBuffer.cpp b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/ViewPropsMapBuffer.cpp similarity index 98% rename from packages/react-native/ReactCommon/react/renderer/components/view/ViewPropsMapBuffer.cpp rename to packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/ViewPropsMapBuffer.cpp index 3967bee5461..0d48e8dae46 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/ViewPropsMapBuffer.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/ViewPropsMapBuffer.cpp @@ -5,13 +5,10 @@ * LICENSE file in the root directory of this source tree. */ -#ifdef ANDROID - #include "ViewPropsMapBuffer.h" #include "ViewProps.h" -#include "viewPropConversions.h" - +#include #include #include @@ -192,5 +189,3 @@ void ViewProps::propsDiffMapBuffer( } } // namespace facebook::react - -#endif diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/ViewPropsMapBuffer.h b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/ViewPropsMapBuffer.h similarity index 98% rename from packages/react-native/ReactCommon/react/renderer/components/view/ViewPropsMapBuffer.h rename to packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/ViewPropsMapBuffer.h index 7574b0c14cb..147d240df7f 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/ViewPropsMapBuffer.h +++ b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/ViewPropsMapBuffer.h @@ -11,7 +11,6 @@ namespace facebook::react { -#ifdef ANDROID constexpr MapBuffer::Key VP_BACKFACE_VISIBILITY = 9; constexpr MapBuffer::Key VP_BG_COLOR = 10; constexpr MapBuffer::Key VP_BORDER_COLOR = 11; @@ -48,6 +47,5 @@ constexpr MapBuffer::Key VP_BORDER_CURVES = 45; // Yoga values constexpr MapBuffer::Key YG_BORDER_WIDTH = 100; constexpr MapBuffer::Key YG_OVERFLOW = 101; -#endif } // namespace facebook::react diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/YogaStylablePropsMapBuffer.cpp b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/YogaStylablePropsMapBuffer.cpp similarity index 97% rename from packages/react-native/ReactCommon/react/renderer/components/view/YogaStylablePropsMapBuffer.cpp rename to packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/YogaStylablePropsMapBuffer.cpp index da0459265f1..a0b50720005 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/YogaStylablePropsMapBuffer.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/YogaStylablePropsMapBuffer.cpp @@ -5,13 +5,10 @@ * LICENSE file in the root directory of this source tree. */ -#ifdef ANDROID - #include "ViewProps.h" #include "ViewPropsMapBuffer.h" -#include "viewPropConversions.h" - +#include #include namespace facebook::react { @@ -81,5 +78,3 @@ void YogaStylableProps::propsDiffMapBuffer( } } // namespace facebook::react - -#endif diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/YogaStylablePropsMapBuffer.h b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/YogaStylablePropsMapBuffer.h similarity index 100% rename from packages/react-native/ReactCommon/react/renderer/components/view/YogaStylablePropsMapBuffer.h rename to packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/YogaStylablePropsMapBuffer.h diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/platform/cxx/react/renderer/components/view/ViewProps.h b/packages/react-native/ReactCommon/react/renderer/components/view/platform/cxx/react/renderer/components/view/ViewProps.h new file mode 100644 index 00000000000..6e2d465236b --- /dev/null +++ b/packages/react-native/ReactCommon/react/renderer/components/view/platform/cxx/react/renderer/components/view/ViewProps.h @@ -0,0 +1,15 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#pragma once + +#include + +namespace facebook::react { +using ViewProps = BaseViewProps; +using SharedViewProps = std::shared_ptr; +} // namespace facebook::react diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/primitives.h b/packages/react-native/ReactCommon/react/renderer/components/view/primitives.h index ac418daa87f..9e7889a7612 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/primitives.h +++ b/packages/react-native/ReactCommon/react/renderer/components/view/primitives.h @@ -278,47 +278,4 @@ struct BorderMetrics { } }; -#ifdef ANDROID - -struct NativeDrawable { - enum class Kind : uint8_t { - Ripple, - ThemeAttr, - }; - - struct Ripple { - std::optional color{}; - std::optional rippleRadius{}; - bool borderless{false}; - - bool operator==(const Ripple &rhs) const { - return std::tie(this->color, this->borderless, this->rippleRadius) == - std::tie(rhs.color, rhs.borderless, rhs.rippleRadius); - } - }; - - std::string themeAttr; - Ripple ripple; - Kind kind; - - bool operator==(const NativeDrawable &rhs) const { - if (this->kind != rhs.kind) - return false; - switch (this->kind) { - case Kind::ThemeAttr: - return this->themeAttr == rhs.themeAttr; - case Kind::Ripple: - return this->ripple == rhs.ripple; - } - } - - bool operator!=(const NativeDrawable &rhs) const { - return !(*this == rhs); - } - - ~NativeDrawable() = default; -}; - -#endif - } // namespace facebook::react diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/propsConversions.h b/packages/react-native/ReactCommon/react/renderer/components/view/propsConversions.h index 6aabbf23835..46f3801c599 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/propsConversions.h +++ b/packages/react-native/ReactCommon/react/renderer/components/view/propsConversions.h @@ -738,56 +738,4 @@ static inline ViewEvents convertRawProp( return result; } -#ifdef ANDROID - -static inline void fromRawValue( - const PropsParserContext &context, - RawValue const &rawValue, - NativeDrawable &result) { - auto map = (butter::map)rawValue; - - auto typeIterator = map.find("type"); - react_native_expect( - typeIterator != map.end() && typeIterator->second.hasType()); - std::string type = (std::string)typeIterator->second; - - if (type == "ThemeAttrAndroid") { - auto attrIterator = map.find("attribute"); - react_native_expect( - attrIterator != map.end() && - attrIterator->second.hasType()); - - result = NativeDrawable{ - (std::string)attrIterator->second, - {}, - NativeDrawable::Kind::ThemeAttr, - }; - } else if (type == "RippleAndroid") { - auto color = map.find("color"); - auto borderless = map.find("borderless"); - auto rippleRadius = map.find("rippleRadius"); - - result = NativeDrawable{ - std::string{}, - NativeDrawable::Ripple{ - color != map.end() && color->second.hasType() - ? (int32_t)color->second - : std::optional{}, - rippleRadius != map.end() && rippleRadius->second.hasType() - ? (Float)rippleRadius->second - : std::optional{}, - borderless != map.end() && borderless->second.hasType() - ? (bool)borderless->second - : false, - }, - NativeDrawable::Kind::Ripple, - }; - } else { - LOG(ERROR) << "Unknown native drawable type: " << type; - react_native_expect(false); - } -} - -#endif - } // namespace facebook::react diff --git a/packages/react-native/scripts/cocoapods/__tests__/codegen_utils-test.rb b/packages/react-native/scripts/cocoapods/__tests__/codegen_utils-test.rb index b105737840a..297230dc5d2 100644 --- a/packages/react-native/scripts/cocoapods/__tests__/codegen_utils-test.rb +++ b/packages/react-native/scripts/cocoapods/__tests__/codegen_utils-test.rb @@ -591,7 +591,7 @@ class CodegenUtilsTests < Test::Unit::TestCase specs = get_podspec_no_fabric_no_script() specs["pod_target_xcconfig"]["FRAMEWORK_SEARCH_PATHS"].concat([]) - specs["pod_target_xcconfig"]["HEADER_SEARCH_PATHS"].concat(" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_TARGET_SRCROOT)\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-Fabric/React_Fabric.framework/Headers\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-FabricImage/React_FabricImage.framework/Headers\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-graphics/React_graphics.framework/Headers\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\" \"$(PODS_CONFIGURATION_BUILD_DIR)/ReactCommon/ReactCommon.framework/Headers\" \"$(PODS_CONFIGURATION_BUILD_DIR)/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-NativeModulesApple/React_NativeModulesApple.framework/Headers\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-RCTFabric/RCTFabric.framework/Headers\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-debug/React_debug.framework/Headers\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-rendererdebug/React_rendererdebug.framework/Headers\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-utils/React_utils.framework/Headers\"") + specs["pod_target_xcconfig"]["HEADER_SEARCH_PATHS"].concat(" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_TARGET_SRCROOT)\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-Fabric/React_Fabric.framework/Headers\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-FabricImage/React_FabricImage.framework/Headers\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-graphics/React_graphics.framework/Headers\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\" \"$(PODS_CONFIGURATION_BUILD_DIR)/ReactCommon/ReactCommon.framework/Headers\" \"$(PODS_CONFIGURATION_BUILD_DIR)/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-NativeModulesApple/React_NativeModulesApple.framework/Headers\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-RCTFabric/RCTFabric.framework/Headers\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-debug/React_debug.framework/Headers\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-rendererdebug/React_rendererdebug.framework/Headers\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-utils/React_utils.framework/Headers\"") specs[:dependencies].merge!({ 'React-graphics': [], diff --git a/packages/react-native/scripts/cocoapods/__tests__/new_architecture-test.rb b/packages/react-native/scripts/cocoapods/__tests__/new_architecture-test.rb index 6d10400e51f..f2570238226 100644 --- a/packages/react-native/scripts/cocoapods/__tests__/new_architecture-test.rb +++ b/packages/react-native/scripts/cocoapods/__tests__/new_architecture-test.rb @@ -129,7 +129,7 @@ class NewArchitectureTests < Test::Unit::TestCase # Assert assert_equal(spec.compiler_flags, NewArchitectureHelper.folly_compiler_flags) - assert_equal(spec.pod_target_xcconfig["HEADER_SEARCH_PATHS"], "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/Headers/Private/Yoga\" \"$(PODS_ROOT)/DoubleConversion\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage/React_FabricImage.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTFabric/RCTFabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-utils/React_utils.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-ImageManager/React_ImageManager.framework/Headers\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-rendererdebug/React_rendererdebug.framework/Headers\"") + assert_equal(spec.pod_target_xcconfig["HEADER_SEARCH_PATHS"], "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/Headers/Private/Yoga\" \"$(PODS_ROOT)/DoubleConversion\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage/React_FabricImage.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTFabric/RCTFabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-utils/React_utils.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-ImageManager/React_ImageManager.framework/Headers\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-rendererdebug/React_rendererdebug.framework/Headers\"") assert_equal(spec.pod_target_xcconfig["CLANG_CXX_LANGUAGE_STANDARD"], "c++17") assert_equal(spec.pod_target_xcconfig["OTHER_CPLUSPLUSFLAGS"], "$(inherited) -DRCT_NEW_ARCH_ENABLED=1 -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1") assert_equal( @@ -170,7 +170,7 @@ class NewArchitectureTests < Test::Unit::TestCase # Assert assert_equal(spec.compiler_flags, "-Wno-nullability-completeness #{NewArchitectureHelper.folly_compiler_flags}") - assert_equal(spec.pod_target_xcconfig["HEADER_SEARCH_PATHS"], "#{other_flags} \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/Headers/Private/Yoga\" \"$(PODS_ROOT)/DoubleConversion\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage/React_FabricImage.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTFabric/RCTFabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-utils/React_utils.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-ImageManager/React_ImageManager.framework/Headers\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-rendererdebug/React_rendererdebug.framework/Headers\"") + assert_equal(spec.pod_target_xcconfig["HEADER_SEARCH_PATHS"], "#{other_flags} \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/Headers/Private/Yoga\" \"$(PODS_ROOT)/DoubleConversion\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage/React_FabricImage.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTFabric/RCTFabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-utils/React_utils.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-ImageManager/React_ImageManager.framework/Headers\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-rendererdebug/React_rendererdebug.framework/Headers\"") assert_equal(spec.pod_target_xcconfig["CLANG_CXX_LANGUAGE_STANDARD"], "c++17") assert_equal( spec.dependencies, diff --git a/packages/react-native/scripts/cocoapods/__tests__/utils-test.rb b/packages/react-native/scripts/cocoapods/__tests__/utils-test.rb index 1d65edb1f97..690145b6144 100644 --- a/packages/react-native/scripts/cocoapods/__tests__/utils-test.rb +++ b/packages/react-native/scripts/cocoapods/__tests__/utils-test.rb @@ -666,7 +666,7 @@ class UtilsTests < Test::Unit::TestCase # Assert user_project_mock.build_configurations.each do |config| received_search_path = config.build_settings["HEADER_SEARCH_PATHS"] - expected_search_path = "$(inherited) ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers/platform/ios ${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios" + expected_search_path = "$(inherited) ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers/platform/ios ${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx ${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios" assert_equal(expected_search_path, received_search_path) end @@ -674,7 +674,7 @@ class UtilsTests < Test::Unit::TestCase if pod_name == "SecondTarget" target_installation_result.native_target.build_configurations.each do |config| received_search_path = config.build_settings["HEADER_SEARCH_PATHS"] - expected_Search_path = "$(inherited) \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/boost\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTFabric/RCTFabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage/React_FabricImage.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Graphics/React_graphics.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/imagemanager/platform/ios\"" + expected_Search_path = "$(inherited) \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/boost\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTFabric/RCTFabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage/React_FabricImage.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Graphics/React_graphics.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/imagemanager/platform/ios\"" assert_equal(received_search_path, expected_Search_path) end else diff --git a/packages/react-native/scripts/cocoapods/codegen_utils.rb b/packages/react-native/scripts/cocoapods/codegen_utils.rb index 1f983213f38..c3313468fbf 100644 --- a/packages/react-native/scripts/cocoapods/codegen_utils.rb +++ b/packages/react-native/scripts/cocoapods/codegen_utils.rb @@ -93,6 +93,7 @@ class CodegenUtils "\"$(PODS_ROOT)/DoubleConversion\"", "\"$(PODS_TARGET_SRCROOT)\"", "\"$(PODS_CONFIGURATION_BUILD_DIR)/React-Fabric/React_Fabric.framework/Headers\"", + "\"$(PODS_CONFIGURATION_BUILD_DIR)/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx\"", "\"$(PODS_CONFIGURATION_BUILD_DIR)/React-FabricImage/React_FabricImage.framework/Headers\"", "\"$(PODS_CONFIGURATION_BUILD_DIR)/React-graphics/React_graphics.framework/Headers\"", "\"$(PODS_CONFIGURATION_BUILD_DIR)/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\"", diff --git a/packages/react-native/scripts/cocoapods/new_architecture.rb b/packages/react-native/scripts/cocoapods/new_architecture.rb index 8688c291cb5..95658203207 100644 --- a/packages/react-native/scripts/cocoapods/new_architecture.rb +++ b/packages/react-native/scripts/cocoapods/new_architecture.rb @@ -105,6 +105,7 @@ class NewArchitectureHelper header_search_paths << "\"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers\"" header_search_paths << "\"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\"" header_search_paths << "\"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers\"" + header_search_paths << "\"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx\"" header_search_paths << "\"${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage/React_FabricImage.framework/Headers\"" header_search_paths << "\"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers\"" header_search_paths << "\"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\"" diff --git a/packages/react-native/scripts/cocoapods/utils.rb b/packages/react-native/scripts/cocoapods/utils.rb index 5ca482a1693..2f66018339b 100644 --- a/packages/react-native/scripts/cocoapods/utils.rb +++ b/packages/react-native/scripts/cocoapods/utils.rb @@ -228,6 +228,7 @@ class ReactNativePodsUtils header_search_paths = self.add_search_path_if_not_included(header_search_paths, "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers") header_search_paths = self.add_search_path_if_not_included(header_search_paths, "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core") header_search_paths = self.add_search_path_if_not_included(header_search_paths, "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers/platform/ios") + header_search_paths = self.add_search_path_if_not_included(header_search_paths, "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx") header_search_paths = self.add_search_path_if_not_included(header_search_paths, "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers") header_search_paths = self.add_search_path_if_not_included(header_search_paths, "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios") @@ -384,6 +385,7 @@ class ReactNativePodsUtils ReactNativePodsUtils.update_header_paths_if_depends_on(target_installation_result, "React-RCTFabric", [ "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTFabric/RCTFabric.framework/Headers\"", "\"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx\"", "\"${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage/React_FabricImage.framework/Headers\"", "\"${PODS_CONFIGURATION_BUILD_DIR}/React-Graphics/React_graphics.framework/Headers\"", "\"${PODS_CONFIGURATION_BUILD_DIR}/React-Graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\"",