diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.cpp b/packages/react-native/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.cpp new file mode 100644 index 00000000000..a8c21a18718 --- /dev/null +++ b/packages/react-native/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.cpp @@ -0,0 +1,27 @@ +/* + * 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 "ImageComponentDescriptor.h" +#include + +namespace facebook::react { + +ImageComponentDescriptor::ImageComponentDescriptor( + const ComponentDescriptorParameters& parameters) + : ConcreteComponentDescriptor(parameters), + imageManager_(std::make_shared(contextContainer_)){}; + +void ImageComponentDescriptor::adopt(ShadowNode& shadowNode) const { + ConcreteComponentDescriptor::adopt(shadowNode); + + auto& imageShadowNode = static_cast(shadowNode); + + // `ImageShadowNode` uses `ImageManager` to initiate image loading and + // communicate the loading state and results to mounting layer. + imageShadowNode.setImageManager(imageManager_); +} +} // namespace facebook::react diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h b/packages/react-native/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h index a59a796273a..4be803fa5ff 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h +++ b/packages/react-native/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h @@ -9,33 +9,24 @@ #include #include -#include -#include namespace facebook::react { +class ImageManager; + /* * Descriptor for component. */ class ImageComponentDescriptor final : public ConcreteComponentDescriptor { public: - ImageComponentDescriptor(const ComponentDescriptorParameters& parameters) - : ConcreteComponentDescriptor(parameters), - imageManager_(std::make_shared(contextContainer_)){}; + explicit ImageComponentDescriptor( + const ComponentDescriptorParameters& parameters); - void adopt(ShadowNode& shadowNode) const override { - ConcreteComponentDescriptor::adopt(shadowNode); - - auto& imageShadowNode = static_cast(shadowNode); - - // `ImageShadowNode` uses `ImageManager` to initiate image loading and - // communicate the loading state and results to mounting layer. - imageShadowNode.setImageManager(imageManager_); - } + void adopt(ShadowNode& shadowNode) const override; private: - const SharedImageManager imageManager_; + const std::shared_ptr imageManager_; }; } // namespace facebook::react