diff --git a/packages/react-native/Libraries/Image/__tests__/Image-itest.js b/packages/react-native/Libraries/Image/__tests__/Image-itest.js index cd73f21af60..ae74a839cc0 100644 --- a/packages/react-native/Libraries/Image/__tests__/Image-itest.js +++ b/packages/react-native/Libraries/Image/__tests__/Image-itest.js @@ -288,6 +288,46 @@ describe('', () => { }); }); }); + + describe('resizeMode', () => { + it('is set to "cover" by default', () => { + const root = Fantom.createRoot(); + + Fantom.runTask(() => { + root.render(); + }); + + expect(root.getRenderedOutput({props: ['resizeMode']}).toJSX()).toEqual( + , + ); + + Fantom.runTask(() => { + root.render(); + }); + + expect(root.getRenderedOutput({props: ['resizeMode']}).toJSX()).toEqual( + , + ); + }); + + (['stretch', 'contain', 'repeat', 'center'] as const).forEach( + resizeMode => { + it(`can be set to "${resizeMode}"`, () => { + const root = Fantom.createRoot(); + + Fantom.runTask(() => { + root.render( + , + ); + }); + + expect( + root.getRenderedOutput({props: ['resizeMode']}).toJSX(), + ).toEqual(); + }); + }, + ); + }); }); describe('ref', () => { diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.cpp b/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.cpp index 19d5501f09b..dca045f67ce 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.cpp @@ -304,8 +304,30 @@ SharedDebugStringConvertibleList ImageProps::getDebugProps() const { SharedDebugStringConvertibleList{ debugStringConvertibleItem( "blurRadius", blurRadius, imageProps.blurRadius), + debugStringConvertibleItem( + "resizeMode", + toString(resizeMode), + toString(imageProps.resizeMode)), }; } + +inline std::string toString(ImageResizeMode resizeMode) { + switch (resizeMode) { + case ImageResizeMode::Cover: + return "cover"; + case ImageResizeMode::Contain: + return "contain"; + case ImageResizeMode::Stretch: + return "stretch"; + case ImageResizeMode::Center: + return "center"; + case ImageResizeMode::Repeat: + return "repeat"; + case ImageResizeMode::None: + return "none"; + } +} + #endif } // namespace facebook::react diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.h b/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.h index 43cdc51ac5b..1b753d7ffa0 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.h +++ b/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.h @@ -34,7 +34,7 @@ class ImageProps final : public ViewProps { ImageSources sources{}; ImageSource defaultSource{}; ImageSource loadingIndicatorSource{}; - ImageResizeMode resizeMode{ImageResizeMode::Stretch}; + ImageResizeMode resizeMode{ImageResizeMode::Cover}; Float blurRadius{}; EdgeInsets capInsets{}; SharedColor tintColor{};