summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla37462.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla37462.cs')
-rw-r--r--Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla37462.cs88
1 files changed, 88 insertions, 0 deletions
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla37462.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla37462.cs
new file mode 100644
index 00000000..9eebae8b
--- /dev/null
+++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla37462.cs
@@ -0,0 +1,88 @@
+using System.Collections.Generic;
+using System.Linq;
+using Xamarin.Forms.CustomAttributes;
+
+#if UITEST
+using Xamarin.UITest;
+using NUnit.Framework;
+#endif
+
+
+namespace Xamarin.Forms.Controls
+{
+ [Preserve (AllMembers = true)]
+ [Issue (IssueTracker.Bugzilla, 37462, "Using App Compat/App Compat theme breaks Navigation.RemovePage on Android ",PlatformAffected.Android )]
+ public class Bugzilla37462 : TestNavigationPage
+ {
+ protected override void Init ()
+ {
+ var page1 = new ContentPage { Title = "Page 1" };
+ var button1 = new Button { Text = "Go To 2" };
+ var label1 = new Label { Text = "This is a label on page 1" };
+ page1.Content = new StackLayout { Children = { button1, label1 } };
+ page1.Appearing += (sender, args) => {
+ page1.InvalidateMeasure (InvalidationTrigger.MeasureChanged);
+ };
+
+ var page2 = new ContentPage { Title = "Page 2" };
+ var button2 = new Button { Text = "Go To 3" };
+ var label2 = new Label { Text = "This is a label on page 2" };
+ page2.Content = new StackLayout { Children = { button2, label2 } };
+
+ var page3 = new ContentPage { Title = "Page 3" };
+ var button3 = new Button { Text = "Go To 4" };
+ var label3 = new Label { Text = "This is a label on page 3" };
+ page3.Content = new StackLayout { Children = { button3, label3 } };
+
+ var page4 = new ContentPage { Title = "Page 4" };
+ var button4 = new Button { Text = "Back to 1" };
+ var label4 = new Label { Text = "This is a label on page 4" };
+ page4.Content = new StackLayout { Children = { button4, label4 } };
+
+ button1.Clicked += async (sender, args) => { await Navigation.PushAsync (page2); };
+ button2.Clicked += async (sender, args) => { await Navigation.PushAsync (page3); };
+ button3.Clicked += async (sender, args) => { await Navigation.PushAsync (page4); };
+
+ button4.Clicked += async (sender, args) => {
+ List<Page> existingPages = Navigation.NavigationStack.ToList ();
+
+ // Clear all pages except current and home
+ foreach (Page page in existingPages) {
+ if (page.Title != "Page 1" && page.Title != "Page 4") {
+ Navigation.RemovePage (page);
+ }
+ }
+
+ await Navigation.PopAsync ();
+ };
+
+ Navigation.PushAsync (page1);
+ }
+
+#if UITEST
+ [Test]
+ public void CanRemoveIntermediatePagesAndPopToFirstPage ()
+ {
+ // Start at page 1
+ RunningApp.WaitForElement ("Go To 2");
+ RunningApp.WaitForElement ("This is a label on page 1");
+ RunningApp.Tap ("Go To 2");
+
+ RunningApp.WaitForElement ("Go To 3");
+ RunningApp.Tap ("Go To 3");
+
+ RunningApp.WaitForElement ("Go To 4");
+ RunningApp.Tap ("Go To 4");
+
+ RunningApp.WaitForElement ("Back to 1");
+ RunningApp.Tap ("Back to 1");
+
+ // Clicking "Back to 1" should remove pages 2 and 3 from the stack
+ // Then call PopAsync, which should return to page 1
+ RunningApp.WaitForElement ("Go To 2");
+ RunningApp.WaitForElement ("This is a label on page 1");
+ }
+#endif
+
+ }
+} \ No newline at end of file