-
Notifications
You must be signed in to change notification settings - Fork 1.2k
[Fabric] Implement onProgress for Image #14493
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
anupriya13
merged 6 commits into
microsoft:main
from
anupriya13:user/anuverma/onProgressImage
Apr 10, 2025
Merged
[Fabric] Implement onProgress for Image #14493
anupriya13
merged 6 commits into
microsoft:main
from
anupriya13:user/anuverma/onProgressImage
Apr 10, 2025
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
acoates-ms
requested changes
Apr 9, 2025
vnext/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp
Outdated
Show resolved
Hide resolved
acoates-ms
approved these changes
Apr 10, 2025
acoates-ms
pushed a commit
to acoates-ms/react-native-windows
that referenced
this pull request
Apr 22, 2025
acoates-ms
added a commit
that referenced
this pull request
Apr 24, 2025
…se version (#14606) * [Fabric] Add Support for ScrollProvider (#14411) * Save State * Continue ScrollProvider Implementation * Complete Implementation * Add Test Infra * Change files * Format + Remove Unneeded * Add Override * Update Snapshots * Add Comments * [Fabric] Implement textAlign prop in TextInput (#14407) * Introduce support for textAlign * Add playground textinputs demonstrating textAlign * Oops, let's remove textAlignOnUpdateProps * Change files * Lint fixes * Nit * Make textAlign to be of facebook::react::TextAlignment type * Lint fixes * Don't reinvent the wheel :D * Nit: yarn format * Button Should Pass onAccessibilityTap Prop to Native Code (#14444) * Button should pass onAccessibilityTap to native * Change files * [Fabric] Allow text components to have children (#14438) * get images/views inline with text on fabric * add back in comments * Change files * remove duplicate code * add baseline for textinput * add checks for paper vs fabric * try fixing image * add resize:none and tests * fix override * comment out test * fix tests * fix typo * try to fix tests * comment out text test * mark windows-specific changes * Allow TextInput to scroll (#14448) * Allow TextInput to scroll * Change files * update snapshot * Implement onScrollBeginDrag property for ScrollView for fabric (#14446) Implement onScrollBeginDrag property for ScrollView for fabric (#14446) * [Fabric] Implement letterSpacing for TextInput (#14460) * Implement letterSpacing for TextInput * Change files * Update react-native-windows-9ee8d633-698c-476d-9334-170be2c5dc25.json * Update textinput.tsx * optimize code * Added tooltip property for Text (#14470) * Added tooltip property in Text.windows.js TextProps.windows.js for typescript to recognise it as an attribute of Text component * Added override Text.d.ts to src-win/Libraries/Text/ to add tooltip prop to Text component * Change files * Added Sample/text for tooltip prop tests * Added TextPropsWindows to include windows specific prop tooltip * updated TextProps interface to extednd TextPropsWindows * lint fix for Sample/text.tsx file --------- Co-authored-by: Abhijeet Jha <abhijeetjha@microsoft.com> * [Fabric] Add Custom Font Family in Text Input (#14495) * [Fabric] Fix Bug in Narrator Navigation (#14498) * Fix Narrator Bug * Change files * Revert Codegen Changes * Implemented on onEndEditing for TextInput component (#14489) * implemented on onEndEditing * Change files * Update textinput.tsx to remove keyboard=dismiss which actually will cause blur or lost focus implicitly * lint fixes * updated legacy textInput snapshot for component update --------- Co-authored-by: Abhijeet Jha <abhijeetjha@microsoft.com> * [Fabric] Add ImageRequestParams for Image Component (#14494) * [Fabric] Implement onProgress for Image (#14493) * [Fabric] Implement SpellCheck and AutoCorrect for TextInput (#14509) * Textinput double clicking selects text (#14515) * added check for double click on textInput component view connecting it to WM_LBUTTONDBLCLK * Change files * updated for lint fix * updated to remove position( Distance check) --------- Co-authored-by: Abhijeet Jha <abhijeetjha@microsoft.com> * [Fabric] Implement decelerationRate in ScrollView (#14528) * [Fabric] Implement showsVerticalScrollIndicatorValue and showsHorizontalScrollIndicatorValue for ScrollView (#14526) * SetProperties is not exposed on ReactNativeIsland (#14517) * Add SetAppProperties method to ReactNativeIsland * Change files * rename SetAppProperties to SetProperties * change file * fix * fix * [Fabric] Implement Image body in Image Source RequestImage API (#14568) * Implement body in Image Source * Change files * Add test in playground * [Fabric] Implement zoomScale, maximumZoomScale and minimumZoomScale in ScrollView (#14562) * Implemet maximumZoomScale and minimumZoomScalein ScrollView * Change files * lint fix * Add zoomScale * Implement adjustsFontSizeToFit property for Text in Fabric (#14519) * Implementation of adjustFontSizeToFit * Final Changes using TextLayout * Lint Issue Fixes * Change files * prop change detection added * review Changes and E2E test cases added * Lint and Format Changes added * Test Cases Fix added * Update SnapShot * Removed the additional Check for resizing Font * Updated SnapShot * Review Changes * Lint and Format Changes --------- Co-authored-by: Vineeth K <kvineeth@microsoft.com> * [Fabric] Implement scrollEventThrottle for ScrollView (#14555) * fix build * fixes * fix typo * fixes * fixes * Update WindowsAppSDK version to 1.7.250401001 * fix --------- Co-authored-by: Chiara Mooney <34109996+chiaramooney@users.noreply.github.com> Co-authored-by: Daniel Ayala <14967941+danielayala94@users.noreply.github.com> Co-authored-by: Tatiana Kapos <tatianakapos@microsoft.com> Co-authored-by: Anupriya Verma <54227869+anupriya13@users.noreply.github.com> Co-authored-by: Abhijeet Jha <74712637+iamAbhi-916@users.noreply.github.com> Co-authored-by: Abhijeet Jha <abhijeetjha@microsoft.com> Co-authored-by: Vineeth <66076509+vineethkuttan@users.noreply.github.com> Co-authored-by: Vineeth K <kvineeth@microsoft.com>
acoates-ms
pushed a commit
to acoates-ms/react-native-windows
that referenced
this pull request
May 29, 2025
acoates-ms
added a commit
that referenced
this pull request
May 30, 2025
* Initial support for UIA and tab navigation for a child Island (#14305) * Basic support for stitching the UIA tree for a ContentIslandComponentView's child * Updated comment * Change files * Support shift+tab, and move Automation event handlers to ContentIslandComponentView * Allow portals to have independent layout constraints and scale factor (#14315) * Allow portals to have independent layout constraints and scale factor * format * change files * fix * Round Focus visuals by default, fix nudge rendering (#14312) * Round Focus visuals by default, fix nudge rendering * Change files * Fix react devtools hitting an assert on launch (#14320) * ignore unsupported methods * delete Super::DispatchCommand call * Change files * [Fabric] Fix PlatformColor (#14325) * Fix platform color * Change files * Add missing theme colors * snapshots * TurboModule spec checking should accept hstring for string arguments (#14322) * TurboModule spec checking should accept hstring for string arguments * Change files * example * Fix Number.h not copied from react-native core (#14331) ## Description ### Type of Change - Bug fix (non-breaking change which fixes an issue) ### Why react-native-windows currently maintains its own forked C++ TurboModule bridging files. For untouched stuff we copy JSI and TurboModule files from core react-native in `Layout-MSRN-Headers.ps1`. However, this script misses to copy `Number.h`. This causes compilation error when trying to import `react/bridging/Bridging.h`, which would be the case for example when using codegen to generate C++ TurboModule (JSI) bindings (note: this is for C++ JSI TurboModules, not react-native-windows's TurboModule system). ``` PS C:\Users\CocoT1\Projects\rn77> yarn example windows [...] Time Elapsed 00:00:00.61 ✔ Restoring NuGet packages ✔ Auto-linking... Success: No auto-linking changes necessary. (69ms) ✔ Found Solution: C:\Users\CocoT1\Projects\rn77\example\windows\rn77Example.sln ℹ Build configuration: Debug ℹ Build platform: x64 ✖ Building Solution: Generating Code... ✖ Build failed with message 4:7>C:\Users\CocoT1\.nuget\packages\microsoft.reactnative.cxx\0.77.0-fabric\tools\Microsoft.ReactNative.Cxx\ReactCommon\react\bridging\Bridging.h(18,10): error C1083: Cannot open include file: 'react/bridging/Number.h': No such file or directory [C:\Users\CocoT1\Projects\rn77\example\windows\rn77Example\rn77Example.vcxproj]. Check your build configuration. ``` ### What I'm changing the `Layout-MSRN-Headers.ps1` script to also copy `Number.h`. I think this should be enough for the nuget the contain to file, but I'm no expert here. ## Testing Monkeypatched by copying over Number.h to the microsoft.reactnative.cxx nuget (`C:\Users\CocoT1\.nuget\packages\microsoft.reactnative.cxx\0.77.0-fabric\tools\Microsoft.ReactNative.Cxx\ReactCommon\react\bridging\`). Works all good. I don't know how to run the `Layout-MSRN-Headers.ps1` script locally. Here's a create-react-native-library project: https://github.com/hsjoberg/rnw-cxx-turbomodule Note: it will fail to build unless you copy Number.h over to the nuget cache as explained earlier. * Fix stale focus rects left in UI when last focusable component is removed (#14359) * Fix stale focus rects left in UI when last focusable component is removed * Change files --------- Co-authored-by: Tatiana Kapos <tatianakapos@microsoft.com> * Fix issue when calling arrange on an RN Island during load (#14362) * Fix issue when calling arrange on an RN Island during load * Change files --------- Co-authored-by: Tatiana Kapos <tatianakapos@microsoft.com> * Fix tooltips in high dpi (#14397) * Fix tooltips in high dpi * Change files * format * tooltips dont respect textscalefactor * Fix build issue building component codegen using clang (#14393) * Fix build issue building component codegen using clang * Change files * Components do not lose hover state if pointer leaves window before it leaves the component (#14375) * Components do not lost hover state if pointer leaves window before it leaves the component * format * Change files --------- Co-authored-by: Tatiana Kapos <tatianakapos@microsoft.com> * Property updates switching between PlatformColors would no-op (#14398) * Property updates switching between PlatformColors would no-op * Change files * format * Fix bool operator on transparent colors returning false (#14413) * Fix crash loading logbox * Fix bool operator on transparent colors returning false * Change files * format * [Fabric] Implement textAlign prop in TextInput (#14407) * Introduce support for textAlign * Add playground textinputs demonstrating textAlign * Oops, let's remove textAlignOnUpdateProps * Change files * Lint fixes * Nit * Make textAlign to be of facebook::react::TextAlignment type * Lint fixes * Don't reinvent the wheel :D * Nit: yarn format * [Fabric] Allow text components to have children (#14438) * get images/views inline with text on fabric * add back in comments * Change files * remove duplicate code * add baseline for textinput * add checks for paper vs fabric * try fixing image * add resize:none and tests * fix override * comment out test * fix tests * fix typo * try to fix tests * comment out text test * mark windows-specific changes * Allow TextInput to scroll (#14448) * Allow TextInput to scroll * Change files * update snapshot * Implement onScrollBeginDrag property for ScrollView for fabric (#14446) Implement onScrollBeginDrag property for ScrollView for fabric (#14446) * [Fabric] Implement letterSpacing for TextInput (#14460) * Implement letterSpacing for TextInput * Change files * Update react-native-windows-9ee8d633-698c-476d-9334-170be2c5dc25.json * Update textinput.tsx * optimize code * Added tooltip property for Text (#14470) * Added tooltip property in Text.windows.js TextProps.windows.js for typescript to recognise it as an attribute of Text component * Added override Text.d.ts to src-win/Libraries/Text/ to add tooltip prop to Text component * Change files * Added Sample/text for tooltip prop tests * Added TextPropsWindows to include windows specific prop tooltip * updated TextProps interface to extednd TextPropsWindows * lint fix for Sample/text.tsx file --------- Co-authored-by: Abhijeet Jha <abhijeetjha@microsoft.com> * [Fabric] Add Custom Font Family in Text Input (#14495) * [Fabric] Fix Bug in Narrator Navigation (#14498) * Fix Narrator Bug * Change files * Revert Codegen Changes * Implemented on onEndEditing for TextInput component (#14489) * implemented on onEndEditing * Change files * Update textinput.tsx to remove keyboard=dismiss which actually will cause blur or lost focus implicitly * lint fixes * updated legacy textInput snapshot for component update --------- Co-authored-by: Abhijeet Jha <abhijeetjha@microsoft.com> * [Fabric] Add ImageRequestParams for Image Component (#14494) * [Fabric] Implement onProgress for Image (#14493) * [Fabric] Implement SpellCheck and AutoCorrect for TextInput (#14509) * Textinput double clicking selects text (#14515) * added check for double click on textInput component view connecting it to WM_LBUTTONDBLCLK * Change files * updated for lint fix * updated to remove position( Distance check) --------- Co-authored-by: Abhijeet Jha <abhijeetjha@microsoft.com> * [Fabric] Implement decelerationRate in ScrollView (#14528) * [Fabric] Implement showsVerticalScrollIndicatorValue and showsHorizontalScrollIndicatorValue for ScrollView (#14526) * SetProperties is not exposed on ReactNativeIsland (#14517) * Add SetAppProperties method to ReactNativeIsland * Change files * rename SetAppProperties to SetProperties * change file * fix * fix * [Fabric] Implement Image body in Image Source RequestImage API (#14568) * Implement body in Image Source * Change files * Add test in playground * [Fabric] Implement zoomScale, maximumZoomScale and minimumZoomScale in ScrollView (#14562) * Implemet maximumZoomScale and minimumZoomScalein ScrollView * Change files * lint fix * Add zoomScale * Implement adjustsFontSizeToFit property for Text in Fabric (#14519) * Implementation of adjustFontSizeToFit * Final Changes using TextLayout * Lint Issue Fixes * Change files * prop change detection added * review Changes and E2E test cases added * Lint and Format Changes added * Test Cases Fix added * Update SnapShot * Removed the additional Check for resizing Font * Updated SnapShot * Review Changes * Lint and Format Changes --------- Co-authored-by: Vineeth K <kvineeth@microsoft.com> * [Fabric] Implement scrollEventThrottle for ScrollView (#14555) * Update WindowsAppSDK version to 1.7.250401001 (#14605) * Update WindowsAppSDK version to 1.7.250401001 * Change files * Update nuget lock files * more nuget lock file updates * Bump webview props * updated lock files * Implement accessibilityLevel for Fabric (#14593) * Implement accessibilityLevel for Fabric * Change files * Added Test Cases for the accessibility Label, Level etc. * Updating snapshots --------- Co-authored-by: Vineeth K <kvineeth@microsoft.com> * [Fabric] Implement hidesWhenStopped in ActivityIndicator (#14615) * Fix: Text component pressRetentionOffset issue on Windows (#14596) * Fix: Text component pressRetentionOffset issue on Windows * Change files * lint formatting fixed --------- Co-authored-by: Abhijeet Jha <abhijeetjha@microsoft.com> * [Fabric] Implement minimumFontScale in Text (#14617) * Fix InitialProps (#14620) * Fix InitialProps * Change files * [Fabric] Implement the onPressIn property for the fabric implementation of TextInput (#14480) * Implemented OnPressIn event for textinput --------- * Implement OnScrollEndDrag Event Handler for ScrollView (#14473) * Implement onScrollEndDrag prop * Change files * lint fix * Address comments * add noexcept * Address feedback * Fix : Incorrect view access to obtain ContentIsland from for the DesktopPopupSiteBridge (#14628) * solved access read violation due to incorrect view access to obtain contentIsland * rolling back text.tsx * Update end of line text.tsx * rolled back Playground-Composition.vcxproj * rolled back Playground-Composition.vcxproj * fixed lint Playground-Composition.vcxproj * master Playground-Composition.vcxproj * rolled back Playground-Composition.vcxproj * indentation fix Playground-Composition.vcxproj * Revert unintended changes in Playground-Composition.vcxproj * added patch for winUiex[erimental removal * Change files --------- Co-authored-by: Abhijeet Jha <abhijeetjha@microsoft.com> Co-authored-by: Vineeth <66076509+vineethkuttan@users.noreply.github.com> * [Fabric] Implement selectTextOnFocus prop in TextInput (#14641) * fix change file type * format * Bump hermes version - enable hermes native microtasks (#14635) * Bump hermes version * Change files * Bump JSI_VERSION to 19 * Opt into microtasks * buidl fix * update playground packages.lock with the script * temp: gather crash dmp * try larger machine * Pickup microsoft/node-api-jsi#13 * Update hermes with uap nuget fix * [Fabric] Implementation of accessibiltyAnnotation and adding support for IAnnotationProvider (#14626) * Implement accessibilityAnnotation for RNW Fabric * AccessibilityAnnotation Prop implementation final changes * Playground Changes * IAnnotationProvider Implementation * Adding CompositionAnnotationProvider to the project * Adding Test Cases * Change files * Lint issue Fixes * Lint fix * Updating SnapShots * Review Changes * Updating snapshot * Properly hook up root uia provider to island (#14643) * Properly hook up root uia provider to island * Change files * Modal : Added Titlebar , title , X handling and movable for windows (#14636) * addded titlebar , title handling , X handling , resizable * Change files * lint and format fix * removed debug logs and resizable property * removed unused imports from modalHostView .cpp file * lint and format fix * Update Modal.windows.js syntax after resolve conflict * updated overrides * updated rctmodalhostview file override structure --------- Co-authored-by: Abhijeet Jha <abhijeetjha@microsoft.com> * [Fabric] Implementation of accessibilityAccessKey and accessibilityItemType (#14658) * {Fabric] Implementation of accessibilityAccessKey and accessibilityItemType * Change Files * Updating snapShot * Implement CallInvoker as replacement for JSDispatcher (#14648) * Remove usage of JSDispatcher in various built-in modules * Change files * format * Implement public JSDispatcher on top of CallInvoker * format * Add ReactContext.CallInvoker and JsiInitializers * format * format * build fix * build fixes * Cleanup * Add runtime handle to instance created and instance loaded events * fix * fix * fix * fix * Remove unused JSDispatcherWriter * Bump folly to 2024.10.14.00 (#14532) * merge in folly 2024.10.14.00 * download fastfloat into node_modules * Change files * fix includes * fix cachelocality * fix desktop.dll * clean paths and fix ARM64EC * add FastFloatCommitHash to folly CGManifest * fix types * revert package.lock and fix json file path * manually fix spacing * fix * feedback * Scale loading bar text when island is super small (#14680) * Scale loading bar text when island is super small * Change files * Fix crash when reloading an instance with an active ReactNativeIsland (#14676) * Fix crash when reloading an instance with an active ReactNativeIsland * Change files * Update simple sample to use function component rather than component class * More cleanup * Fix warnings * Reenable optimization in TMs to avoid going through a dynamic for callbacks/promises (#14691) * Reenable optimization in TMs to avoid going through a dynamic for callbacks/promises * Change files * [Fabric] Implement maxFontSizeMultiplier in Text (#14622) * Clean up error messages (#14695) * Clean up error messages * Change files * JSValue exports data fields - should export value reference accessors (#14707) * JSValue shouldn't export data fields, which make it hard to use MS.RN.Cxx across dll boundaries * Change files * missing functions * fix * Fix unreferenced parameter warning in glog stub (#14708) * Fix warning in glog stub * Change files * Update folly exports from rn-win32 (#14710) * Update folly exports from rn-win32 * Change files * change files * lint fix * lint fix * update override * update snapshots * arm64ec fix * Pointer events (#14713) * PointerEvent fixes * Change files * format * Fix integration test --------- Co-authored-by: JesseCol <50150435+JesseCol@users.noreply.github.com> Co-authored-by: Tatiana Kapos <tatianakapos@microsoft.com> Co-authored-by: Hampus Sjöberg <hampus.sjoberg@protonmail.com> Co-authored-by: Daniel Ayala <14967941+danielayala94@users.noreply.github.com> Co-authored-by: Anupriya Verma <54227869+anupriya13@users.noreply.github.com> Co-authored-by: Abhijeet Jha <74712637+iamAbhi-916@users.noreply.github.com> Co-authored-by: Abhijeet Jha <abhijeetjha@microsoft.com> Co-authored-by: Chiara Mooney <34109996+chiaramooney@users.noreply.github.com> Co-authored-by: Vineeth <66076509+vineethkuttan@users.noreply.github.com> Co-authored-by: Vineeth K <kvineeth@microsoft.com> Co-authored-by: Harini Malothu <harinimalothu17@gmail.com> Co-authored-by: Sharath Manchala <10109130+sharath2727@users.noreply.github.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
API: Completion
Area: Fabric
Support Facebook Fabric
Area: Image
enhancement
New Architecture
Broad category for issues that apply to the RN "new" architecture of Turbo Modules + Fabric
Parity: Fabric vs. Paper
RNW Fabric does not look or behave like RNW Paper
Workstream: Component Parity
Close the parity gap between RNW and RN for core RN components and their supporting APIs.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Type of Change
Why
What is the motivation for this change? Add a few sentences describing the context and overall goals of the pull request's commits.
Implement the onProgress property for the fabric implementation of Image.
Note: At one point there was a TODO for this in our new fabric code.
This property was not available in RNW Paper but could be implemented for Fabric.
See https://reactnative.dev/docs/image#onprogress for details.
Resolves #13118 and #13752
What
What changes were made to the codebase to solve the bug, add the functionality, etc. that you specified above.
Added a progress Callback during request start for image downloading that keeps track of progress and invokes
observerCoordinator->nativeImageResponseProgress
Refer:
https://learn.microsoft.com/en-us/uwp/api/windows.web.http.httpstringcontent.writetostreamasync?view=winrt-26100
https://learn.microsoft.com/en-us/uwp/api/windows.web.http.httpstringcontent.readasinputstreamasync?view=winrt-26100
Key Differences between ReadAsInputStreamAsync and WriteToStreamAsync:
Screenshots
Add any relevant screen captures here from before or after your changes.
Testing
If you added tests that prove your changes are effective or that your feature works, add a few sentences here detailing the added test scenarios.
Optional: Describe the tests that you ran locally to verify your changes.
Changelog
Should this change be included in the release notes: indicate yes or no
Yes
Add a brief summary of the change to use in the release notes for the next release.
Implemented onProgress event for Image in Fabric new architecture.
Invoked on download progress.
Microsoft Reviewers: Open in CodeFlow