summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Controls.Issues
diff options
context:
space:
mode:
authorE.Z. Hart <hartez@users.noreply.github.com>2017-01-24 04:48:36 -0700
committerRui Marinho <me@ruimarinho.net>2017-01-24 11:48:36 +0000
commit4b19d49aa228330af37cee8c4d4fe7097eaf608d (patch)
treec61d9d83831f10da51b80e49d5a7c065d9c4fe3b /Xamarin.Forms.Controls.Issues
parent500ac6ee80e20f04cc0f740905f44e52ef03c520 (diff)
downloadxamarin-forms-4b19d49aa228330af37cee8c4d4fe7097eaf608d.tar.gz
xamarin-forms-4b19d49aa228330af37cee8c4d4fe7097eaf608d.tar.bz2
xamarin-forms-4b19d49aa228330af37cee8c4d4fe7097eaf608d.zip
Add check for disposed gesture detector on VisualElementRenderer (#706)
Diffstat (limited to 'Xamarin.Forms.Controls.Issues')
-rw-r--r--Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla45330.cs119
-rw-r--r--Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems1
2 files changed, 120 insertions, 0 deletions
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla45330.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla45330.cs
new file mode 100644
index 00000000..d3a05fdf
--- /dev/null
+++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla45330.cs
@@ -0,0 +1,119 @@
+using System;
+using System.Collections.ObjectModel;
+using System.Linq;
+using Xamarin.Forms.CustomAttributes;
+using Xamarin.Forms.Internals;
+
+namespace Xamarin.Forms.Controls.Issues
+{
+ [Preserve(AllMembers = true)]
+ [Issue(IssueTracker.Bugzilla, 45330, "System.ObjectDisposedException: Cannot access a disposed object. Object name: 'Android.Views.GestureDetector'.", PlatformAffected.Android)]
+ public class Bugzilla45330 : TestContentPage
+ {
+ ObservableCollection<_45330Notification> _feed;
+
+ [Preserve(AllMembers = true)]
+ public class _45330Dto
+ {
+ public _45330Dto()
+ {
+ Notifications = new ObservableCollection<_45330Notification>();
+ }
+
+ public ObservableCollection<_45330Notification> Notifications { get; set; }
+ }
+
+ [Preserve(AllMembers = true)]
+ public class _45330Notification
+ {
+ public string UniqueId { get; set; }
+ public DateTime DisplayDate { get; set; }
+ }
+
+ [Preserve(AllMembers = true)]
+ public class _45330ListCell : ViewCell
+ {
+ protected override void OnBindingContextChanged()
+ {
+ base.OnBindingContextChanged();
+
+ var item = BindingContext as _45330Notification;
+ if (item == null) return;
+
+ View = new StackLayout()
+ {
+ BackgroundColor = Color.Transparent,
+ Padding = new Thickness(0, 1, 0, 1),
+ Children = { new Label { Text = item.UniqueId } }
+ };
+ }
+ }
+
+ public ObservableCollection<_45330Notification> Feed
+ {
+ get { return _feed; }
+ set
+ {
+ _feed = value;
+ OnPropertyChanged();
+ }
+ }
+
+ protected override void Init()
+ {
+ BindingContext = this;
+ Feed = MakeNotifications();
+
+ var listview = new ListView();
+ listview.SetBinding(ListView.ItemsSourceProperty, "Feed");
+ listview.ItemTemplate = new DataTemplate(typeof(_45330ListCell));
+ listview.IsPullToRefreshEnabled = true;
+ listview.RefreshCommand = new Command(() =>
+ {
+ listview.IsRefreshing = false;
+ Feed = MakeNotifications();
+ });
+
+ listview.ItemAppearing += (sender, e) =>
+ {
+ var currentItem = e.Item as _45330Notification;
+ if (currentItem == null) return;
+ var item = Feed.Last();
+ if (currentItem.UniqueId == item.UniqueId)
+ {
+ Feed = MakeNotifications();
+ }
+ };
+
+ var layout = new StackLayout();
+
+ var instructions = new Label { Text = @"The bug can be intermittently reproduced by pulling the list down to refresh it and immediately tapping one of the cells.
+Leaving this test page in for reference purposes, and possibly as a base for a future UI test if we get a way to accurately/consistently simulate the events which cause the crash."};
+
+ layout.Children.Add(instructions);
+ layout.Children.Add(listview);
+
+ Content = layout;
+ }
+
+ ObservableCollection<_45330Notification> MakeNotifications()
+ {
+ var list = new _45330Dto();
+ for (int i = 0; i < 1000; i++)
+ {
+ list.Notifications.Add(new _45330Notification()
+ {
+ UniqueId = i.ToString(),
+ DisplayDate = DateTime.UtcNow
+ });
+ }
+ return list.Notifications;
+ }
+
+ protected override void OnAppearing()
+ {
+ base.OnAppearing();
+ Feed = MakeNotifications();
+ }
+ }
+} \ 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 ba7de6cb..c4594010 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
@@ -149,6 +149,7 @@
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla42832.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla44044.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla44338.cs" />
+ <Compile Include="$(MSBuildThisFileDirectory)Bugzilla45330.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla45743.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla46494.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla44476.cs" />