-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Net10 merge main #31160
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
Net10 merge main #31160
Conversation
This PR includes a comprehensive set of UI test cases for the Editor control. The tests validate the Editor control’s behavior across a wide range of properties, including: Text, Placeholder, MaxLength,AutoSize, IsReadOnly, IsEnabled, IsVisible, Keyboard, TextPrediction, SpellCheck, TextColor, FontSize, FontFamily, FontAttributes, CharacterSpacing, CursorPosition, SelectionLength, HorizontalTextAlignment, VerticalTextAlignment. ### Editor Control Feature Matrix **Gallery Page Addition** - Integrated a new GalleryPageFactory entry for EditorControlPage into CorePageView.cs. - This allows easy navigation to the feature matrix page showcasing Editor control functionality within the test app. **Options Page Implementation** - Created EditorOptionsPage.xaml, providing a UI to demonstrate and interact with Editor properties dynamically. - The page layout uses StackLayout and includes Editor controls showcasing a variety of configurable properties, bound to the EditorViewModel. **Main Page Implementation** - Added EditorControlPage.xaml.cs, which includes: - Initialization of the EditorViewModel for data binding. - Event handlers for Editor control events such as TextChanged, Focused, Unfocused, and Completed. - Methods to update cursor position and selection length programmatically. **Issues Identified** - #29833 - #26968 - #29812 - #30071 - #30571 https://github.com/user-attachments/assets/ade2872b-9010-4b59-b554-96dab622d225
…30789) This pull request makes updates to the `EntryControlPage.xaml` file to improve the layout and simplify the user interface by replacing the toolbar-based "Options" button with an in-page button. Below are the most important changes: ### UI Layout Improvements: * Added an `Options` button directly within the page layout, with properties `Text="Options"`, `FontSize="11"`, and a `Clicked` event handler (`NavigateToOptionsPage_Clicked`). This replaces the toolbar item for better accessibility. ### Code Simplification: * Removed the `<ContentPage.ToolbarItems>` section, which previously contained the "Options" button. This change simplifies the structure by consolidating the button into the main layout. ### Minor Adjustments: * Adjusted the `Margin` property of the "Entry Control" label to improve spacing consistency in the layout.
* Fix null reference exception when removing appearance observer in ShellContentFragment * Change to use `as` syntax * Add test to verify ShellContentFragment.Destroy handles null _shellContext gracefully * Add test to ensure ShellContentFragment.Destroy handles null _shellContext gracefully * Add safeguard in ShellContentFragment.Destroy to prevent multiple calls
…l Flyout content. (#30069) * fix-22045 - Made changes on Android ShellFlyout sizing by adding OnDrawerOpened event and updating Content so OnSizeAllocated is called with correct values when drawer opens. * fix-22045- Set the contentview frame value when the FlyoutView layout change. * fix-22045- Changes committed.
…missions if NeverForLocation flag is present (#20874) * otherwise the permission-status will be 'denied' if AccessFineLocation is in the manifest, but denied at runtime (even if it is not strictly required)
* Safe Get of RealParent to avoid warnings * Optimized the fix * Make it as default private * Optimized the fix * Modified the fix and added test * Modified the fix based on concern and added test * unwanted spacing * Replaced the Parent property directly
… Immediately Setting ItemsSource to Null Causes a Crash (#29940) * Re-evaluate indexpaths in PerformBatchUpdates * Add UI test * update test * bring back null check * add a check to see if ItemsSource is disposed
#29926) * Fixed StackLayout crashes on Windows with HeightRequest 0, padding, and opposing alignment. * Included test case for Vertical StackLayout * Updated label content
* Added Feature Matrix for ScrollView * Updated changes * Changes updated * Modified the test cases * Modified UI * Added snapshots * Added images * Modified Test Case * Added images * Resaved images # Conflicts: # src/Controls/tests/TestCases.HostApp/CoreViews/CorePageView.cs
* modified UI and test cases * updated test cases * added new test cases * updated test cases * added android and iOS snapshots * updated format * updated flow direction code * added mac and windows snapshots * updated iOS snapshots
… fix (#30307) * Disconnect context flyout handler * Update MenuFlyoutHandler.iOS.cs
* Fix for TapGesture ButtonMask * Added TestCase * Update Testcase * Modified Testcase
if the type is known then a direct cast should be used instead of an as. since, in the case where the assumption is wrong, then it is better to get a cast exception instead of a null ref exception. basically if code uses `as` and does not check for null when that variable is used, then it is likely problematic code.
* Use a better logger for Azure DevOps * Update dotnet.cake * Update IMauiContext.cs
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…multiple windows are open. (#30537) * Fixed the PointerGestureRecognizer events from another window interfere with the active window * Optimize the fix * Logging the error * missed paramter * - add some code to debounce when there are multi window scenarios --------- Co-authored-by: Shane Neuville <shneuvil@microsoft.com>
…d Gesture recognizers (#29649) * Improve Keyboard Accessibility: Support Spacebar for Android Gesture Recognizers * Update GesturePlatformManager.Android.cs * - update code a bit * Update ViewExtensions.cs --------- Co-authored-by: Shane Neuville <shneuvil@microsoft.com>
…1112) * Revert "ToolbarItem behavior with ImageSource iOS - fix (#28833)" This reverts commit 5860fe6. * Update src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30818.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * - fix define on testing --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…der (#27928) * Publish new snapshots and diffs to a specific artifacts folder * Fix mistake * Updated test to generate new snapshots (and verify the changes) * More changes * Fix identation issues * Removed dependencies usage * More fixes * Revert changes
* [ci] Add more keys * Fix * Try again * Remove extra pipelines
# Conflicts: # eng/Signing.props # eng/Versions.props # src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSSafeAreaPage.xaml.cs # src/Controls/src/Core/Handlers/Items/iOS/SelectableItemsViewController.cs # src/Controls/src/Core/Handlers/Items2/iOS/SelectableItemsViewController2.cs # src/Controls/src/Core/ICornerElement.cs # src/Controls/tests/TestCases.Android.Tests/snapshots/android/VerifyScrollViewWithScrollToPositionCenterAndAbsoluteLayoutContent.png # src/Controls/tests/TestCases.Android.Tests/snapshots/android/VerifyScrollViewWithScrollToPositionCenterAndHorizontalLayoutContentWhenOrientationHorizontal.png # src/Controls/tests/TestCases.Android.Tests/snapshots/android/VerifyScrollViewWithScrollToPositionCenterAndImageContent.png # src/Controls/tests/TestCases.Android.Tests/snapshots/android/VerifyScrollViewWithScrollToPositionEndAndAbsoluteLayoutContent.png # src/Controls/tests/TestCases.Android.Tests/snapshots/android/VerifyScrollViewWithScrollToPositionEndAndHorizontalLayoutContentWhenOrientationHorizontal.png # src/Controls/tests/TestCases.Android.Tests/snapshots/android/VerifyScrollViewWithScrollToPositionEndAndImageContent.png # src/Controls/tests/TestCases.Android.Tests/snapshots/android/VerifyScrollViewWithScrollToPositionMakeVisibleAndHorizontalLayoutContentWhenOrientationHorizontal.png # src/Controls/tests/TestCases.Android.Tests/snapshots/android/VerifyScrollViewWithScrollToPositionStartAndHorizontalLayoutContentWhenOrientationHorizontal.png # src/Controls/tests/TestCases.HostApp/CoreViews/CorePageView.cs # src/Controls/tests/TestCases.HostApp/FeatureMatrix/ScrollView/ScrollViewOptionsPage.xaml.cs # src/Controls/tests/TestCases.HostApp/FeatureMatrix/ScrollView/ScrollViewViewModel.cs # src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/VerifyScrollViewWithScrollToPositionCenterAndAbsoluteLayoutContent.png # src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/VerifyScrollViewWithScrollToPositionCenterAndImageContent.png # src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/VerifyScrollViewWithScrollToPositionEndAndAbsoluteLayoutContent.png # src/Controls/tests/TestCases.Mac.Tests/snapshots/mac/VerifyScrollViewWithScrollToPositionEndAndImageContent.png # src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ScrollViewFeatureTests.cs # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyCharacterSpacingWhenFontFamily.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyCharacterSpacingWhenMaxLengthSet.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyEntryControlWhenFlowDirectionSet.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyHorizontalTextAlignmentBasedOnCharacterSpacing.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyHorizontalTextAlignmentWhenVerticalTextAlignmentSet.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyIsPasswordBasedOnCharacterSpacing.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyIsPasswordBasedOnHorizontalTextAlignment.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyIsPasswordBasedOnVerticalTextAlignment.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyIsPasswordWhenFontSizeSet.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyIsPasswordWhenMaxLenghtSetValue.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyPlaceholderWhenFlowDirectionSet.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyPlaceholderWithFontAttributes.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyPlaceholderWithFontFamily.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyPlaceholderWithFontSize.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyPlaceholderWithHorizontalAlignment.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyPlaceholderWithPasswordTrue.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyPlaceholderWithVerticalAlignment.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyTextWhenAlingnedHorizontally.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyTextWhenAlingnedVertically.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyTextWhenCharacterSpacingSetValues.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyTextWhenFontAttributesSet.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyTextWhenFontFamilySetValue.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyTextWhenFontSizeSetCorrectly.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyTextWhenIsPasswordTrueOrFalse.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyTextWhenTextColorSetCorrectly.png # src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/VerifyVerticalTextAlignmentBasedOnCharacterSpacing.png # src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/ClearButtonVisiblityButton_TextPresent.png # src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/VerifyScrollViewWithScrollToPositionCenterAndAbsoluteLayoutContent.png # src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/VerifyScrollViewWithScrollToPositionCenterAndImageContent.png # src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/VerifyScrollViewWithScrollToPositionEndAndAbsoluteLayoutContent.png # src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/VerifyScrollViewWithScrollToPositionEndAndImageContent.png # src/Core/src/Platform/Android/MauiScrollView.cs # src/Core/src/Platform/iOS/MauiScrollView.cs
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR appears to be a merge of the main branch into a .NET 10 branch, bringing in numerous new features and test cases for .NET MAUI controls. The changes include extensive test coverage for HybridWebView functionality, new feature matrix implementations for various controls, and several bug fixes.
Key changes:
- Addition of comprehensive HybridWebView test infrastructure with multiple HTML pages for testing JavaScript-C# communication
- New feature matrix implementations for TimePicker, SearchBar, GraphicsView, and HybridWebView controls with associated view models and options pages
- Multiple new issue test cases addressing specific bugs across iOS, Android, and Windows platforms
- Updates to the test host app configuration to support new custom handlers
Reviewed Changes
Copilot reviewed 107 out of 652 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| HybridWebView HTML files | Four new HTML test pages for comprehensive HybridWebView testing scenarios |
| Feature matrix implementations | Complete MVVM implementations for TimePicker, SearchBar, GraphicsView, and HybridWebView controls |
| Issue test cases | 15+ new test cases covering various platform-specific bugs and regressions |
| MauiProgram.cs | Configuration updates to register new custom handlers |
| EntryOptionsPage.xaml | UI layout improvements with better spacing and font sizing |
You can also share your feedback on Copilot code review for a chance to win a $100 gift card. Take the survey.
| if (stream != null) | ||
| { | ||
| _image = Microsoft.Maui.Graphics.Platform.PlatformImage.FromStream(stream); | ||
| Debug.WriteLine($"Successfully loaded image with resource name: {resourceName}"); |
Copilot
AI
Aug 13, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[nitpick] The hard-coded resource name array contains multiple potential paths that may not exist. This approach creates maintenance overhead as resource names could change. Consider using a more systematic approach to locate embedded resources.
| Debug.WriteLine($"Successfully loaded image with resource name: {resourceName}"); | |
| // Systematically search for the resource name ending with "royals.png" | |
| string resourceFileName = "royals.png"; | |
| string foundResourceName = null; | |
| foreach (var name in assembly.GetManifestResourceNames()) | |
| { | |
| if (name.EndsWith(resourceFileName, StringComparison.OrdinalIgnoreCase)) | |
| { | |
| foundResourceName = name; | |
| break; | |
| } | |
| } | |
| if (foundResourceName != null) | |
| { | |
| using (var stream = assembly.GetManifestResourceStream(foundResourceName)) | |
| { | |
| if (stream != null) | |
| { | |
| _image = Microsoft.Maui.Graphics.Platform.PlatformImage.FromStream(stream); | |
| Debug.WriteLine($"Successfully loaded image with resource name: {foundResourceName}"); |
| behavior: 'smooth', | ||
| block: 'nearest' | ||
| }); | ||
| }, 5); |
Copilot
AI
Aug 13, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nested setTimeout calls (setTimeout within requestAnimationFrame) create unnecessary delay and complexity. The 5ms timeout serves no clear purpose and could be removed.
| }, 5); | |
| messageDiv.scrollIntoView({ | |
| behavior: 'smooth', | |
| block: 'nearest' | |
| }); |
| } | ||
| catch (Exception ex) | ||
| { | ||
| Debug.WriteLine($"Error loading image: {ex.Message}"); |
Copilot
AI
Aug 13, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[nitpick] Exception handling swallows all exceptions and only logs the message. This could mask important debugging information. Consider logging the full exception details including stack trace.
| Debug.WriteLine($"Error loading image: {ex.Message}"); | |
| Debug.WriteLine($"Error loading image: {ex}"); |
7873287 to
7fcae4f
Compare
7fcae4f to
c979f2f
Compare
* Added issue link * Added test fails attribute * changes updated
69921d7 to
94009dc
Compare
Note
Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!
Description of Change
Issues Fixed
Fixes #