diff options
author | E.Z. Hart <hartez@users.noreply.github.com> | 2017-07-19 15:26:46 -0600 |
---|---|---|
committer | Jason Smith <jason.smith@xamarin.com> | 2017-07-19 14:26:46 -0700 |
commit | 6de1c5c8d75449834419d5760d78e72fce4b251e (patch) | |
tree | 3775fe3055f7246c031f49fd5d00ff510a9a1df3 /Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared | |
parent | 7b69ea969a3bd2b5346def3a0aa8eb7f3b93f2b1 (diff) | |
download | xamarin-forms-6de1c5c8d75449834419d5760d78e72fce4b251e.tar.gz xamarin-forms-6de1c5c8d75449834419d5760d78e72fce4b251e.tar.bz2 xamarin-forms-6de1c5c8d75449834419d5760d78e72fce4b251e.zip |
[Android] Handle fragment removal inside of the RemovePage method (#1053)
* Repro
* Handle fragment removal inside of RemovePage method
* Fix class name for test
* Split long strings
Diffstat (limited to 'Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared')
2 files changed, 87 insertions, 0 deletions
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/PopAfterRemove.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/PopAfterRemove.cs new file mode 100644 index 00000000..c7508fbd --- /dev/null +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/PopAfterRemove.cs @@ -0,0 +1,86 @@ +using Xamarin.Forms.CustomAttributes; +using Xamarin.Forms.Internals; + +#if UITEST +using Xamarin.UITest; +using NUnit.Framework; +using Xamarin.Forms.Core.UITests; +#endif + +namespace Xamarin.Forms.Controls.Issues +{ +#if UITEST + [Category(UITestCategories.Navigation)] +#endif + + [Preserve(AllMembers = true)] + [Issue(IssueTracker.None, 0101100101, + "PopAsync crashing after RemovePage when support packages are updated to 25.1.1", + PlatformAffected.Android)] + public class PopAfterRemove : TestNavigationPage + { + ContentPage _intermediate1; + ContentPage _intermediate2; + + protected override async void Init() + { + _intermediate1 = Intermediate(); + _intermediate2 = Intermediate(); + + await PushAsync(Root()); + await PushAsync(_intermediate1); + await PushAsync(_intermediate2); + await PushAsync(Last()); + } + + const string StartTest = "Start Test"; + const string RootLabel = "Root"; + + ContentPage Last() + { + var test = new Button { Text = StartTest }; + + var instructions = new Label + { + Text = + $"Tap the button labeled '{StartTest}'. The app should navigate to a page displaying the label " + + $"'{RootLabel}'. If the application crashes, the test has failed." + }; + + var layout = new StackLayout(); + + layout.Children.Add(instructions); + layout.Children.Add(test); + + test.Clicked += (sender, args) => + { + Navigation.RemovePage(_intermediate2); + Navigation.RemovePage(_intermediate1); + + Navigation.PopAsync(true); + }; + + return new ContentPage { Content = layout }; + } + + static ContentPage Root() + { + return new ContentPage { Content = new Label { Text = RootLabel } }; + } + + static ContentPage Intermediate() + { + return new ContentPage { Content = new Label { Text = "Page" } }; + } + +#if UITEST + [Test] + public void PopAsyncAfterRemovePageDoesNotCrash() + { + RunningApp.WaitForElement(StartTest); + RunningApp.Tap(StartTest); + RunningApp.WaitForElement(RootLabel); + } +#endif + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems index b4155f62..04954748 100644 --- a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems @@ -271,6 +271,7 @@ <DependentUpon>PlatformSpecifics_iOSTranslucentNavBarX.xaml</DependentUpon> <SubType>Code</SubType> </Compile> + <Compile Include="$(MSBuildThisFileDirectory)PopAfterRemove.cs" /> <Compile Include="$(MSBuildThisFileDirectory)TestPages\ScreenshotConditionalApp.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla41842.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla42277.cs" /> |