Loading res/layout/wifi_dialog.xml +3 −3 Original line number Diff line number Diff line Loading @@ -368,14 +368,14 @@ android:layout_height="wrap_content" style="@style/wifi_item" android:paddingBottom="4dp" android:importantForAccessibility="yes" android:contentDescription="@string/wifi_advanced_toggle_description_collapsed" android:importantForAccessibility="no" android:visibility="gone"> <CheckBox android:id="@+id/wifi_advanced_togglebox" android:layout_width="match_parent" android:layout_height="wrap_content" style="@style/wifi_advanced_toggle" android:importantForAccessibility="noHideDescendants" android:importantForAccessibility="yes" android:contentDescription="@string/wifi_advanced_toggle_description" android:text="@string/wifi_show_advanced" /> </LinearLayout> Loading res/values/strings.xml +6 −4 Original line number Diff line number Diff line Loading @@ -1955,10 +1955,12 @@ <!-- Dialog for Access Points --> <skip /> <!-- Label to show/hide advanced options [CHAR LIMIT=40] --> <string name="wifi_show_advanced">Advanced options</string> <!-- Message for talkback to say when Advanced Options expanded [CHAR LIMIT=NONE] --> <string name="wifi_advanced_toggle_description_expanded">Drop down list Advanced Options. Double-tap to collapse.</string> <!-- Message for talkback to say when Advanced Options is collapsed [CHAR LIMIT=NONE] --> <string name="wifi_advanced_toggle_description_collapsed">Drop down list Advanced Options. Double-tap to expand.</string> <!-- Message for talkback to say when focus on Advanced Options[CHAR LIMIT=NONE] --> <string name="wifi_advanced_toggle_description">Drop down list Advanced Options</string> <!-- Extended message for talkback to say when Advanced Options is expanded. (e.g., Double-tap to collapse) [CHAR LIMIT=NONE] --> <string name="wifi_advanced_toggle_description_expanded">collapse</string> <!-- Extended message for talkback to say when Advanced Options is collapsed. (e.g., Double-tap to expand) [CHAR LIMIT=NONE] --> <string name="wifi_advanced_toggle_description_collapsed">expand</string> <!-- Label for the SSID of the network --> <string name="wifi_ssid">Network name</string> <!-- Hint for a text field to enter the SSID of a hidden wifi network. [CHAR LIMIT=35] --> Loading src/com/android/settings/wifi/WifiConfigController.java +31 −7 Original line number Diff line number Diff line Loading @@ -47,7 +47,10 @@ import android.text.TextWatcher; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.View.AccessibilityDelegate; import android.view.ViewGroup; import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; Loading @@ -62,6 +65,8 @@ import android.widget.ScrollView; import android.widget.Spinner; import android.widget.TextView; import androidx.annotation.VisibleForTesting; import com.android.settings.ProxySelector; import com.android.settings.R; import com.android.settings.wifi.details.WifiPrivacyPreferenceController; Loading @@ -76,8 +81,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import androidx.annotation.VisibleForTesting; /** * The class for allowing UIs like {@link WifiDialog} and {@link WifiConfigUiBase} to * share the logic for controlling buttons, text fields, etc. Loading Loading @@ -338,6 +341,7 @@ public class WifiConfigController implements TextWatcher, mAccessPoint.isCarrierAp() ? View.GONE : View.VISIBLE); advancedTogglebox.setOnCheckedChangeListener(this); advancedTogglebox.setChecked(showAdvancedFields); setAdvancedOptionAccessibilityString(showAdvancedFields); mView.findViewById(R.id.wifi_advanced_fields) .setVisibility(showAdvancedFields ? View.VISIBLE : View.GONE); if (mAccessPoint.isCarrierAp()) { Loading Loading @@ -1554,21 +1558,17 @@ public class WifiConfigController implements TextWatcher, ((EditText) mPasswordView).setSelection(pos); } } else if (view.getId() == R.id.wifi_advanced_togglebox) { final View advancedToggle = mView.findViewById(R.id.wifi_advanced_toggle); final int toggleVisibility; final int stringID; if (isChecked) { toggleVisibility = View.VISIBLE; stringID = R.string.wifi_advanced_toggle_description_expanded; // Hide the SoftKeyboard temporary to let user can see most of the expanded items. hideSoftKeyboard(mView.getWindowToken()); } else { toggleVisibility = View.GONE; stringID = R.string.wifi_advanced_toggle_description_collapsed; } mView.findViewById(R.id.wifi_advanced_fields).setVisibility(toggleVisibility); advancedToggle.setContentDescription(mContext.getString(stringID)); setAdvancedOptionAccessibilityString(isChecked); } } Loading Loading @@ -1677,6 +1677,8 @@ public class WifiConfigController implements TextWatcher, mView.findViewById(R.id.hidden_settings_field).setVisibility(View.VISIBLE); ((CheckBox) mView.findViewById(R.id.wifi_advanced_togglebox)) .setOnCheckedChangeListener(this); // Set correct accessibility strings. setAdvancedOptionAccessibilityString(false /* showAdvancedFields */); } /** Loading Loading @@ -1767,4 +1769,26 @@ public class WifiConfigController implements TextWatcher, InputMethodManager.class); inputMethodManager.hideSoftInputFromWindow(windowToken, 0 /* flags */); } private void setAdvancedOptionAccessibilityString(boolean showAdvancedFields) { final CheckBox advancedToggleBox = mView.findViewById(R.id.wifi_advanced_togglebox); advancedToggleBox.setAccessibilityDelegate(new AccessibilityDelegate() { @Override public void onInitializeAccessibilityNodeInfo( View v, AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(v, info); // To let TalkBack don't pronounce checked/unchecked. info.setCheckable(false /* checkable */); // To let TalkBack don't pronounce CheckBox. info.setClassName(null /* className */); final CharSequence accessibilityDoubleTapExtend = mContext.getString( showAdvancedFields ? R.string.wifi_advanced_toggle_description_expanded : R.string.wifi_advanced_toggle_description_collapsed); // Customize TalkBack's pronunciation which been appended to "Double-tap to". final AccessibilityAction customClick = new AccessibilityAction( AccessibilityNodeInfo.ACTION_CLICK, accessibilityDoubleTapExtend); info.addAction(customClick); } }); } } tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java +8 −0 Original line number Diff line number Diff line Loading @@ -557,4 +557,12 @@ public class WifiConfigControllerTest { assertThat(firstChild).isEqualTo(hiddenSettingLayout); } @Test public void getAdvancedOptionContentDescription_whenViewInitialed_shouldBeCorrect() { final CheckBox advButton = mView.findViewById(R.id.wifi_advanced_togglebox); assertThat(advButton.getContentDescription()).isEqualTo( mContext.getString(R.string.wifi_advanced_toggle_description)); } } Loading
res/layout/wifi_dialog.xml +3 −3 Original line number Diff line number Diff line Loading @@ -368,14 +368,14 @@ android:layout_height="wrap_content" style="@style/wifi_item" android:paddingBottom="4dp" android:importantForAccessibility="yes" android:contentDescription="@string/wifi_advanced_toggle_description_collapsed" android:importantForAccessibility="no" android:visibility="gone"> <CheckBox android:id="@+id/wifi_advanced_togglebox" android:layout_width="match_parent" android:layout_height="wrap_content" style="@style/wifi_advanced_toggle" android:importantForAccessibility="noHideDescendants" android:importantForAccessibility="yes" android:contentDescription="@string/wifi_advanced_toggle_description" android:text="@string/wifi_show_advanced" /> </LinearLayout> Loading
res/values/strings.xml +6 −4 Original line number Diff line number Diff line Loading @@ -1955,10 +1955,12 @@ <!-- Dialog for Access Points --> <skip /> <!-- Label to show/hide advanced options [CHAR LIMIT=40] --> <string name="wifi_show_advanced">Advanced options</string> <!-- Message for talkback to say when Advanced Options expanded [CHAR LIMIT=NONE] --> <string name="wifi_advanced_toggle_description_expanded">Drop down list Advanced Options. Double-tap to collapse.</string> <!-- Message for talkback to say when Advanced Options is collapsed [CHAR LIMIT=NONE] --> <string name="wifi_advanced_toggle_description_collapsed">Drop down list Advanced Options. Double-tap to expand.</string> <!-- Message for talkback to say when focus on Advanced Options[CHAR LIMIT=NONE] --> <string name="wifi_advanced_toggle_description">Drop down list Advanced Options</string> <!-- Extended message for talkback to say when Advanced Options is expanded. (e.g., Double-tap to collapse) [CHAR LIMIT=NONE] --> <string name="wifi_advanced_toggle_description_expanded">collapse</string> <!-- Extended message for talkback to say when Advanced Options is collapsed. (e.g., Double-tap to expand) [CHAR LIMIT=NONE] --> <string name="wifi_advanced_toggle_description_collapsed">expand</string> <!-- Label for the SSID of the network --> <string name="wifi_ssid">Network name</string> <!-- Hint for a text field to enter the SSID of a hidden wifi network. [CHAR LIMIT=35] --> Loading
src/com/android/settings/wifi/WifiConfigController.java +31 −7 Original line number Diff line number Diff line Loading @@ -47,7 +47,10 @@ import android.text.TextWatcher; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.View.AccessibilityDelegate; import android.view.ViewGroup; import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; Loading @@ -62,6 +65,8 @@ import android.widget.ScrollView; import android.widget.Spinner; import android.widget.TextView; import androidx.annotation.VisibleForTesting; import com.android.settings.ProxySelector; import com.android.settings.R; import com.android.settings.wifi.details.WifiPrivacyPreferenceController; Loading @@ -76,8 +81,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import androidx.annotation.VisibleForTesting; /** * The class for allowing UIs like {@link WifiDialog} and {@link WifiConfigUiBase} to * share the logic for controlling buttons, text fields, etc. Loading Loading @@ -338,6 +341,7 @@ public class WifiConfigController implements TextWatcher, mAccessPoint.isCarrierAp() ? View.GONE : View.VISIBLE); advancedTogglebox.setOnCheckedChangeListener(this); advancedTogglebox.setChecked(showAdvancedFields); setAdvancedOptionAccessibilityString(showAdvancedFields); mView.findViewById(R.id.wifi_advanced_fields) .setVisibility(showAdvancedFields ? View.VISIBLE : View.GONE); if (mAccessPoint.isCarrierAp()) { Loading Loading @@ -1554,21 +1558,17 @@ public class WifiConfigController implements TextWatcher, ((EditText) mPasswordView).setSelection(pos); } } else if (view.getId() == R.id.wifi_advanced_togglebox) { final View advancedToggle = mView.findViewById(R.id.wifi_advanced_toggle); final int toggleVisibility; final int stringID; if (isChecked) { toggleVisibility = View.VISIBLE; stringID = R.string.wifi_advanced_toggle_description_expanded; // Hide the SoftKeyboard temporary to let user can see most of the expanded items. hideSoftKeyboard(mView.getWindowToken()); } else { toggleVisibility = View.GONE; stringID = R.string.wifi_advanced_toggle_description_collapsed; } mView.findViewById(R.id.wifi_advanced_fields).setVisibility(toggleVisibility); advancedToggle.setContentDescription(mContext.getString(stringID)); setAdvancedOptionAccessibilityString(isChecked); } } Loading Loading @@ -1677,6 +1677,8 @@ public class WifiConfigController implements TextWatcher, mView.findViewById(R.id.hidden_settings_field).setVisibility(View.VISIBLE); ((CheckBox) mView.findViewById(R.id.wifi_advanced_togglebox)) .setOnCheckedChangeListener(this); // Set correct accessibility strings. setAdvancedOptionAccessibilityString(false /* showAdvancedFields */); } /** Loading Loading @@ -1767,4 +1769,26 @@ public class WifiConfigController implements TextWatcher, InputMethodManager.class); inputMethodManager.hideSoftInputFromWindow(windowToken, 0 /* flags */); } private void setAdvancedOptionAccessibilityString(boolean showAdvancedFields) { final CheckBox advancedToggleBox = mView.findViewById(R.id.wifi_advanced_togglebox); advancedToggleBox.setAccessibilityDelegate(new AccessibilityDelegate() { @Override public void onInitializeAccessibilityNodeInfo( View v, AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(v, info); // To let TalkBack don't pronounce checked/unchecked. info.setCheckable(false /* checkable */); // To let TalkBack don't pronounce CheckBox. info.setClassName(null /* className */); final CharSequence accessibilityDoubleTapExtend = mContext.getString( showAdvancedFields ? R.string.wifi_advanced_toggle_description_expanded : R.string.wifi_advanced_toggle_description_collapsed); // Customize TalkBack's pronunciation which been appended to "Double-tap to". final AccessibilityAction customClick = new AccessibilityAction( AccessibilityNodeInfo.ACTION_CLICK, accessibilityDoubleTapExtend); info.addAction(customClick); } }); } }
tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java +8 −0 Original line number Diff line number Diff line Loading @@ -557,4 +557,12 @@ public class WifiConfigControllerTest { assertThat(firstChild).isEqualTo(hiddenSettingLayout); } @Test public void getAdvancedOptionContentDescription_whenViewInitialed_shouldBeCorrect() { final CheckBox advButton = mView.findViewById(R.id.wifi_advanced_togglebox); assertThat(advButton.getContentDescription()).isEqualTo( mContext.getString(R.string.wifi_advanced_toggle_description)); } }