summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla55365.cs
diff options
context:
space:
mode:
authorE.Z. Hart <hartez@users.noreply.github.com>2017-05-16 11:27:41 -0600
committerJason Smith <jason.smith@xamarin.com>2017-05-16 11:50:17 -0700
commite1734092bec06d5e013144f13c947c040586cec8 (patch)
treecb523df2f2c0e490847222f1e5a0afa84acb67cb /Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla55365.cs
parentbb632ea0666d22f23c6f48264800ddf32aeaf25f (diff)
downloadxamarin-forms-e1734092bec06d5e013144f13c947c040586cec8.tar.gz
xamarin-forms-e1734092bec06d5e013144f13c947c040586cec8.tar.bz2
xamarin-forms-e1734092bec06d5e013144f13c947c040586cec8.zip
Remove VisualElement finalizer (#918)
* [Controls] Add repo for bugzilla 55365 * Remove finalizer from VisualElement * Remove unused using directive * Removing test for 44074 * Update docs
Diffstat (limited to 'Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla55365.cs')
-rw-r--r--Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla55365.cs90
1 files changed, 90 insertions, 0 deletions
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla55365.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla55365.cs
new file mode 100644
index 00000000..1ab99a2e
--- /dev/null
+++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla55365.cs
@@ -0,0 +1,90 @@
+using System;
+using System.Collections.ObjectModel;
+using System.Collections.Specialized;
+using Xamarin.Forms.CustomAttributes;
+using Xamarin.Forms.Internals;
+#if UITEST
+using NUnit.Framework;
+
+#endif
+
+namespace Xamarin.Forms.Controls.Issues
+{
+ [Preserve(AllMembers = true)]
+ [Issue(IssueTracker.Bugzilla, 55365, "~VisualElement crashes with System.Runtime.InteropServices.COMException", PlatformAffected.UWP)]
+ public class Bugzilla55365 : TestContentPage
+ {
+ readonly StackLayout _itemsPanel = new StackLayout();
+ readonly DataTemplate _itemTemplate = new DataTemplate(CreateBoxView);
+ readonly StackLayout _layout = new StackLayout();
+
+#if UITEST
+ [Test]
+ public void ForcingGCDoesNotCrash()
+ {
+ RunningApp.WaitForElement("Clear");
+ RunningApp.Tap("Clear");
+ RunningApp.Tap("Garbage");
+ RunningApp.WaitForElement("Success");
+ }
+#endif
+
+ protected override void Init()
+ {
+ var viewModel = new ObservableCollection<_55365Item>
+ {
+ new _55365Item { Subject = 65 }
+ };
+
+ viewModel.CollectionChanged += OnCollectionChanged;
+
+ _itemsPanel.BindingContext = viewModel;
+
+ foreach (_55365Item item in viewModel)
+ {
+ _itemTemplate.SetValue(BindingContextProperty, item);
+ var view = (View)_itemTemplate.CreateContent();
+ _itemsPanel.Children.Add(view);
+ }
+
+ var clearButton = new Button { Text = "Clear", Command = new Command(o => viewModel.Clear()) };
+ _layout.Children.Add(clearButton);
+
+ var collectButton = new Button { Text = "Garbage", Command = new Command(o =>
+ {
+ GC.Collect();
+ GC.WaitForPendingFinalizers();
+ _layout.Children.Add(new Label {Text = "Success"});
+ }) };
+ _layout.Children.Add(collectButton);
+ _layout.Children.Add(_itemsPanel);
+
+ Content = _layout;
+ }
+
+ static object CreateBoxView()
+ {
+ var boxView1 = new BoxView { HeightRequest = 100, Color = new Color(0.55, 0.23, 0.147) };
+ var setter1 = new Setter { Property = BoxView.ColorProperty, Value = "#FF2879DD" };
+ var trigger1 = new DataTrigger(typeof(BoxView)) { Binding = new Binding("Subject"), Value = 65 };
+ trigger1.Setters.Add(setter1);
+ boxView1.Triggers.Add(trigger1);
+ return boxView1;
+ }
+
+ void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
+ {
+ if (e.Action == NotifyCollectionChangedAction.Reset)
+ {
+ // reset the list
+ _itemsPanel.Children.Clear();
+ }
+ }
+
+ [Preserve(AllMembers = true)]
+ public class _55365Item
+ {
+ public int Subject { get; set; }
+ }
+ }
+} \ No newline at end of file