[A11Y][Wi-Fi] Fix multiple Spinner selected speak out at once.

When users select edit a Wi-Fi and select enterprise security,
there are multiple spinner shows with a default value.
This change does not allow TalkBack to speak out for multiple
Spinner text at one user selection.

Bug: 153272108
Test: manual
      Wi-Fi Settings -> Add network -> Security spinner
      -> WPA/WPA2/WPA3-Enterprise
      TalkBack should only speak out for the Security spinner.
Change-Id: Id9ab44e4da6d7abb5168e0ab7441ee1e226f5f68
This commit is contained in:
Arc Wang
2020-04-09 15:22:26 +08:00
parent 68084f39d0
commit 98c17ee49f
2 changed files with 46 additions and 0 deletions

View File

@@ -48,6 +48,7 @@ import android.view.KeyEvent;
import android.view.View; import android.view.View;
import android.view.View.AccessibilityDelegate; import android.view.View.AccessibilityDelegate;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeInfo;
import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction; import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
@@ -1020,6 +1021,8 @@ public class WifiConfigController implements TextWatcher,
mEapUserCertSpinner.setOnItemSelectedListener(this); mEapUserCertSpinner.setOnItemSelectedListener(this);
mEapIdentityView = (TextView) mView.findViewById(R.id.identity); mEapIdentityView = (TextView) mView.findViewById(R.id.identity);
mEapAnonymousView = (TextView) mView.findViewById(R.id.anonymous); mEapAnonymousView = (TextView) mView.findViewById(R.id.anonymous);
setAccessibilityDelegateForSecuritySpinners();
} }
if (refreshEapMethods) { if (refreshEapMethods) {
@@ -1148,6 +1151,26 @@ public class WifiConfigController implements TextWatcher,
} }
} }
private void setAccessibilityDelegateForSecuritySpinners() {
final AccessibilityDelegate selectedEventBlocker = new AccessibilityDelegate() {
@Override
public void sendAccessibilityEvent(View host, int eventType) {
if (eventType == AccessibilityEvent.TYPE_VIEW_SELECTED) {
// Ignore TYPE_VIEW_SELECTED or there will be multiple Spinner selected
// information for WifiController#showSecurityFields.
return;
}
super.sendAccessibilityEvent(host, eventType);
}
};
mEapMethodSpinner.setAccessibilityDelegate(selectedEventBlocker);
mPhase2Spinner.setAccessibilityDelegate(selectedEventBlocker);
mEapCaCertSpinner.setAccessibilityDelegate(selectedEventBlocker);
mEapOcspSpinner.setAccessibilityDelegate(selectedEventBlocker);
mEapUserCertSpinner.setAccessibilityDelegate(selectedEventBlocker);
}
/** /**
* EAP-PWD valid fields include * EAP-PWD valid fields include
* identity * identity

View File

@@ -46,6 +46,7 @@ import android.view.KeyEvent;
import android.view.View; import android.view.View;
import android.view.View.AccessibilityDelegate; import android.view.View.AccessibilityDelegate;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeInfo;
import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction; import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
@@ -1014,6 +1015,8 @@ public class WifiConfigController2 implements TextWatcher,
mEapUserCertSpinner.setOnItemSelectedListener(this); mEapUserCertSpinner.setOnItemSelectedListener(this);
mEapIdentityView = (TextView) mView.findViewById(R.id.identity); mEapIdentityView = (TextView) mView.findViewById(R.id.identity);
mEapAnonymousView = (TextView) mView.findViewById(R.id.anonymous); mEapAnonymousView = (TextView) mView.findViewById(R.id.anonymous);
setAccessibilityDelegateForSecuritySpinners();
} }
if (refreshEapMethods) { if (refreshEapMethods) {
@@ -1144,6 +1147,26 @@ public class WifiConfigController2 implements TextWatcher,
} }
} }
private void setAccessibilityDelegateForSecuritySpinners() {
final AccessibilityDelegate selectedEventBlocker = new AccessibilityDelegate() {
@Override
public void sendAccessibilityEvent(View host, int eventType) {
if (eventType == AccessibilityEvent.TYPE_VIEW_SELECTED) {
// Ignore TYPE_VIEW_SELECTED or there will be multiple Spinner selected
// information for WifiController2#showSecurityFields.
return;
}
super.sendAccessibilityEvent(host, eventType);
}
};
mEapMethodSpinner.setAccessibilityDelegate(selectedEventBlocker);
mPhase2Spinner.setAccessibilityDelegate(selectedEventBlocker);
mEapCaCertSpinner.setAccessibilityDelegate(selectedEventBlocker);
mEapOcspSpinner.setAccessibilityDelegate(selectedEventBlocker);
mEapUserCertSpinner.setAccessibilityDelegate(selectedEventBlocker);
}
/** /**
* EAP-PWD valid fields include * EAP-PWD valid fields include
* identity * identity