From 91d6dfc455afbde1828a0767479c8f4dacededfa Mon Sep 17 00:00:00 2001 From: govenliu Date: Mon, 30 Dec 2019 12:30:23 +0800 Subject: [PATCH] [Wi-Fi] Hide the Advanced Option after expanding the advanced option fields. To align with other advanced option behaviors in other Settings items, hide the Advanced Option button after the hidden advanced options are show, which also solve the a11y issue. Bug: 146908469 Test: Add test case getVisibility_whenAdvancedOptionClicked_shouldBeGone to verify View is Gone. Change-Id: I11b2f9b250a7d50d32b8c05207498f4cf14feb41 --- res/values/strings.xml | 2 -- .../settings/wifi/WifiConfigController.java | 35 ++++++++----------- .../settings/wifi/WifiConfigController2.java | 35 ++++++++----------- .../wifi/WifiConfigControllerTest.java | 9 +++++ 4 files changed, 39 insertions(+), 42 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index fca80b43097..03b52b49225 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1956,8 +1956,6 @@ Advanced options Drop down list Advanced Options - - collapse expand diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java index 05fcf5ef41c..e228a142381 100644 --- a/src/com/android/settings/wifi/WifiConfigController.java +++ b/src/com/android/settings/wifi/WifiConfigController.java @@ -347,9 +347,13 @@ public class WifiConfigController implements TextWatcher, showProxyFields(); final CheckBox advancedTogglebox = (CheckBox) mView.findViewById(R.id.wifi_advanced_togglebox); - advancedTogglebox.setOnCheckedChangeListener(this); - advancedTogglebox.setChecked(showAdvancedFields); - setAdvancedOptionAccessibilityString(showAdvancedFields); + if (!showAdvancedFields) { + // Need to show Advanced Option button. + mView.findViewById(R.id.wifi_advanced_toggle).setVisibility(View.VISIBLE); + advancedTogglebox.setOnCheckedChangeListener(this); + advancedTogglebox.setChecked(showAdvancedFields); + setAdvancedOptionAccessibilityString(); + } mView.findViewById(R.id.wifi_advanced_fields) .setVisibility(showAdvancedFields ? View.VISIBLE : View.GONE); } @@ -1553,17 +1557,10 @@ public class WifiConfigController implements TextWatcher, ((EditText) mPasswordView).setSelection(pos); } } else if (view.getId() == R.id.wifi_advanced_togglebox) { - final int toggleVisibility; - final int stringID; - if (isChecked) { - toggleVisibility = View.VISIBLE; - // Hide the SoftKeyboard temporary to let user can see most of the expanded items. - hideSoftKeyboard(mView.getWindowToken()); - } else { - toggleVisibility = View.GONE; - } - mView.findViewById(R.id.wifi_advanced_fields).setVisibility(toggleVisibility); - setAdvancedOptionAccessibilityString(isChecked); + // Hide the SoftKeyboard temporary to let user can see most of the expanded items. + hideSoftKeyboard(mView.getWindowToken()); + view.setVisibility(View.GONE); + mView.findViewById(R.id.wifi_advanced_fields).setVisibility(View.VISIBLE); } } @@ -1673,7 +1670,7 @@ public class WifiConfigController implements TextWatcher, ((CheckBox) mView.findViewById(R.id.wifi_advanced_togglebox)) .setOnCheckedChangeListener(this); // Set correct accessibility strings. - setAdvancedOptionAccessibilityString(false /* showAdvancedFields */); + setAdvancedOptionAccessibilityString(); } /** @@ -1765,7 +1762,7 @@ public class WifiConfigController implements TextWatcher, inputMethodManager.hideSoftInputFromWindow(windowToken, 0 /* flags */); } - private void setAdvancedOptionAccessibilityString(boolean showAdvancedFields) { + private void setAdvancedOptionAccessibilityString() { final CheckBox advancedToggleBox = mView.findViewById(R.id.wifi_advanced_togglebox); advancedToggleBox.setAccessibilityDelegate(new AccessibilityDelegate() { @Override @@ -1776,12 +1773,10 @@ public class WifiConfigController implements TextWatcher, 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); + AccessibilityNodeInfo.ACTION_CLICK, + mContext.getString(R.string.wifi_advanced_toggle_description_collapsed)); info.addAction(customClick); } }); diff --git a/src/com/android/settings/wifi/WifiConfigController2.java b/src/com/android/settings/wifi/WifiConfigController2.java index 0e9c4d03e67..3e8a42cfc6a 100644 --- a/src/com/android/settings/wifi/WifiConfigController2.java +++ b/src/com/android/settings/wifi/WifiConfigController2.java @@ -348,9 +348,13 @@ public class WifiConfigController2 implements TextWatcher, showProxyFields(); final CheckBox advancedTogglebox = (CheckBox) mView.findViewById(R.id.wifi_advanced_togglebox); - advancedTogglebox.setOnCheckedChangeListener(this); - advancedTogglebox.setChecked(showAdvancedFields); - setAdvancedOptionAccessibilityString(showAdvancedFields); + if (!showAdvancedFields) { + // Need to show Advanced Option button. + mView.findViewById(R.id.wifi_advanced_toggle).setVisibility(View.VISIBLE); + advancedTogglebox.setOnCheckedChangeListener(this); + advancedTogglebox.setChecked(showAdvancedFields); + setAdvancedOptionAccessibilityString(); + } mView.findViewById(R.id.wifi_advanced_fields) .setVisibility(showAdvancedFields ? View.VISIBLE : View.GONE); } @@ -1554,17 +1558,10 @@ public class WifiConfigController2 implements TextWatcher, ((EditText) mPasswordView).setSelection(pos); } } else if (view.getId() == R.id.wifi_advanced_togglebox) { - final int toggleVisibility; - final int stringID; - if (isChecked) { - toggleVisibility = View.VISIBLE; - // Hide the SoftKeyboard temporary to let user can see most of the expanded items. - hideSoftKeyboard(mView.getWindowToken()); - } else { - toggleVisibility = View.GONE; - } - mView.findViewById(R.id.wifi_advanced_fields).setVisibility(toggleVisibility); - setAdvancedOptionAccessibilityString(isChecked); + // Hide the SoftKeyboard temporary to let user can see most of the expanded items. + hideSoftKeyboard(mView.getWindowToken()); + view.setVisibility(View.GONE); + mView.findViewById(R.id.wifi_advanced_fields).setVisibility(View.VISIBLE); } } @@ -1674,7 +1671,7 @@ public class WifiConfigController2 implements TextWatcher, ((CheckBox) mView.findViewById(R.id.wifi_advanced_togglebox)) .setOnCheckedChangeListener(this); // Set correct accessibility strings. - setAdvancedOptionAccessibilityString(false /* showAdvancedFields */); + setAdvancedOptionAccessibilityString(); } /** @@ -1766,7 +1763,7 @@ public class WifiConfigController2 implements TextWatcher, inputMethodManager.hideSoftInputFromWindow(windowToken, 0 /* flags */); } - private void setAdvancedOptionAccessibilityString(boolean showAdvancedFields) { + private void setAdvancedOptionAccessibilityString() { final CheckBox advancedToggleBox = mView.findViewById(R.id.wifi_advanced_togglebox); advancedToggleBox.setAccessibilityDelegate(new AccessibilityDelegate() { @Override @@ -1777,12 +1774,10 @@ public class WifiConfigController2 implements TextWatcher, 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); + AccessibilityNodeInfo.ACTION_CLICK, + mContext.getString(R.string.wifi_advanced_toggle_description_collapsed)); info.addAction(customClick); } }); diff --git a/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java b/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java index e1202ae6cc0..bf507425062 100644 --- a/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java @@ -549,4 +549,13 @@ public class WifiConfigControllerTest { assertThat(advButton.getContentDescription()).isEqualTo( mContext.getString(R.string.wifi_advanced_toggle_description)); } + + @Test + public void getVisibility_whenAdvancedOptionClicked_shouldBeGone() { + final CheckBox advButton = mView.findViewById(R.id.wifi_advanced_togglebox); + + advButton.performClick(); + + assertThat(advButton.getVisibility()).isEqualTo(View.GONE); + } }