uno
uno copied to clipboard
fix: skia mobile StatusBar styling
GitHub Issue: closes https://github.com/unoplatform/uno-private/issues/1251
PR Type:
- ๐ Bugfix
What is the current behavior? ๐ค
Android:
- No support for edge-to-edge even though its enabled by default in Android 15+ and when using net9.0
iOS:
- StatusBar theme changing not working because needs the
UIViewControllerBasedStatusBarAppearanceto be false in the Info.plist
What is the new behavior? ๐
Android:
- Support for edge-to-edge StatusBar for Android 15+ and when using net9.0
- Now we use WindowInsetsCompat to control the BackgroundColor of the StatusBar
iOS:
- Set
UIViewControllerBasedStatusBarAppearanceto false in the samples so that StatusBar theme changing works (we already set it to false in new apps with the recommended template) - Now we add a subView on the StatusBar to change its BackgroundColor, similarly to whats happening with edge-to-edge for Android
PR Checklist โ
Please check if your PR fulfills the following requirements:
- [x] ๐ Commits must be following the Conventional Commits specification.
- [x] ๐งช Added Runtime tests, UI tests, or a manual test sample for the changes have been added (for bug fixes / features) (if applicable)
- [ ] ๐ Docs have been added/updated which fit documentation template (for bug fixes / features)
- [ ] ๐ผ๏ธ Validated PR
Screenshots Compare Test Runresults. - [x] โ Contains NO breaking changes
Other information โน๏ธ
Changing the BackgroundColor & ForegroundColor of the StatusBar should be working with both native and Skia renderers. The colors should update automatically, without needing to force a refresh of the visual states. There are differences in the code between Android >= 15 and Android < 15.
๐ค Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-20687/docs/index.html
๐ค Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-20687/wasm-skia-net9/index.html
๐ค Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-20687/docs/index.html
๐ค Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-20687/docs/index.html
๐ค Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-20687/wasm-skia-net9/index.html
๐ค Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-20687/wasm-skia-net9/index.html
The build 167617 found UI Test snapshots differences: android-28-net8: 25, android-28-net8-Snap: 42, ios: 255, ios-Snap: 984, skia-linux-screenshots: 78, skia-windows-screenshots: 251, wasm: 46, wasm-automated-net9.0-WinUI-Benchmarks-automated: 1, wasm-automated-net9.0-WinUI-Default-automated: 13, wasm-automated-net9.0-WinUI-RuntimeTests-0: 0, wasm-automated-net9.0-WinUI-RuntimeTests-1: 1, wasm-automated-net9.0-WinUI-RuntimeTests-2: 1
Details
-
android-28-net8: 25 changed over 824๐จ๐จ Comparison Details (first 20) ๐จ๐จ
ContentPresenter_Changing_ContentTemplate_Uno_UI_Samples_Content_UITests_ContentPresenter_ContentPresenter_Changing_ContentTemplateDetereminate_ProgressRing_Validation75_[#FF0000_#008000_#008000_#008000]_Progress-Ring-Value-75FocusManager_GetFocusedElement_Border_Validation_FocusManager_-_GetFocusedElement_-_Border_-_2_-_After_SelectionFocusManager_GetFocusedElement_Border_Validation_Uno_UI_Samples_Content_UITests_FocusTests_FocusManager_GetFocus_AutomatedDetereminate_ProgressRing_Validation25_[#FF0000_#008000_#FF0000_#FF0000]_Progress-Ring-Value-25FocusManager_GetFocusedElement_Border_Validation_FocusManager_-_GetFocusedElement_-_Border_-_1_-_Initial_StateListView_SelectedItems_SamplesApp_Windows_UI_Xaml_Controls_ListView_ListViewSelectedItemsProgressRing_IsEnabled_Running_UITests_Windows_UI_Xaml_Controls_ProgressRing_WindowsProgressRing_GH1220ProgressRing_Visibility_Collapsed_UITests_Windows_UI_Xaml_Controls_ProgressRing_WindowsProgressRing_GH1220When_Reading_Is_Attached_And_Detaches_UITests_Shared_Windows_Devices_GyrometerTestsUpDownEnabledTest_UITests_Shared_Microsoft_UI_Xaml_Controls_NumberBoxTests_NumberBoxPageWhen_Reading_Is_Attached_And_Waits_UITests_Shared_Windows_Devices_GyrometerTestsWebView_NavigateToAnchor_InitialWhen_Parent_PointerMoved_After_drag_on_non-scrolling_ScrollViewerWhen_SingleSelectionWithItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_PointersWhen_ExtendedSelectionWithoutItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_PointersWhen_SingleSelectionWithoutItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_PointersWhen_MultipleSelectionWithoutItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_PointersDetereminate_ProgressRing_Validation50_[#FF0000_#008000_#008000_#FF0000]_Progress-Ring-Value-50NativeCommandBar_Size_Uno_UI_Samples_Content_UITests_CommandBar_CommandBar_Dynamic
-
android-28-net8-Snap: 42 changed over 1069๐จ๐จ Comparison Details (first 20) ๐จ๐จ
MUX_NumberBox_UITests_Shared_Microsoft_UI_Xaml_Controls_NumberBoxTests_NumberBoxPageBrushes_ImageBrushChangingCornerRadius_Uno_UI_Samples_UITests_ImageBrushTestControl_ImageBrushChangingCornerRadiusCommandBar_Extensions_Uno_UI_Samples_Content_UITests_CommandBar_CommandBar_ExtensionsGesture_Recognizer_Pointer_Events_test_bench_UITests_Shared_Windows_UI_Input_GestureRecognizer_PointersEventsListView_ListViewSelectedItems_SamplesApp_Windows_UI_Xaml_Controls_ListView_ListViewSelectedItemsTeachingTip_UITests_Microsoft_UI_Xaml_Controls_TeachingTipTests_TeachingTipPage_UITests_Microsoft_UI_Xaml_Controls_TeachingTipTests_TeachingTipPageBorder_Border_Simple_Uno_UI_Samples_UITests_BorderTestsControl_Border_SimpleCommandBar_CommandBar_BackButtonTitle_UITests_Windows_UI_Xaml_Controls_CommandBar_BackButtonTitle_CommandBar_FrameCommandBar_CommandBar_Xaml_Automated_UITests_Shared_Windows_UI_Xaml_Controls_CommandBar_CommandBar_Xaml_AutomatedCommandBar_Examples_Uno_UI_Samples_Content_UITests_CommandBar_CommandBar_ExamplesListView_ListView_With_ListViews_Count_Measure_UITests_Shared_Windows_UI_Xaml_Controls_ListView_ListView_With_ListViews_Count_MeasureNavigationView_MUXControlsTestApp_NavigationViewRS4Page_MUXControlsTestApp_NavigationViewRS4PageComboBox_UITests_Windows_UI_Xaml_Controls_ComboBox_ComboBox_Description_UITests_Windows_UI_Xaml_Controls_ComboBox_ComboBox_DescriptionCommandBar_BackGesture_Uno_UI_Samples_Content_UITests_CommandBar_CommandBar_BackGestureBorder_Border_CornerRadius_Gradient_UITests_Windows_UI_Xaml_Controls_BorderTests_Border_CornerRadius_GradientIcons_UITests_Windows_UI_Xaml_Controls_SymbolIconTests_SymbolIcon_Generic_UITests_Windows_UI_Xaml_Controls_SymbolIconTests_SymbolIcon_GenericTransform_Basics_UITests_Shared_Windows_UI_Xaml_Media_Transform_BasicsBrushes_GenericApp_Views_Content_UITests_ImageBrushTestControl_ImageBrush_UniformToFill_GenericApp_Views_Content_UITests_ImageBrushTestControl_ImageBrush_UniformToFillComboBox_UITests_Shared_Windows_UI_Xaml_Controls_ComboBox_ComboBox_VisibleBounds_UITests_Shared_Windows_UI_Xaml_Controls_ComboBox_ComboBox_VisibleBoundsMediaPlayerElement_Mini_player_UITests_Shared_Windows_UI_Xaml_Controls_MediaPlayerElement_MediaPlayerElement_Minimal
-
ios: 255 changed over 255๐จ๐จ Comparison Details (first 20) ๐จ๐จ
Button_NestedButtons_Validation_nVentive_Umbrella_Views_UI_Samples_Content_UITests_ButtonTestsControl_Nested_ButtonsBasicExpressionTest_UITests_Microsoft_UI_Xaml_Controls_NumberBoxTests_NumberBox_ExpressionTestCheck_ListView_Swallows_Measure_UITests_Shared_Windows_UI_Xaml_Controls_ListView_ListView_With_ListViews_Count_MeasureCheck_ListView_Swallows_Measure_before_scrollFlyoutTest_When_NoOverlayInputPassThroughElement_Then_DontPassThrough_woAuto_UITests_Shared_Windows_UI_Xaml_Controls_Flyout_Flyout_OverlayInputPassThroughElementDecimalFormatterTest_UITests_Shared_Microsoft_UI_Xaml_Controls_NumberBoxTests_NumberBoxPageImage_Source_Nullify_UITests_Windows_UI_Xaml_Controls_ImageTests_Image_Source_NullifyKeyboard_Textbox_NoScrollViewer_Validation_1_-_Remove_Focus_on_filledTextBoxKeyboard_Textbox_NoScrollViewer_Validation_Uno_UI_Samples_Content_UITests_TextBoxControl_Input_Test_NoScrollViewer_AutomatedListView_ExpandableItemLarge_ExpandHeaderWithSingleItem_Validation_Initial_StateListView_ExpandableItemLarge_ExpandHeader_Validation_SamplesApp_Windows_UI_Xaml_Controls_ListView_ListView_Expandable_Item_LargeListView_ListViewVariableItemHeightLong_InitializesTest_SamplesApp_Windows_UI_Xaml_Controls_ListView_ListViewVariableItemHeightLongListView_ObservableCollection_Creation_Count_Scrolled1ListView_VirtualizePanelAdaptaterIdCache_SamplesApp_Windows_UI_Xaml_Controls_ListView_ListView_VirtualizePanelAdaptaterIdCachePivot_Non_PivotItemChange_Validation_UITests_Shared_Windows_UI_Xaml_Controls_Pivot_Pivot_CustomContent_AutomatedScreenshots_Image_Stretch_Alignment_Bigger_Mode-0Screenshots_Image_Stretch_Alignment_Bigger_Mode-2TextBox_AutoGrow_Vertically_Wrapping_Test_Uno_UI_Samples_Content_UITests_TextBoxControl_Input_Multiline_AutoHeightScreenshots_Image_Stretch_Alignment_Bigger_Mode-3TextBox_BeforeTextChanging_UITests_Shared_Windows_UI_Xaml_Controls_TextBoxTests_TextBox_BeforeTextChanging
-
ios-Snap: 984 changed over 986๐จ๐จ Comparison Details (first 20) ๐จ๐จ
Border_Border_AntiAlias_UITests_Windows_UI_Xaml_Controls_BorderTests_BorderAntiAliasBorder_Border_Simple_No_Background_With_TextBox_Uno_UI_Samples_UITests_BorderTestsControl_Border_Simple_No_Background_With_TextBoxBorder_OnepxThicknessandRadiusAndTextBlock_Uno_UI_Samples_UITests_BorderTestsControl_OnepxThicknessandRadiusAndTextBlockBorder_Uniform_Thickness_and_Large_Radius_Uno_UI_Samples_UITests_BorderTestsControl_Uniform_Thickness_and_Large_RadiusBrushes_ImageBrushShapeStretchesAlignments_UITests_Windows_UI_Xaml_Media_ImageBrushTests_ImageBrushShapeStretchesAlignmentsBrushes_PathImageBrushfill_Uno_UI_Samples_UITests_ImageBrushTestControl_PathImageBrushfillBrushes_UITests_Windows_UI_Xaml_Media_GradientBrushTests_LinearGradientBrush_Change_Stops_UITests_Windows_UI_Xaml_Media_GradientBrushTests_LinearGradientBrush_Change_StopsBrushes_Uno_UI_Samples_UITests_ImageBrushTestControl_ImageBrushAlignmentXY2_Uno_UI_Samples_UITests_ImageBrushTestControl_ImageBrushAlignmentXY2Buttons_Hyperlink_Disabled_nVentive_Umbrella_Views_UI_Samples_Content_UITests_ButtonTestsControl_Hyperlink_DisabledButtons_Nested_Buttons_nVentive_Umbrella_Views_UI_Samples_Content_UITests_ButtonTestsControl_Nested_ButtonsClipping_UITests_Shared_Windows_UI_Xaml_Clipping_ClippingRoundedCorners_UITests_Shared_Windows_UI_Xaml_Clipping_ClippingRoundedCornersClipping_UITests_Shared_Windows_UI_Xaml_Clipping_ClippingToControlBounds_UITests_Shared_Windows_UI_Xaml_Clipping_ClippingToControlBoundsContentPresenter_ContentPresenter_Content_DataContext_Uno_UI_Samples_Content_UITests_ContentPresenter_ContentPresenter_Content_DataContextContentPresenter_ContentPresenter_ImplicitContent_UITests_Shared_Windows_UI_Xaml_Controls_ContentPresenter_ContentPresenter_ImplicitContentDefault_UITests_Windows_UI_Xaml_Controls_ComboBox_ComboBox_Dropdown_Background_4418_UITests_Windows_UI_Xaml_Controls_ComboBox_ComboBox_Dropdown_Background_4418Default_UITests_Windows_UI_Xaml_Controls_CommandBar_CommandBar_Native_Frame_UITests_Windows_UI_Xaml_Controls_CommandBar_CommandBar_Native_FrameFlyouts_Flyout_Attached_UITests_Shared_Windows_UI_Xaml_Controls_Flyout_Flyout_AttachedFlyouts_Flyout_ButtonInContent_UITests_Shared_Windows_UI_Xaml_Controls_Flyout_Flyout_ButtonInContentFocus_Uno_UI_Samples_Content_UITests_FocusTests_FocusManager_FocusDirection_Uno_UI_Samples_Content_UITests_FocusTests_FocusManager_FocusDirectionFonts_UITests_Windows_UI_Xaml_Media_FontTests_DynamicFont_UITests_Windows_UI_Xaml_Media_FontTests_DynamicFont
-
skia-linux-screenshots: 78 changed over 2250๐จ๐จ Comparison Details (first 20) ๐จ๐จ
Buttons.png-darkDisplayInformation.png-darkButtons.pngDropDownButtonPage.png-darkDropDownButtonPage.pngExamples.pngExpanderColorValidationPage.png-darkExpanderColorValidationPage.pngClipboardTests.pngImageIconPage.png-darkImageIconPage.pngGamepad_CurrentReading.png-darkGamepad_CurrentReading.pngGamepad_Enumeration.png-darkGamepad_Enumeration.pngImageBrushInList.png-darkImageBrushInList.pngImage_Stretch_None.png-darkImage_Stretch_None.pngDoubleImageBrushInList.png-dark
-
skia-windows-screenshots: 251 changed over 2250๐จ๐จ Comparison Details (first 20) ๐จ๐จ
DoubleAnimation opacity final state.png-darkDoubleAnimation opacity final state.pngBrushes_ImplicitConvert.pngButtonClippingTestsControl.png-darkImagesInlineInFlipView.png-darkImagesInlineInFlipView.pngBorderImageBrushRelativeTransform.png-darkDynamicBrushes_On_Shapes.png-darkDynamicBrushes_On_Shapes.pngDynamicFont.png-darkDynamicFont.pngClosedFigure.pngColorAnimationUsingKeyFrames_Fill.png-darkCompositionNineGridBrush_Source_Changes.png-darkCompositionNineGridBrush_Source_Changes.pngImageUniformWithinScrollViewer.png-darkImageUniformWithinScrollViewer.pngImage_ScrollView_ChangeView.png-darkImage_ScrollView_ChangeView.pngBrushes_ImplicitConvert.png-dark
-
wasm: 46 changed over 1053๐จ๐จ Comparison Details (first 20) ๐จ๐จ
UITests.Shared.Windows_UI.Xaml_Automation.AutomationProperties_AutomationIdUITests.Shared.Windows_UI_Xaml_Controls.MediaPlayerElement.MediaPlayerElement_Ogg_ExtensionUITests.Windows_UI_Xaml_Controls.ComboBox.ComboBox_DisabledUITests.Windows_UI_Xaml_Controls.BorderTests.BorderWithNullBrushAndNonZeroThicknessUITests.Windows_UI_Xaml_Controls.ListView.ListViewItem_IsEnabledUITests.Windows_UI_Xaml_Controls.ListView.ListView_DisplayMemberPathUno.UI.Samples.Content.UITests.GridTestsControl.Grid_InsideStackPanel_InsideButtonGenericApp.Views.Samples.Shared.Content.UITests.GridViewMultipleSelectionModeSamplesApp.Wasm.Windows_UI_Xaml_Controls.ComboBox.ComboBox_CornerRadiusSamplesApp.Wasm.Windows_UI_Xaml_Controls.ComboBox.ComboBox_CornersUITests.Shared.Windows_UI_Xaml_Controls.ContentDialogTests.ContentDialog_ClosingUITests.Windows_UI_Xaml_Controls.ImageTests.BitmapImage_vs_SvgImageSourceSamplesApp.Windows_UI_Xaml_Controls.ListView.ListView_ItemContainerStyleSelectorUITests.Windows_UI_Xaml_Controls.BorderTests.PanelWithNullBrushAndNonZeroThicknessSamplesApp.Windows_UI_Xaml_Controls.ListView.ListViewLegacyUITests.Shared.Microsoft_UI_Xaml_Controls.ExpanderTests.WinUIExpanderPageUITests.Windows_UI_Xaml_Controls.Repeater.ItemsRepeater_NestedUITests.Windows_UI_Xaml_Input.Keyboard.Keyboard_EventsUno.UI.Samples.Content.UITests.ButtonTestsControl.Button_Enabled_Control_DisabledUno.UI.Samples.Content.UITests.ButtonTestsControl.CheckBox_Button
-
wasm-automated-net9.0-WinUI-Benchmarks-automated: 1 changed over 1๐จ๐จ Comparison Details (first 20) ๐จ๐จ
RunBenchmarks_Benchmarks_Shared_Controls_BenchmarkDotNetTestsPage
-
wasm-automated-net9.0-WinUI-Default-automated: 13 changed over 876๐จ๐จ Comparison Details (first 20) ๐จ๐จ
Default_StrokeThickness_MyLineDefault_StrokeThickness_MyPolylineDefault_StrokeThickness_MyEllipseDefault_StrokeThickness_MyPolygonDefault_StrokeThickness_MyRectTestProgressRing_InitialState_UITests_Microsoft_UI_Xaml_Controls_ProgressRing_WinUIProgressRing_FeaturesWhen_StretchAndAlignmentNone_ImageBrush-50-50-None-XLeft-YBottomWhen_SingleSelectionWithoutItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_PointersListView_SelectedItems_SamplesApp_Windows_UI_Xaml_Controls_ListView_ListViewSelectedItemsDefault_StrokeThickness_MyPathSequentialAnimations_SamplesApp_Windows_UI_Xaml_Media_Animation_SequentialAnimationsPageToggleCollapsedStateToVerifyClipping_UITests_Shared_Microsoft_UI_Xaml_Controls_ExpanderTests_ExpanderColorValidationPageWhen_ExtendedSelectionWithoutItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_Pointers
-
wasm-automated-net9.0-WinUI-RuntimeTests-0: 0 changed over 1 -
wasm-automated-net9.0-WinUI-RuntimeTests-1: 1 changed over 1๐จ๐จ Comparison Details (first 20) ๐จ๐จ
RunRuntimeTests_SamplesApp_Samples_UnitTests_UnitTestsPage
-
wasm-automated-net9.0-WinUI-RuntimeTests-2: 1 changed over 1๐จ๐จ Comparison Details (first 20) ๐จ๐จ
RunRuntimeTests_SamplesApp_Samples_UnitTests_UnitTestsPage
I am a bit worried about setting UIViewControllerBasedStatusBarAppearance to false (and didn't know this was already set to false in template) - would this mean we would not align with dark/light theme changes (e.g. the foreground could be out of sync unless the user explicitly fixes that?)
๐ค Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-20687/wasm-skia-net9/index.html
๐ค Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-20687/docs/index.html
๐ค Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-20687/wasm-skia-net9/index.html
๐ค Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-20687/docs/index.html
๐ค Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-20687/docs/index.html
๐ค Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-20687/wasm-skia-net9/index.html
@rajamatt I'm still seeing the issue for iOS on orientation change:
https://github.com/user-attachments/assets/cd845cef-3408-49f4-b0ba-0cdaa17e1951
๐ค Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-20687/docs/index.html
๐ค Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-20687/wasm-skia-net9/index.html
๐ค Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-20687/docs/index.html
๐ค Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-20687/wasm-skia-net9/index.html
๐ค Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-20687/docs/index.html
๐ค Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-20687/wasm-skia-net9/index.html
๐ค Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-20687/docs/index.html
๐ค Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-20687/wasm-skia-net9/index.html
๐ค Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-20687/wasm-skia-net9/index.html
๐ค Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-20687/docs/index.html
๐ค Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-20687/wasm-skia-net9/index.html
๐ค Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-20687/docs/index.html
@rajamatt I'm still seeing the issue for iOS on orientation change:
Simulator.Screen.Recording.-.iPhone.16.Pro.Max.-.2025-06-09.at.16.36.05.mp4
Fixed!
๐ค Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-20687/docs/index.html
๐ค Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-20687/wasm-skia-net9/index.html