From 327fa3c5e46af79802faacec48e17d38d7f1f75e Mon Sep 17 00:00:00 2001 From: Stuart Lang Date: Sun, 29 Sep 2019 22:01:37 +0100 Subject: [PATCH] Handle case where GetRenderer retuns null (#7566) Fixes #7563 --- .../Issue7563.cs | 36 ++++++++++++++++++++++ .../Xamarin.Forms.Controls.Issues.Shared.projitems | 1 + .../Renderers/PageRenderer.cs | 2 +- 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue7563.cs diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue7563.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue7563.cs new file mode 100644 index 0000000..ac86cbe --- /dev/null +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue7563.cs @@ -0,0 +1,36 @@ +using System.Threading; +using Xamarin.Forms.CustomAttributes; +using Xamarin.Forms.Internals; + +#if UITEST +using Xamarin.Forms.Core.UITests; +using Xamarin.UITest; +using NUnit.Framework; +#endif + +namespace Xamarin.Forms.Controls.Issues +{ +#if UITEST + [Category(UITestCategories.ManualReview)] +#endif + [Preserve(AllMembers = true)] + [Issue(IssueTracker.Github, 7563, "iOS Layout Compression should not crash when VoiceOver is active", PlatformAffected.iOS)] + public class Issue7563 : TestContentPage + { + protected override void Init() + { + + var stack = new StackLayout + { + AutomationId = "test", + Children = { new Label { Text = "Turn on the Screen Reader. If you do not hear 'I am the StackLayout', this test has failed." } }, + }; + + Xamarin.Forms.CompressedLayout.SetIsHeadless(stack, true); + + AutomationProperties.SetIsInAccessibleTree(stack, true); + AutomationProperties.SetName(stack, "I am the StackLayout. This should be announced."); + Content = stack; + } + } +} \ 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 369f053..10e942e 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 @@ -1026,6 +1026,7 @@ + diff --git a/Xamarin.Forms.Platform.iOS/Renderers/PageRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/PageRenderer.cs index ea9b1b7..41b3216 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/PageRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/PageRenderer.cs @@ -72,7 +72,7 @@ namespace Xamarin.Forms.Platform.iOS !( child is VisualElement ve && ve.IsTabStop && AutomationProperties.GetIsInAccessibleTree(ve) != false // accessible == true - && ve.GetRenderer().NativeView is UIView view) + && ve.GetRenderer()?.NativeView is UIView view) ) continue; -- 2.7.4