diff options
author | Jimmy Garrido <jimmygarrido@outlook.com> | 2016-10-17 10:57:04 -0700 |
---|---|---|
committer | Rui Marinho <me@ruimarinho.net> | 2016-10-17 18:57:04 +0100 |
commit | aa969f3fc2901eb93b6da03471dbef86188e47cc (patch) | |
tree | 458f54764b3a6d348dd4ec736f1967dc4af993ab /Xamarin.Forms.Controls.Issues | |
parent | 92d462718ad3066b0ea449f465cabc415c2ccfe4 (diff) | |
download | xamarin-forms-aa969f3fc2901eb93b6da03471dbef86188e47cc.tar.gz xamarin-forms-aa969f3fc2901eb93b6da03471dbef86188e47cc.tar.bz2 xamarin-forms-aa969f3fc2901eb93b6da03471dbef86188e47cc.zip |
[Android] Fix NRE When Scrolling ListView and Item With Context Actions Is Selected (#310)
* Fix NRE When Item With Context Actions Selected
* Add UITest
Diffstat (limited to 'Xamarin.Forms.Controls.Issues')
2 files changed, 69 insertions, 0 deletions
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla42832.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla42832.cs new file mode 100644 index 00000000..77b98df7 --- /dev/null +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla42832.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using Xamarin.Forms.Internals; +using Xamarin.Forms.CustomAttributes; + +#if UITEST +using Xamarin.UITest; +using NUnit.Framework; +#endif + +namespace Xamarin.Forms.Controls.Issues +{ + [Preserve(AllMembers = true)] + [Issue(IssueTracker.Bugzilla, 42832, "Scrolling a ListView with active ContextAction Items causes NRE", PlatformAffected.Android)] + public class Bugzilla42832 : TestContentPage + { + ListView listview; + + protected override void Init() + { + var items = new List<string>(); + for(int i=0; i<20; i++) + items.Add($"Item #{i}"); + + var template = new DataTemplate(typeof(TestCell)); + template.SetBinding(TextCell.TextProperty, "."); + + listview = new ListView(ListViewCachingStrategy.RetainElement) + { + AutomationId = "mainList", + ItemsSource = items, + ItemTemplate = template + }; + + Content = listview; + } + + [Preserve(AllMembers = true)] + public class TestCell : TextCell + { + public TestCell() + { + var menuItem = new MenuItem { Text = "Test Item" }; + ContextActions.Add(menuItem); + } + } + +#if UITEST + [Test] + public void ContextActionsScrollNRE() + { + // mark is an icon on android + RunningApp.TouchAndHold(q => q.Marked("Item #0")); + RunningApp.WaitForElement(q => q.Marked("Test Item")); + + int counter = 0; + while(counter < 5) + { + RunningApp.ScrollDownTo("Item #15", "mainList", ScrollStrategy.Gesture, timeout:TimeSpan.FromMinutes(1)); + RunningApp.ScrollUpTo("Item #0", "mainList", ScrollStrategy.Gesture, timeout: TimeSpan.FromMinutes(1)); + counter++; + } + + RunningApp.Screenshot("If the app did not crash, then the test has passed."); + } +#endif + } +} 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 224ef47a..debaecca 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 @@ -128,6 +128,7 @@ <Compile Include="$(MSBuildThisFileDirectory)Bugzilla43516.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla44166.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla44461.cs" /> + <Compile Include="$(MSBuildThisFileDirectory)Bugzilla42832.cs" /> <Compile Include="$(MSBuildThisFileDirectory)CarouselAsync.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla34561.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla34727.cs" /> |