Merge "Fix a11yfocus clearing of view with AccessibilityDataSensitive root." into udc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
c9b8f31dee
@@ -874,8 +874,11 @@ public final class AccessibilityInteractionController {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
// Clearing focus does not expose sensitive data, so set fetch flags to ensure that the
|
||||
// root view is always returned if present.
|
||||
setAccessibilityFetchFlags(
|
||||
AccessibilityNodeInfo.FLAG_SERVICE_REQUESTS_INCLUDE_NOT_IMPORTANT_VIEWS);
|
||||
AccessibilityNodeInfo.FLAG_SERVICE_REQUESTS_INCLUDE_NOT_IMPORTANT_VIEWS
|
||||
| AccessibilityNodeInfo.FLAG_SERVICE_IS_ACCESSIBILITY_TOOL);
|
||||
final View root = getRootView();
|
||||
if (root != null && isShown(root)) {
|
||||
final View host = mViewRootImpl.mAccessibilityFocusedHost;
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
|
||||
package android.view;
|
||||
|
||||
import static junit.framework.Assert.assertFalse;
|
||||
import static junit.framework.Assert.assertTrue;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static com.google.common.truth.Truth.assertWithMessage;
|
||||
|
||||
import android.accessibilityservice.AccessibilityServiceInfo;
|
||||
import android.app.Activity;
|
||||
@@ -98,24 +98,42 @@ public class AccessibilityInteractionControllerTest {
|
||||
@Test
|
||||
public void clearAccessibilityFocus_shouldClearFocus() throws Exception {
|
||||
performAccessibilityFocus("com.android.frameworks.coretests:id/appNameBtn");
|
||||
assertTrue("Button should have a11y focus",
|
||||
mButton.isAccessibilityFocused());
|
||||
assertWithMessage("Button should have a11y focus").that(
|
||||
mButton.isAccessibilityFocused()).isTrue();
|
||||
mAccessibilityInteractionController.clearAccessibilityFocusClientThread();
|
||||
sInstrumentation.waitForIdleSync();
|
||||
assertFalse("Button should not have a11y focus",
|
||||
mButton.isAccessibilityFocused());
|
||||
assertWithMessage("Button should not have a11y focus").that(
|
||||
mButton.isAccessibilityFocused()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void clearAccessibilityFocus_uiThread_shouldClearFocus() throws Exception {
|
||||
performAccessibilityFocus("com.android.frameworks.coretests:id/appNameBtn");
|
||||
assertTrue("Button should have a11y focus",
|
||||
mButton.isAccessibilityFocused());
|
||||
sInstrumentation.runOnMainSync(() -> {
|
||||
mAccessibilityInteractionController.clearAccessibilityFocusClientThread();
|
||||
});
|
||||
assertFalse("Button should not have a11y focus",
|
||||
mButton.isAccessibilityFocused());
|
||||
assertWithMessage("Button should have a11y focus").that(
|
||||
mButton.isAccessibilityFocused()).isTrue();
|
||||
sInstrumentation.runOnMainSync(() ->
|
||||
mAccessibilityInteractionController.clearAccessibilityFocusClientThread());
|
||||
assertWithMessage("Button should not have a11y focus").that(
|
||||
mButton.isAccessibilityFocused()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void clearAccessibilityFocus_sensitiveRootView_shouldClearFocus()
|
||||
throws Exception {
|
||||
final View rootView = mButton.getRootView();
|
||||
assertThat(rootView).isNotNull();
|
||||
try {
|
||||
rootView.setAccessibilityDataSensitive(View.ACCESSIBILITY_DATA_SENSITIVE_YES);
|
||||
performAccessibilityFocus("com.android.frameworks.coretests:id/appNameBtn");
|
||||
assertWithMessage("Button should have a11y focus").that(
|
||||
mButton.isAccessibilityFocused()).isTrue();
|
||||
sInstrumentation.runOnMainSync(() ->
|
||||
mAccessibilityInteractionController.clearAccessibilityFocusClientThread());
|
||||
assertWithMessage("Button should not have a11y focus").that(
|
||||
mButton.isAccessibilityFocused()).isFalse();
|
||||
} finally {
|
||||
rootView.setAccessibilityDataSensitive(View.ACCESSIBILITY_DATA_SENSITIVE_AUTO);
|
||||
}
|
||||
}
|
||||
|
||||
private void launchActivity() {
|
||||
|
||||
Reference in New Issue
Block a user