Merge "Adjust the logic of isImportantForAccessibility"

This commit is contained in:
Jackal Guo
2020-02-20 01:23:14 +00:00
committed by Android (Google) Code Review
2 changed files with 14 additions and 2 deletions

View File

@@ -1586,6 +1586,19 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall
info.addChild(wrapper.getLeashToken());
}
@Override
public int getImportantForAccessibility() {
final int mode = super.getImportantForAccessibility();
// If developers explicitly set the important mode for it, don't change the mode.
// Only change the mode to important when this SurfaceView isn't explicitly set and has
// an embedded hierarchy.
if (mRemoteAccessibilityEmbeddedConnection == null
|| mode != IMPORTANT_FOR_ACCESSIBILITY_AUTO) {
return mode;
}
return IMPORTANT_FOR_ACCESSIBILITY_YES;
}
private void initEmbeddedHierarchyForAccessibility(SurfaceControlViewHost.SurfacePackage p) {
final IAccessibilityEmbeddedConnection connection = p.getAccessibilityEmbeddedConnection();
final RemoteAccessibilityEmbeddedConnection wrapper =

View File

@@ -13442,8 +13442,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* @see #getImportantForAccessibility()
*/
public boolean isImportantForAccessibility() {
final int mode = (mPrivateFlags2 & PFLAG2_IMPORTANT_FOR_ACCESSIBILITY_MASK)
>> PFLAG2_IMPORTANT_FOR_ACCESSIBILITY_SHIFT;
final int mode = getImportantForAccessibility();
if (mode == IMPORTANT_FOR_ACCESSIBILITY_NO
|| mode == IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS) {
return false;