summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared
diff options
context:
space:
mode:
authorE.Z. Hart <hartez@users.noreply.github.com>2017-07-19 15:26:46 -0600
committerJason Smith <jason.smith@xamarin.com>2017-07-19 14:26:46 -0700
commit6de1c5c8d75449834419d5760d78e72fce4b251e (patch)
tree3775fe3055f7246c031f49fd5d00ff510a9a1df3 /Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared
parent7b69ea969a3bd2b5346def3a0aa8eb7f3b93f2b1 (diff)
downloadxamarin-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')
-rw-r--r--Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/PopAfterRemove.cs86
-rw-r--r--Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems1
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" />