From 16c0e0d6e7690c0dad11fb78a5d6fbf777328540 Mon Sep 17 00:00:00 2001 From: devanathan-vaithiyanathan <114395405+devanathan-vaithiyanathan@users.noreply.github.com> Date: Tue, 24 Sep 2024 12:59:08 +0530 Subject: [PATCH 1/4] changes added --- src/Controls/src/Core/NavigationPage/NavigationPage.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/Controls/src/Core/NavigationPage/NavigationPage.cs b/src/Controls/src/Core/NavigationPage/NavigationPage.cs index 414ff519e821..8bf135510018 100644 --- a/src/Controls/src/Core/NavigationPage/NavigationPage.cs +++ b/src/Controls/src/Core/NavigationPage/NavigationPage.cs @@ -402,9 +402,6 @@ void FireAppearing(Page page) void RemoveFromInnerChildren(Element page) { InternalChildren.Remove(page); - - // TODO For NET9 we should remove this because the DisconnectHandlers will take care of it - page.Handler = null; } void SafePop() From 22d73981a77a4414f5bac1065e7cccd18c48875f Mon Sep 17 00:00:00 2001 From: devanathan-vaithiyanathan <114395405+devanathan-vaithiyanathan@users.noreply.github.com> Date: Tue, 24 Sep 2024 12:59:08 +0530 Subject: [PATCH 2/4] changes added --- src/Controls/src/Core/NavigationPage/NavigationPage.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/Controls/src/Core/NavigationPage/NavigationPage.cs b/src/Controls/src/Core/NavigationPage/NavigationPage.cs index 414ff519e821..8bf135510018 100644 --- a/src/Controls/src/Core/NavigationPage/NavigationPage.cs +++ b/src/Controls/src/Core/NavigationPage/NavigationPage.cs @@ -402,9 +402,6 @@ void FireAppearing(Page page) void RemoveFromInnerChildren(Element page) { InternalChildren.Remove(page); - - // TODO For NET9 we should remove this because the DisconnectHandlers will take care of it - page.Handler = null; } void SafePop() From 4632a2d29d49484f1dad9b944b0b7e3fb830a4ef Mon Sep 17 00:00:00 2001 From: Dhivya-SF4094 <127717131+Dhivya-SF4094@users.noreply.github.com> Date: Tue, 5 Nov 2024 16:51:42 +0530 Subject: [PATCH 3/4] UI Testcases added --- .../Elements/FlyoutPage/FlyoutPageTests.cs | 19 ----- .../TestCases.HostApp/Issues/Issue10274.cs | 80 +++++++++++++++++++ .../Tests/Issues/Issue10274.cs | 31 +++++++ 3 files changed, 111 insertions(+), 19 deletions(-) create mode 100644 src/Controls/tests/TestCases.HostApp/Issues/Issue10274.cs create mode 100644 src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue10274.cs diff --git a/src/Controls/tests/DeviceTests/Elements/FlyoutPage/FlyoutPageTests.cs b/src/Controls/tests/DeviceTests/Elements/FlyoutPage/FlyoutPageTests.cs index 0fa98ee5b1f2..1380ee9974ed 100644 --- a/src/Controls/tests/DeviceTests/Elements/FlyoutPage/FlyoutPageTests.cs +++ b/src/Controls/tests/DeviceTests/Elements/FlyoutPage/FlyoutPageTests.cs @@ -46,25 +46,6 @@ void SetupBuilder() }); } - [Theory] - [ClassData(typeof(FlyoutPageLayoutBehaviorTestCases))] - public async Task PoppingFlyoutPageDoesntCrash(Type flyoutPageType) - { - SetupBuilder(); - var navPage = new NavigationPage(new ContentPage()) { Title = "App Page" }; - - await CreateHandlerAndAddToWindow(new Window(navPage), async (handler) => - { - var flyoutPage = CreateFlyoutPage( - flyoutPageType, - new NavigationPage(new ContentPage() { Content = new Border(), Title = "Detail" }), - new ContentPage() { Title = "Flyout" }); - - await navPage.PushAsync(flyoutPage); - await navPage.PopAsync(); - }); - } - [Theory] [ClassData(typeof(FlyoutPageLayoutBehaviorTestCases))] public async Task SwappingDetailPageWorksForSplitFlyoutBehavior(Type flyoutPageType) diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue10274.cs b/src/Controls/tests/TestCases.HostApp/Issues/Issue10274.cs new file mode 100644 index 000000000000..ecad3d8a6484 --- /dev/null +++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue10274.cs @@ -0,0 +1,80 @@ +namespace Maui.Controls.Sample.Issues +{ + [XamlCompilation(XamlCompilationOptions.Compile)] + [Issue(IssueTracker.Github, 10274, "MAUI Flyout does not work on Android when not using Shell", PlatformAffected.Android)] + public class Issue10274 : NavigationPage + { + public Issue10274() : base(new MainPage()) + { + + } + + public class MainPage : ContentPage + { + public MainPage() + { + var button = new Button + { + Text = "Navigate to Flyout Page", + AutomationId = "button" + }; + + button.Clicked += OnNavigateToFlyoutPageClicked; + + Content = new StackLayout + { + Padding = new Thickness(20), + Children = { button } + }; + } + private async void OnNavigateToFlyoutPageClicked(object sender, EventArgs e) + { + await Navigation.PushAsync(new CustomFlyoutPage()); + } + } + + public class CustomFlyoutPage : FlyoutPage + { + public CustomFlyoutPage() + { + Flyout = new ContentPage + { + Title = "Flyout", + Content = new StackLayout + { + Padding = new Thickness(20), + Children = + { + new Label { Text = "This is the Flyout page." } + } + } + }; + + var button = new Button + { + Text = "Go Back", + AutomationId = "flyoutPageButton" + }; + button.Clicked += OnGoBackClicked; + + var detailPage = new ContentPage + { + Title = "Detail", + Content = new StackLayout + { + Padding = new Thickness(20), + + Children = { button } + } + }; + + Detail = new NavigationPage(detailPage); + } + + private async void OnGoBackClicked(object sender, EventArgs e) + { + await Navigation.PopAsync(); + } + } + } +} diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue10274.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue10274.cs new file mode 100644 index 000000000000..a82116df3c61 --- /dev/null +++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue10274.cs @@ -0,0 +1,31 @@ +#if !MACCATALYST +using NUnit.Framework; +using UITest.Appium; +using UITest.Core; + +namespace Microsoft.Maui.TestCases.Tests.Issues +{ + public class Issue10274 : _IssuesUITest + { + public Issue10274(TestDevice device): base(device) + { + } + + public override string Issue => "MAUI Flyout does not work on Android when not using Shell"; + + [Test] + [Category(UITestCategories.FlyoutPage)] + public void FlyoutPageNavigation() + { + App.WaitForElement("button"); + App.Tap("button"); + + App.WaitForElement("flyoutPageButton"); + App.Tap("flyoutPageButton"); + + App.WaitForElement("button"); + VerifyScreenshot(); + } + } +} +#endif \ No newline at end of file From 226352e673cf9505df903b01ac56f51cce27deb5 Mon Sep 17 00:00:00 2001 From: Dhivya-SF4094 <127717131+Dhivya-SF4094@users.noreply.github.com> Date: Wed, 6 Nov 2024 10:53:47 +0530 Subject: [PATCH 4/4] Attached screenshots --- .../snapshots/android/FlyoutPageNavigation.png | Bin 0 -> 9451 bytes .../snapshots/windows/FlyoutPageNavigation.png | Bin 0 -> 6580 bytes .../snapshots/ios/FlyoutPageNavigation.png | Bin 0 -> 7159 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/Controls/tests/TestCases.Android.Tests/snapshots/android/FlyoutPageNavigation.png create mode 100644 src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/FlyoutPageNavigation.png create mode 100644 src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/FlyoutPageNavigation.png diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/FlyoutPageNavigation.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/FlyoutPageNavigation.png new file mode 100644 index 0000000000000000000000000000000000000000..2df4141ae9a1fdce666a4c81e55b5d0668c5e861 GIT binary patch literal 9451 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 bQU0OGf3LIjrii4~0h~PMezfZFm0SM>XcLC| literal 0 HcmV?d00001 diff --git a/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/FlyoutPageNavigation.png b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/FlyoutPageNavigation.png new file mode 100644 index 0000000000000000000000000000000000000000..ef1e0393abc465e1813b6d8ae65e01f2518e7a9d GIT binary patch literal 6580 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 A*8l(j literal 0 HcmV?d00001