diff options
author | Samantha Houts <samhouts@users.noreply.github.com> | 2017-05-09 23:50:20 -0700 |
---|---|---|
committer | Stephane Delcroix <stephane@delcroix.org> | 2017-05-10 08:50:20 +0200 |
commit | c1fbfae03ca04dd70a31a00042c745658cc8bd97 (patch) | |
tree | 721fb18fc7f4544a1838434e904c2bd99d15646b | |
parent | d6adff2e414fc73ea081a150092b2efd2a54f03e (diff) | |
download | xamarin-forms-c1fbfae03ca04dd70a31a00042c745658cc8bd97.tar.gz xamarin-forms-c1fbfae03ca04dd70a31a00042c745658cc8bd97.tar.bz2 xamarin-forms-c1fbfae03ca04dd70a31a00042c745658cc8bd97.zip |
[Core] Accessibility works with XamlC (#911)
* Add unit tests for a11y XAML parsing
* [Core] Add Get/Set methods for XamlC
* Update docs
* Fix rogue blank line
-rw-r--r-- | Xamarin.Forms.Core/Accessibility.cs | 42 | ||||
-rw-r--r-- | Xamarin.Forms.Xaml.UnitTests/Accessibility.xaml | 16 | ||||
-rw-r--r-- | Xamarin.Forms.Xaml.UnitTests/Accessibility.xaml.cs | 75 | ||||
-rw-r--r-- | Xamarin.Forms.Xaml.UnitTests/Xamarin.Forms.Xaml.UnitTests.csproj | 30 | ||||
-rw-r--r-- | docs/Xamarin.Forms.Core/Xamarin.Forms/Accessibility.xml | 164 |
5 files changed, 315 insertions, 12 deletions
diff --git a/Xamarin.Forms.Core/Accessibility.cs b/Xamarin.Forms.Core/Accessibility.cs index e866d318..074d5c59 100644 --- a/Xamarin.Forms.Core/Accessibility.cs +++ b/Xamarin.Forms.Core/Accessibility.cs @@ -1,4 +1,4 @@ - + namespace Xamarin.Forms { public class Accessibility @@ -10,5 +10,45 @@ namespace Xamarin.Forms public static readonly BindableProperty LabeledByProperty = BindableProperty.Create("LabeledBy", typeof(VisualElement), typeof(Element), default(VisualElement)); public static readonly BindableProperty NameProperty = BindableProperty.Create("Name", typeof(string), typeof(Element), default(string)); + + public static string GetHint(BindableObject bindable) + { + return (string)bindable.GetValue(HintProperty); + } + + public static bool? GetIsInAccessibleTree(BindableObject bindable) + { + return (bool?)bindable.GetValue(IsInAccessibleTreeProperty); + } + + public static VisualElement GetLabeledBy(BindableObject bindable) + { + return (VisualElement)bindable.GetValue(LabeledByProperty); + } + + public static string GetName(BindableObject bindable) + { + return (string)bindable.GetValue(NameProperty); + } + + public static void SetHint(BindableObject bindable, string value) + { + bindable.SetValue(HintProperty, value); + } + + public static void SetIsInAccessibleTree(BindableObject bindable, bool? value) + { + bindable.SetValue(IsInAccessibleTreeProperty, value); + } + + public static void SetLabeledBy(BindableObject bindable, VisualElement value) + { + bindable.SetValue(LabeledByProperty, value); + } + + public static void SetName(BindableObject bindable, string value) + { + bindable.SetValue(NameProperty, value); + } } } diff --git a/Xamarin.Forms.Xaml.UnitTests/Accessibility.xaml b/Xamarin.Forms.Xaml.UnitTests/Accessibility.xaml new file mode 100644 index 00000000..6c4b32b6 --- /dev/null +++ b/Xamarin.Forms.Xaml.UnitTests/Accessibility.xaml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" ?> +<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" + xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" + x:Class="Xamarin.Forms.Xaml.UnitTests.Accessibility"> + + <StackLayout> + <Label x:Name="label" Text="Your Name" /> + <Entry x:Name="entry" + Accessibility.Name="Name" + Accessibility.Hint="Sets your name" + Accessibility.IsInAccessibleTree="true" + Accessibility.LabeledBy="{x:Reference label}" + /> + </StackLayout> + +</ContentPage>
\ No newline at end of file diff --git a/Xamarin.Forms.Xaml.UnitTests/Accessibility.xaml.cs b/Xamarin.Forms.Xaml.UnitTests/Accessibility.xaml.cs new file mode 100644 index 00000000..2bcaab3b --- /dev/null +++ b/Xamarin.Forms.Xaml.UnitTests/Accessibility.xaml.cs @@ -0,0 +1,75 @@ +using System; +using NUnit.Framework; +using Xamarin.Forms.Core.UnitTests; + +namespace Xamarin.Forms.Xaml.UnitTests +{ + public partial class Accessibility : ContentPage + { + public Accessibility() + { + InitializeComponent(); + } + + public Accessibility(bool useCompiledXaml) + { + //this stub will be replaced at compile time + } + + [TestFixture] + public class Tests + { + [SetUp] + public void Setup() + { + Device.PlatformServices = new MockPlatformServices(); + Application.Current = new MockApplication(); + } + + [TearDown] + public void TearDown() + { + Device.PlatformServices = null; + Application.Current = null; + } + + [TestCase(false)] + [TestCase(true)] + public void AccessibilityName(bool useCompiledXaml) + { + var layout = new Accessibility(useCompiledXaml); + + Assert.AreEqual("Name", (string)layout.entry.GetValue(Xamarin.Forms.Accessibility.NameProperty)); + } + + [TestCase(false)] + [TestCase(true)] + public void AccessibilityHint(bool useCompiledXaml) + { + var layout = new Accessibility(useCompiledXaml); + + Assert.AreEqual("Sets your name", (string)layout.entry.GetValue(Xamarin.Forms.Accessibility.HintProperty)); + } + + [TestCase(false)] + [TestCase(true)] + public void AccessibilityIsInAccessibleTree(bool useCompiledXaml) + { + var layout = new Accessibility(useCompiledXaml); + Application.Current.MainPage = layout; + + Assert.AreEqual(true, (bool)layout.entry.GetValue(Xamarin.Forms.Accessibility.IsInAccessibleTreeProperty)); + } + + [TestCase(false)] + [TestCase(true)] + public void AccessibilityLabeledBy(bool useCompiledXaml) + { + var layout = new Accessibility(useCompiledXaml); + Application.Current.MainPage = layout; + + Assert.AreEqual(layout.label, (Element)layout.entry.GetValue(Xamarin.Forms.Accessibility.LabeledByProperty)); + } + } + } +} diff --git a/Xamarin.Forms.Xaml.UnitTests/Xamarin.Forms.Xaml.UnitTests.csproj b/Xamarin.Forms.Xaml.UnitTests/Xamarin.Forms.Xaml.UnitTests.csproj index 0d98f25a..7b65e0f8 100644 --- a/Xamarin.Forms.Xaml.UnitTests/Xamarin.Forms.Xaml.UnitTests.csproj +++ b/Xamarin.Forms.Xaml.UnitTests/Xamarin.Forms.Xaml.UnitTests.csproj @@ -76,6 +76,9 @@ <Compile Include="..\Xamarin.Forms.Core.UnitTests\MockPlatformServices.cs"> <Link>MockPlatformServices.cs</Link> </Compile> + <Compile Include="Accessibility.xaml.cs"> + <DependentUpon>Accessibility.xaml</DependentUpon> + </Compile> <Compile Include="FontConverterTests.cs" /> <Compile Include="Issues\Bz43450.xaml.cs"> <DependentUpon>Bz43450.xaml</DependentUpon> @@ -387,19 +390,19 @@ <Compile Include="Issues\Bz47703.xaml.cs"> <DependentUpon>Bz47703.xaml</DependentUpon> </Compile> - <Compile Include="FactoryMethodMissingCtor.xaml.cs"> - <DependentUpon>FactoryMethodMissingCtor.xaml</DependentUpon> - </Compile> - <Compile Include="FactoryMethodMissingMethod.xaml.cs"> - <DependentUpon>FactoryMethodMissingMethod.xaml</DependentUpon> - </Compile> + <Compile Include="FactoryMethodMissingCtor.xaml.cs"> + <DependentUpon>FactoryMethodMissingCtor.xaml</DependentUpon> + </Compile> + <Compile Include="FactoryMethodMissingMethod.xaml.cs"> + <DependentUpon>FactoryMethodMissingMethod.xaml</DependentUpon> + </Compile> <Compile Include="XamlC\TypeReferenceExtensionsTests.cs" /> <Compile Include="Issues\Bz46921.xaml.cs"> <DependentUpon>Bz46921.xaml</DependentUpon> </Compile> - <Compile Include="I8.xaml.cs"> - <DependentUpon>I8.xaml</DependentUpon> - </Compile> + <Compile Include="I8.xaml.cs"> + <DependentUpon>I8.xaml</DependentUpon> + </Compile> <Compile Include="Issues\Bz49307.xaml.cs"> <DependentUpon>Bz49307.xaml</DependentUpon> </Compile> @@ -481,7 +484,7 @@ </Compile> <Compile Include="Issues\Bz55347.xaml.cs"> <DependentUpon>Bz55347.xaml</DependentUpon> - </Compile> + </Compile> <Compile Include="FieldModifier.xaml.cs"> <DependentUpon>FieldModifier.xaml</DependentUpon> </Compile> @@ -920,4 +923,9 @@ <Generator>MSBuild:UpdateDesignTimeXaml</Generator> </EmbeddedResource> </ItemGroup> -</Project> + <ItemGroup> + <EmbeddedResource Include="Accessibility.xaml"> + <Generator>MSBuild:UpdateDesignTimeXaml</Generator> + </EmbeddedResource> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/Accessibility.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/Accessibility.xml index fbcb7858..ee401995 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/Accessibility.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/Accessibility.xml @@ -27,6 +27,86 @@ <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="GetHint"> + <MemberSignature Language="C#" Value="public static string GetHint (Xamarin.Forms.BindableObject bindable);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig string GetHint(class Xamarin.Forms.BindableObject bindable) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.String</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="bindable" Type="Xamarin.Forms.BindableObject" /> + </Parameters> + <Docs> + <param name="bindable">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetIsInAccessibleTree"> + <MemberSignature Language="C#" Value="public static Nullable<bool> GetIsInAccessibleTree (Xamarin.Forms.BindableObject bindable);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig valuetype System.Nullable`1<bool> GetIsInAccessibleTree(class Xamarin.Forms.BindableObject bindable) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Nullable<System.Boolean></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="bindable" Type="Xamarin.Forms.BindableObject" /> + </Parameters> + <Docs> + <param name="bindable">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetLabeledBy"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.VisualElement GetLabeledBy (Xamarin.Forms.BindableObject bindable);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.VisualElement GetLabeledBy(class Xamarin.Forms.BindableObject bindable) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.VisualElement</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="bindable" Type="Xamarin.Forms.BindableObject" /> + </Parameters> + <Docs> + <param name="bindable">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetName"> + <MemberSignature Language="C#" Value="public static string GetName (Xamarin.Forms.BindableObject bindable);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig string GetName(class Xamarin.Forms.BindableObject bindable) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.String</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="bindable" Type="Xamarin.Forms.BindableObject" /> + </Parameters> + <Docs> + <param name="bindable">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="HintProperty"> <MemberSignature Language="C#" Value="public static readonly Xamarin.Forms.BindableProperty HintProperty;" /> <MemberSignature Language="ILAsm" Value=".field public static initonly class Xamarin.Forms.BindableProperty HintProperty" /> @@ -87,5 +167,89 @@ <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="SetHint"> + <MemberSignature Language="C#" Value="public static void SetHint (Xamarin.Forms.BindableObject bindable, string value);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig void SetHint(class Xamarin.Forms.BindableObject bindable, string value) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="bindable" Type="Xamarin.Forms.BindableObject" /> + <Parameter Name="value" Type="System.String" /> + </Parameters> + <Docs> + <param name="bindable">To be added.</param> + <param name="value">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="SetIsInAccessibleTree"> + <MemberSignature Language="C#" Value="public static void SetIsInAccessibleTree (Xamarin.Forms.BindableObject bindable, Nullable<bool> value);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig void SetIsInAccessibleTree(class Xamarin.Forms.BindableObject bindable, valuetype System.Nullable`1<bool> value) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="bindable" Type="Xamarin.Forms.BindableObject" /> + <Parameter Name="value" Type="System.Nullable<System.Boolean>" /> + </Parameters> + <Docs> + <param name="bindable">To be added.</param> + <param name="value">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="SetLabeledBy"> + <MemberSignature Language="C#" Value="public static void SetLabeledBy (Xamarin.Forms.BindableObject bindable, Xamarin.Forms.VisualElement value);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig void SetLabeledBy(class Xamarin.Forms.BindableObject bindable, class Xamarin.Forms.VisualElement value) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="bindable" Type="Xamarin.Forms.BindableObject" /> + <Parameter Name="value" Type="Xamarin.Forms.VisualElement" /> + </Parameters> + <Docs> + <param name="bindable">To be added.</param> + <param name="value">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="SetName"> + <MemberSignature Language="C#" Value="public static void SetName (Xamarin.Forms.BindableObject bindable, string value);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig void SetName(class Xamarin.Forms.BindableObject bindable, string value) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="bindable" Type="Xamarin.Forms.BindableObject" /> + <Parameter Name="value" Type="System.String" /> + </Parameters> + <Docs> + <param name="bindable">To be added.</param> + <param name="value">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> </Members> </Type> |