VPN settings: better a11y voice for legacy dialog

Previously, the user input fields in the legacy VPN config dialog would
simply be read out as "edit box", "drop-down list", etc., without
reference to their corresponding labels. This is not optimal for
low-vision users.

In this CL, we add a "labelFor" attribute to the prompt TextView of each
field. The resulting input fields would instead be read out as "edit box
for username", "drop-down list for type", etc., which are much less
ambiguous than before.

Bug: 37202471
Test: make SettingsGoogle and navigate the dialog with TalkBack on
Change-Id: Id23d0563984e3de4a4a3d03a587ca130b50508fc
This commit is contained in:
Charles He
2017-04-11 19:37:05 +01:00
parent 6d7f210c0b
commit 646d42fe2d

View File

@@ -28,16 +28,22 @@
android:orientation="vertical" android:orientation="vertical"
android:visibility="gone"> android:visibility="gone">
<TextView style="@style/vpn_label" android:text="@string/vpn_name"/> <TextView style="@style/vpn_label"
android:text="@string/vpn_name"
android:labelFor="@+id/name"/>
<EditText style="@style/vpn_value" android:id="@+id/name" <EditText style="@style/vpn_value" android:id="@+id/name"
android:inputType="textCapWords"/> android:inputType="textCapWords"/>
<TextView style="@style/vpn_label" android:text="@string/vpn_type"/> <TextView style="@style/vpn_label"
android:text="@string/vpn_type"
android:labelFor="@+id/type"/>
<Spinner style="@style/vpn_value" android:id="@+id/type" <Spinner style="@style/vpn_value" android:id="@+id/type"
android:prompt="@string/vpn_type" android:prompt="@string/vpn_type"
android:entries="@array/vpn_types"/> android:entries="@array/vpn_types"/>
<TextView style="@style/vpn_label" android:text="@string/vpn_server"/> <TextView style="@style/vpn_label"
android:text="@string/vpn_server"
android:labelFor="@+id/server"/>
<EditText style="@style/vpn_value" android:id="@+id/server"/> <EditText style="@style/vpn_value" android:id="@+id/server"/>
<CheckBox style="@style/vpn_value" android:id="@+id/mppe" <CheckBox style="@style/vpn_value" android:id="@+id/mppe"
@@ -50,7 +56,9 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:visibility="gone"> android:visibility="gone">
<TextView style="@style/vpn_label" android:text="@string/vpn_l2tp_secret"/> <TextView style="@style/vpn_label"
android:text="@string/vpn_l2tp_secret"
android:labelFor="@+id/l2tp_secret"/>
<EditText style="@style/vpn_value" android:id="@+id/l2tp_secret" <EditText style="@style/vpn_value" android:id="@+id/l2tp_secret"
android:password="true" android:password="true"
android:hint="@string/vpn_not_used"/> android:hint="@string/vpn_not_used"/>
@@ -61,11 +69,15 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:visibility="gone"> android:visibility="gone">
<TextView style="@style/vpn_label" android:text="@string/vpn_ipsec_identifier"/> <TextView style="@style/vpn_label"
android:text="@string/vpn_ipsec_identifier"
android:labelFor="@+id/ipsec_identifier"/>
<EditText style="@style/vpn_value" android:id="@+id/ipsec_identifier" <EditText style="@style/vpn_value" android:id="@+id/ipsec_identifier"
android:hint="@string/vpn_not_used"/> android:hint="@string/vpn_not_used"/>
<TextView style="@style/vpn_label" android:text="@string/vpn_ipsec_secret"/> <TextView style="@style/vpn_label"
android:text="@string/vpn_ipsec_secret"
android:labelFor="@+id/ipsec_secret"/>
<EditText style="@style/vpn_value" android:id="@+id/ipsec_secret" <EditText style="@style/vpn_value" android:id="@+id/ipsec_secret"
android:password="true"/> android:password="true"/>
</LinearLayout> </LinearLayout>
@@ -75,7 +87,9 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:visibility="gone"> android:visibility="gone">
<TextView style="@style/vpn_label" android:text="@string/vpn_ipsec_user_cert"/> <TextView style="@style/vpn_label"
android:text="@string/vpn_ipsec_user_cert"
android:labelFor="@+id/ipsec_user_cert"/>
<Spinner style="@style/vpn_value" android:id="@+id/ipsec_user_cert" <Spinner style="@style/vpn_value" android:id="@+id/ipsec_user_cert"
android:prompt="@string/vpn_ipsec_user_cert" /> android:prompt="@string/vpn_ipsec_user_cert" />
</LinearLayout> </LinearLayout>
@@ -85,10 +99,15 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:visibility="gone"> android:visibility="gone">
<TextView style="@style/vpn_label" android:text="@string/vpn_ipsec_ca_cert"/> <TextView style="@style/vpn_label"
android:text="@string/vpn_ipsec_ca_cert"
android:labelFor="@+id/ipsec_ca_cert"/>
<Spinner style="@style/vpn_value" android:id="@+id/ipsec_ca_cert" <Spinner style="@style/vpn_value" android:id="@+id/ipsec_ca_cert"
android:prompt="@string/vpn_ipsec_ca_cert" /> android:prompt="@string/vpn_ipsec_ca_cert" />
<TextView style="@style/vpn_label" android:text="@string/vpn_ipsec_server_cert"/>
<TextView style="@style/vpn_label"
android:text="@string/vpn_ipsec_server_cert"
android:labelFor="@+id/ipsec_server_cert"/>
<Spinner style="@style/vpn_value" android:id="@+id/ipsec_server_cert" <Spinner style="@style/vpn_value" android:id="@+id/ipsec_server_cert"
android:prompt="@string/vpn_ipsec_server_cert" /> android:prompt="@string/vpn_ipsec_server_cert" />
</LinearLayout> </LinearLayout>
@@ -103,15 +122,21 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:visibility="gone"> android:visibility="gone">
<TextView style="@style/vpn_label" android:text="@string/vpn_search_domains"/> <TextView style="@style/vpn_label"
android:text="@string/vpn_search_domains"
android:labelFor="@+id/search_domains"/>
<EditText style="@style/vpn_value" android:id="@+id/search_domains" <EditText style="@style/vpn_value" android:id="@+id/search_domains"
android:hint="@string/vpn_not_used"/> android:hint="@string/vpn_not_used"/>
<TextView style="@style/vpn_label" android:text="@string/vpn_dns_servers"/> <TextView style="@style/vpn_label"
android:text="@string/vpn_dns_servers"
android:labelFor="@+id/dns_servers"/>
<EditText style="@style/vpn_value" android:id="@+id/dns_servers" <EditText style="@style/vpn_value" android:id="@+id/dns_servers"
android:hint="@string/vpn_not_used"/> android:hint="@string/vpn_not_used"/>
<TextView style="@style/vpn_label" android:text="@string/vpn_routes"/> <TextView style="@style/vpn_label"
android:text="@string/vpn_routes"
android:labelFor="@+id/routes"/>
<EditText style="@style/vpn_value" android:id="@+id/routes" <EditText style="@style/vpn_value" android:id="@+id/routes"
android:hint="@string/vpn_not_used"/> android:hint="@string/vpn_not_used"/>
</LinearLayout> </LinearLayout>
@@ -122,10 +147,14 @@
android:orientation="vertical" android:orientation="vertical"
android:animateLayoutChanges="true"> android:animateLayoutChanges="true">
<TextView style="@style/vpn_label" android:text="@string/vpn_username"/> <TextView style="@style/vpn_label"
android:text="@string/vpn_username"
android:labelFor="@+id/username"/>
<EditText style="@style/vpn_value" android:id="@+id/username"/> <EditText style="@style/vpn_value" android:id="@+id/username"/>
<TextView style="@style/vpn_label" android:text="@string/vpn_password"/> <TextView style="@style/vpn_label"
android:text="@string/vpn_password"
android:labelFor="@+id/password"/>
<EditText style="@style/vpn_value" android:id="@+id/password" <EditText style="@style/vpn_value" android:id="@+id/password"
android:password="true"/> android:password="true"/>