Skip to content

Revert public API surface from #34228 on inflight/candidate#35024

Merged
PureWeen merged 1 commit intoinflight/candidatefrom
redth/revert-ialertmanager-public-api
Apr 19, 2026
Merged

Revert public API surface from #34228 on inflight/candidate#35024
PureWeen merged 1 commit intoinflight/candidatefrom
redth/revert-ialertmanager-public-api

Conversation

@Redth
Copy link
Copy Markdown
Member

@Redth Redth commented Apr 17, 2026

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

PR #34228 added public IAlertManager and IAlertManagerSubscription interfaces, but it was merged into inflight/current when the public API change likely should have gone through main first.

This PR reverts the public API surface of those changes on inflight/candidate, while keeping the refactor (the interfaces, the DI wiring, the AlertManager : IAlertManager split) in place. The interfaces are now marked internal so no new public API is shipped from the inflight branches, and the PublicAPI.Unshipped.txt files are restored to their pre-#34228 state.

Changes

  • Mark IAlertManager as internal
  • Mark IAlertManagerSubscription as internal
  • Remove the corresponding entries from all 7 PublicAPI.Unshipped.txt files (net, net-android, net-ios, net-maccatalyst, net-tizen, net-windows, netstandard)

All existing consumers (AlertManager, Window, AlertManagerTests) are internal to the Controls.Core assembly and/or have InternalsVisibleTo, so no other code changes are needed.

Follow-up

The public API change can be re-introduced via a separate PR targeting main if/when desired.

Targets: inflight/candidate
Related: #34228

PR #34228 made IAlertManager and IAlertManagerSubscription public, but
it was merged to inflight/current when it likely should have targeted
main. This reverts the public API surface on inflight/candidate while
keeping the interfaces in place (as internal) so the refactor remains.

- Mark IAlertManager as internal
- Mark IAlertManagerSubscription as internal
- Remove corresponding entries from all PublicAPI.Unshipped.txt files

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings April 17, 2026 21:30
@github-actions
Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://github.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 35024

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://github.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 35024"

@Redth Redth changed the base branch from main to inflight/candidate April 17, 2026 21:30
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

This PR aims to revert the public API exposure introduced by #34228 on inflight/candidate (by making IAlertManager / IAlertManagerSubscription internal and reverting PublicAPI baselines), but the diff also includes a large set of unrelated control/handler behavior changes, tests, and build/dependency updates.

Changes:

  • Internalizes IAlertManager and IAlertManagerSubscription and adjusts Window DI resolution to support custom alert managers.
  • Updates multiple Controls runtime behaviors (VSM specificity promotion, Shell/FlowDirection fixes, iOS/Android/Windows handler fixes, Brush transparency handling, etc.) and adds/updates tests.
  • Modifies PublicAPI baselines and build configuration (including package version updates).

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
src/Controls/tests/TestCases.HostApp/Issues/Issue23921.cs Adds HostApp issue reproduction page for SwipeView tap propagation (Android).
src/Controls/tests/TestCases.HostApp/Issues/Issue23902.cs Adds HostApp issue reproduction pages for duplicated OnNavigatedTo (Android).
src/Controls/tests/TestCases.HostApp/Issues/Issue23854.cs Adds HostApp issue reproduction for ImageButton CornerRadius (Android).
src/Controls/tests/TestCases.HostApp/Issues/Issue22769.cs Adds HostApp repro for Brush.Transparent background behavior.
src/Controls/tests/TestCases.HostApp/Issues/Issue22197.xaml.cs Adds HostApp page backing for HTML Label line-height scenario.
src/Controls/tests/TestCases.HostApp/Issues/Issue22197.xaml Adds XAML scenario for HTML vs plain Label line height / decorations.
src/Controls/tests/TestCases.HostApp/Issues/Issue22104.xaml Updates VSM setters and layout in existing HostApp issue XAML.
src/Controls/tests/TestCases.HostApp/Issues/Issue22038.cs Adds HostApp repro for opacity clipping overflow (Android).
src/Controls/tests/TestCases.HostApp/Issues/Issue21983.xaml.cs Adds HostApp page backing for Shape stroke GradientBrush scenario.
src/Controls/tests/TestCases.HostApp/Issues/Issue21983.xaml Adds XAML scenario for gradient stroke/fill on shapes.
src/Controls/tests/TestCases.HostApp/Issues/Issue20991.cs Adds HostApp repro for IDrawable binding in GraphicsView.
src/Controls/tests/TestCases.HostApp/Issues/Issue20834.cs Adds HostApp repro for GraphicsView drawing outside canvas (Android).
src/Controls/tests/TestCases.HostApp/Issues/Issue20348.cs Adds HostApp repro for SearchBar text copying after back navigation (Android).
src/Controls/tests/TestCases.HostApp/Issues/Issue20062.cs Adds HostApp repro for CollectionView Selected VSM state (Android).
src/Controls/tests/TestCases.HostApp/Issues/Issue19168.cs Adds HostApp repro for dismissing iOS Picker by tapping outside.
src/Controls/tests/TestCases.HostApp/Issues/Issue18657.cs Adds HostApp repro for removing CollectionView.EmptyView (UWP).
src/Controls/tests/TestCases.HostApp/Issues/Issue18200.cs Adds HostApp repro for FlyoutPage collapse style changes (UWP).
src/Controls/tests/TestCases.HostApp/Issues/Issue11404.cs Adds HostApp repro for Line coordinate transformation correctness.
src/Controls/tests/TestCases.HostApp/Issues/Issue10987.cs Adds HostApp repro for Editor alignment behavior.
src/Controls/tests/TestCases.HostApp/FeatureMatrix/Slider/SliderViewModal.cs Adds ViewModel state for Slider ValueChanged diagnostics.
src/Controls/tests/TestCases.HostApp/FeatureMatrix/Slider/SliderControlPage.xaml.cs Wires Slider.ValueChanged to update ViewModel state.
src/Controls/tests/TestCases.HostApp/FeatureMatrix/Slider/SliderControlPage.xaml Updates UI to show ValueChanged status and old/new values.
src/Controls/tests/TestCases.HostApp/FeatureMatrix/ScrollView/ScrollViewViewModel.cs Adds state tracking for ScrollToRequested event diagnostics.
src/Controls/tests/TestCases.HostApp/FeatureMatrix/ScrollView/ScrollViewControlPage.xaml.cs Handles ScrollToRequested event and updates diagnostics state.
src/Controls/tests/TestCases.HostApp/FeatureMatrix/ScrollView/ScrollViewControlPage.xaml Adds UI to display ScrollToRequested args and trigger scroll-to-pixel.
src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj Adds additional images (Challenges) to MAUI assets.
src/Controls/tests/DeviceTests/Elements/Shell/ShellFlyoutTests.cs Adjusts assertions around flyout header height with safe-area considerations.
src/Controls/tests/DeviceTests/Elements/RadioButton/RadioButtonTests.cs Adds device tests for templated RadioButton semantics description behavior.
src/Controls/tests/DeviceTests/Elements/Label/LabelTests.iOS.cs Updates test data for character spacing / line height / decorations case.
src/Controls/tests/DeviceTests/Elements/Entry/EntryTests.cs Adds tests for long Entry text scenarios and MaxLength/Text order.
src/Controls/tests/DeviceTests/Elements/Editor/EditorTests.iOS.cs Adds iOS test for Editor placeholder horizontal alignment.
src/Controls/tests/DeviceTests/Elements/CollectionView/CollectionViewTests.iOS.cs Adds iOS test for CarouselView scroll indicator visibility updates.
src/Controls/tests/DeviceTests/Elements/CarouselView/CarouselViewTests.cs Re-enables a test previously excluded from Android builds.
src/Controls/tests/DeviceTests/Elements/CarouselView/CarouselViewTests.Android.cs Adds Android accessibility test for IndicatorView talkback descriptions.
src/Controls/tests/Core.UnitTests/VisualStateManagerTests.cs Adds regression tests for implicit-style VSM specificity behavior.
src/Controls/tests/Core.UnitTests/SolidColorBrushTests.cs Adds tests for Brush transparency detection for SolidColorBrush.
src/Controls/tests/Core.UnitTests/RadialGradientBrushTests.cs Adds tests for Brush transparency detection for RadialGradientBrush.
src/Controls/tests/Core.UnitTests/LinearGradientBrushTests.cs Adds tests for Brush transparency detection for LinearGradientBrush.
src/Controls/tests/Core.UnitTests/BindablePropertyUnitTests.cs Adds unit test for CollectionView header unwrapping OnPlatform.
src/Controls/tests/Core.UnitTests/AlertManagerTests.cs Updates tests for alert manager DI/refactor and adds new ordering/DI tests.
src/Controls/src/Core/Window/Window.cs Resolves custom IAlertManager from DI and manages subscribe/unsubscribe.
src/Controls/src/Core/VisualStateManager.cs Promotes implicit VSM specificity only for system-driven states.
src/Controls/src/Core/VisualElement/VisualElement.cs Adds internal IsExplicitlyEnabled and adjusts loaded/unloaded wiring logic.
src/Controls/src/Core/VisualElement/VisualElement.Platform.cs Fires Loaded/Unloaded for native-hosted views without MAUI Window.
src/Controls/src/Core/TitleBar/TitleBar.cs Adds FlowDirection visual states and binding-context propagation for content.
src/Controls/src/Core/Style.cs Adjusts BasedOn style application order (UnApply then Apply).
src/Controls/src/Core/Shell/ShellItem.cs Changes TabBarIsVisible effective value computation to respect ShellContent.
src/Controls/src/Core/Shell/ShellElementCollection.cs Propagates dynamic TabBarIsVisible changes from ShellContent to displayed Page.
src/Controls/src/Core/Shapes/Shape.cs Fixes translation logic for Stretch.None path alignment within bounds.
src/Controls/src/Core/SetterSpecificity.cs Adds helpers/masks and promotes implicit VSM specificity via WithFullVsmPriority.
src/Controls/src/Core/Setter.cs Changes name resolution to walk parent NameScopes and adjusts exceptions.
src/Controls/src/Core/RadioButton/RadioButton.cs Improves semantics description derivation for templated content.
src/Controls/src/Core/PublicAPI/netstandard/PublicAPI.Unshipped.txt Updates public API baselines (new overrides recorded).
src/Controls/src/Core/PublicAPI/net/PublicAPI.Unshipped.txt Updates public API baselines (new overrides recorded).
src/Controls/src/Core/PublicAPI/net-windows/PublicAPI.Unshipped.txt Updates baseline and records additional overrides (CarouselViewHandler.ScrollTo).
src/Controls/src/Core/PublicAPI/net-tizen/PublicAPI.Unshipped.txt Updates public API baselines (new overrides recorded).
src/Controls/src/Core/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt Updates baseline and records new overrides (incl. Items2 changes).
src/Controls/src/Core/PublicAPI/net-ios/PublicAPI.Unshipped.txt Updates baseline and records new overrides (incl. Items2 changes).
src/Controls/src/Core/PublicAPI/net-android/PublicAPI.Unshipped.txt Updates baseline and records new overrides (GraphicsView/TitleBar overrides).
src/Controls/src/Core/PlatformConfiguration/WindowsSpecific/FlyoutPage.cs Adds propertyChanged to CollapseStyle attached property to trigger handler updates.
src/Controls/src/Core/Platform/iOS/ControlsModalWrapper.cs Uses Brush transparency to select OverFullScreen modal presentation style.
src/Controls/src/Core/Platform/Windows/Extensions/AutoSuggestBoxExtensions.cs Adds SearchHandler-specific update helpers (colors, alignments, cancel button).
src/Controls/src/Core/Platform/Windows/CollectionView/ItemContentControl.cs Re-adds logical children on recycle and fixes selection equality comparisons.
src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.Android.cs Uses DismissNow during batch pops and forwards dialog touch events to Window.
src/Controls/src/Core/Platform/GestureManager/GesturePlatformManager.Android.cs Adds RecyclerView touch listener to route gestures before child consumption.
src/Controls/src/Core/Platform/AlertManager/IAlertManagerSubscription.cs Introduces IAlertManagerSubscription (now internal per metadata intent).
src/Controls/src/Core/Platform/AlertManager/IAlertManager.cs Introduces IAlertManager (now internal per metadata intent).
src/Controls/src/Core/Platform/AlertManager/AlertManager.cs Refactors AlertManager to implement IAlertManager.
src/Controls/src/Core/Page/Page.cs Adds Window-null guard for alerts and changes navigation event dispatch/disposal logic.
src/Controls/src/Core/Label/Label.iOS.cs Ensures formatting map updates line height/decorations/character spacing.
src/Controls/src/Core/Label/Label.cs Adjusts invalidation when text toggles empty/non-empty for sizeable labels.
src/Controls/src/Core/Label/Label.Mapper.cs Skips mapping for formatted spans using HasFormattedTextSpans.
src/Controls/src/Core/Items/MarshalingObservableCollection.cs Uses weak proxy and adds Dispose to unsubscribe.
src/Controls/src/Core/Handlers/Shell/ShellItemHandler.Windows.cs Improves SearchHandler updates and applies cancel button color on Loaded.
src/Controls/src/Core/Handlers/Items2/iOS/StructuredItemsViewController2.cs Updates header/footer flow direction when layout changes.
src/Controls/src/Core/Handlers/Items2/iOS/ReorderableItemsViewDelegator2.cs Reuses shared grouped-move logic via new helper extensions.
src/Controls/src/Core/Handlers/Items2/iOS/ReorderableItemsViewController2.cs Adds grouped reordering validation and section reload after interactive move.
src/Controls/src/Core/Handlers/Items2/iOS/ItemsViewController2.cs Simplifies flow direction update logic for templated vs default cells.
src/Controls/src/Core/Handlers/Items2/iOS/CarouselViewController2.cs Adds iOS 26 debounce and bounds checks; disposes debounce token source.
src/Controls/src/Core/Handlers/Items2/CarouselViewHandler2.iOS.cs Adds controller cast safety and supports swipe-enabled for compositional layout.
src/Controls/src/Core/Handlers/Items/iOS/ReorderableItemsViewExtensions.cs Adds shared helper for grouped move target index logic.
src/Controls/src/Core/Handlers/Items/iOS/ReorderableItemsViewDelegator.cs Uses shared helper for grouped reorder targeting.
src/Controls/src/Core/Handlers/Items/iOS/ReorderableItemsViewController.cs Adds grouped reordering validation and header reload after movement.
src/Controls/src/Core/Handlers/Items/iOS/MauiCollectionView.cs Intercepts AddSubview to apply swipe-enabled to embedded UIScrollView.
src/Controls/src/Core/Handlers/Items/iOS/CarouselViewController.cs Adds bounds checks around ScrollTo and UpdateFromCurrentItem logic.
src/Controls/src/Core/Handlers/Items/StructuredItemsViewHandler.Windows.cs Cleans up header/footer when being removed from logical tree.
src/Controls/src/Core/Handlers/Items/SelectableItemsViewHandler.Windows.cs Uses object.Equals for selection comparisons.
src/Controls/src/Core/Handlers/Items/ItemsViewHandler.Windows.cs Refactors empty view removal/disconnect/templating handling.
src/Controls/src/Core/Handlers/Items/CarouselViewHandler.Windows.cs Adds goto-position suppression and commits position prior to animated scroll.
src/Controls/src/Core/Handlers/Items/Android/SimpleItemTouchHelperCallback.cs Changes move blocking logic for reordering structural elements.
src/Controls/src/Core/Handlers/Items/Android/MauiRecyclerView.cs Changes disabled touch handling based on explicit vs inherited IsEnabled.
src/Controls/src/Core/Handlers/Items/Android/MauiCarouselRecyclerView.cs Adjusts goto-position tracking across animated scroll operations.
src/Controls/src/Core/Handlers/Items/Android/ItemsSources/ObservableItemsSource.cs Adds option to dispose wrapped items sources and disposes marshaling collection.
src/Controls/src/Core/Handlers/Items/Android/ItemsSources/ItemsSourceFactory.cs Passes dispose flag when wrapping in MarshalingObservableCollection.
src/Controls/src/Core/Handlers/Items/Android/Adapters/SelectableItemsViewAdapter.cs Forces selection visuals update in single mode for value-equal items.
src/Controls/src/Core/Handlers/Items/Android/Adapters/ReorderableItemsViewAdapter.cs Adds safeguards and header targeting rules for grouped item moves.
src/Controls/src/Core/GraphicsView/GraphicsView.cs Adds binding context propagation to Drawable and property changed handling.
src/Controls/src/Core/FlyoutPage/FlyoutPage.Mapper.cs Registers Windows mapping for CollapseStyle to update platform behavior.
src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/SlideFlyoutTransition.cs Adjusts RTL locked flyout positioning.
src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellTableViewSource.cs Forces FlowDirection resolution for disconnected Shell menu items.
src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellSectionRootRenderer.cs Resolves MatchParent flow direction on tracked pages.
src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellSectionRenderer.cs Updates TabBar flow direction in addition to navigation bar/view.
src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellPageRendererTracker.cs Ensures visibility state resets when page set ordering changes.
src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellFlyoutHeaderContainer.cs Implements measure invalidation controller for flyout header container.
src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellFlyoutContentRenderer.cs Updates footer flow direction and resolves header flow direction.
src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellToolbarTracker.cs Improves back icon override and clears SearchView state on handler swap.
src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellItemRenderer.cs Requests insets when tab bar goes Gone→Visible to avoid stale padding.
src/Controls/src/Core/Brush/Brush.cs Adds internal HasTransparency(Brush) helper.
src/Controls/src/Core/BindableProperty.cs Prevents assignable wrapped values from bypassing conversion/unwrapping.
src/Controls/Maps/src/AppHostBuilderExtensions.cs Updates docs and removes Windows NotImplementedException path.
src/BlazorWebView/src/Wpf/BlazorWebView.cs Marks WebView manager disposing before async cleanup.
src/BlazorWebView/src/SharedSource/WebView2WebViewManager.cs Prevents sending messages during disposal / after CoreWebView2 disposal.
src/BlazorWebView/src/Maui/build/Microsoft.AspNetCore.Components.WebView.Maui.targets Filters out compressed alternatives when CompressionEnabled=false.
src/AI/src/Essentials.AI/PublicAPI/net-macos/PublicAPI.Unshipped.txt Moves AI APIs out of Unshipped.
src/AI/src/Essentials.AI/PublicAPI/net-macos/PublicAPI.Shipped.txt Marks AI APIs as shipped (MAUIAI0001).
src/AI/src/Essentials.AI/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt Moves AI APIs out of Unshipped.
src/AI/src/Essentials.AI/PublicAPI/net-maccatalyst/PublicAPI.Shipped.txt Marks AI APIs as shipped (MAUIAI0001).
src/AI/src/Essentials.AI/PublicAPI/net-ios/PublicAPI.Unshipped.txt Moves AI APIs out of Unshipped.
src/AI/src/Essentials.AI/PublicAPI/net-ios/PublicAPI.Shipped.txt Marks AI APIs as shipped (MAUIAI0001).
eng/Versions.props Updates MonoApiTools MSBuild tasks version.

Comment thread eng/Versions.props
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR title/description says this change is focused on reverting the public API surface from #34228 (AlertManager interfaces) on inflight/candidate, but the diff includes many unrelated behavioral changes, new/updated tests, PublicAPI baseline additions, and even a tooling dependency bump. This makes the PR hard to review and increases risk for servicing branches. Consider splitting: (1) the AlertManager API-surface revert into its own minimal PR, and (2) the remaining fixes/tests/tooling changes into separate, scoped PRs (or update the PR description/title to accurately reflect the full scope).

Copilot uses AI. Check for mistakes.
Comment on lines 119 to 141
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As written, the ?.Alpha < 1 comparisons will produce a nullable boolean when Color is nullable (and will not compile where a non-nullable bool is required/returned). This should be rewritten to avoid nullable comparisons (e.g., pattern-match the color and compare Alpha), and similarly for gradient stop colors.

Copilot uses AI. Check for mistakes.
Comment on lines 876 to 892
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This return; exits SendNavigatedFrom(...) entirely, not just the handler-disposal portion. That risks skipping any subsequent navigation bookkeeping in the remainder of the method (e.g., state resets, events, or other cleanup which should still happen even when the Handler isn’t disposed). Safer approach: avoid returning from the method; instead, conditionally skip only the handler disposal/disconnect call and allow the rest of SendNavigatedFrom to run.

Copilot uses AI. Check for mistakes.
Comment on lines 1 to 4
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

New HostApp issue pages are being added under TestCases.HostApp/Issues/, but there are no corresponding UI tests under src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/. In this repo, issue pages are typically paired with an Appium-based _IssuesUITest to prevent regressions. Please add matching tests (and ensure unique AutomationIds) for the new issue pages introduced in this PR.

Copilot uses AI. Check for mistakes.
Comment on lines 408 to 410
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This test relies on multiple fixed Task.Delay(...) calls and polling loops, which is a common source of device-test flakiness. Prefer using existing test infra patterns like an AssertEventually(...)/retry helper (or a single bounded wait that checks the actual condition) so timing adapts to device load rather than depending on hardcoded delays.

Copilot uses AI. Check for mistakes.
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This test relies on multiple fixed Task.Delay(...) calls and polling loops, which is a common source of device-test flakiness. Prefer using existing test infra patterns like an AssertEventually(...)/retry helper (or a single bounded wait that checks the actual condition) so timing adapts to device load rather than depending on hardcoded delays.

Copilot uses AI. Check for mistakes.
Comment on lines 422 to 427
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This test relies on multiple fixed Task.Delay(...) calls and polling loops, which is a common source of device-test flakiness. Prefer using existing test infra patterns like an AssertEventually(...)/retry helper (or a single bounded wait that checks the actual condition) so timing adapts to device load rather than depending on hardcoded delays.

Copilot uses AI. Check for mistakes.
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

async void test methods can cause unobserved exceptions and incorrect test results because the test framework can’t reliably await completion. This should return Task instead (public async Task ...). This is especially important now that the test is no longer conditionally excluded from Android builds in this PR.

Suggested change
public async Task DisconnectedCarouselViewDoesNotHookCollectionViewChanged()

Copilot uses AI. Check for mistakes.
@PureWeen PureWeen merged commit a5e2dac into inflight/candidate Apr 19, 2026
41 of 45 checks passed
@PureWeen PureWeen deleted the redth/revert-ialertmanager-public-api branch April 19, 2026 02:14
@github-actions github-actions Bot added this to the .NET 10 SR6 milestone Apr 19, 2026
Ahamed-Ali pushed a commit that referenced this pull request Apr 22, 2026
<!-- Please let the below note in for people that find this PR -->
> [!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](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

## Description

PR #34228 added public `IAlertManager` and `IAlertManagerSubscription`
interfaces, but it was merged into `inflight/current` when the public
API change likely should have gone through `main` first.

This PR reverts the **public API surface** of those changes on
`inflight/candidate`, while keeping the refactor (the interfaces, the DI
wiring, the `AlertManager : IAlertManager` split) in place. The
interfaces are now marked `internal` so no new public API is shipped
from the inflight branches, and the `PublicAPI.Unshipped.txt` files are
restored to their pre-#34228 state.

### Changes

- Mark `IAlertManager` as `internal`
- Mark `IAlertManagerSubscription` as `internal`
- Remove the corresponding entries from all 7 `PublicAPI.Unshipped.txt`
files (net, net-android, net-ios, net-maccatalyst, net-tizen,
net-windows, netstandard)

All existing consumers (`AlertManager`, `Window`, `AlertManagerTests`)
are internal to the `Controls.Core` assembly and/or have
`InternalsVisibleTo`, so no other code changes are needed.

### Follow-up

The public API change can be re-introduced via a separate PR targeting
`main` if/when desired.

Targets: `inflight/candidate`
Related: #34228

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@PureWeen PureWeen modified the milestones: .NET 10 SR6, .NET 10 SR7 Apr 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants