Make getStateDescription() in View none final

Do not make getStateDescription final, since it can cause
compatibility issues with existing derived classes that define
a getStateDescription. Also replaced call to
getContentDescription() to mContentDescription. This is because
if a subclass overrides it, we don't want it to affect the value
used in accessibility service (cause divergence in accessibility
event and accessibilityNodeInfo).

Bug: 143652980
Test: no needed
Change-Id: I36c94c85eb258b3c9474090d841c925331d22d73
This commit is contained in:
yingleiw
2019-10-31 11:26:20 -07:00
parent 6de3245730
commit c9cb2e8307
2 changed files with 9 additions and 8 deletions

View File

@@ -50659,7 +50659,7 @@ package android.view {
method public final int getScrollY();
method @android.view.ViewDebug.ExportedProperty(category="drawing") @ColorInt public int getSolidColor();
method @LayoutRes public int getSourceLayoutResId();
method @android.view.ViewDebug.ExportedProperty(category="accessibility") @Nullable public final CharSequence getStateDescription();
method @android.view.ViewDebug.ExportedProperty(category="accessibility") @Nullable public CharSequence getStateDescription();
method public android.animation.StateListAnimator getStateListAnimator();
method protected int getSuggestedMinimumHeight();
method protected int getSuggestedMinimumWidth();

View File

@@ -8727,7 +8727,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
structure.setContextClickable(true);
}
structure.setClassName(getAccessibilityClassName().toString());
structure.setContentDescription(getContentDescription());
structure.setContentDescription(mContentDescription);
}
/**
@@ -9934,8 +9934,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
info.setImportantForAccessibility(isImportantForAccessibility());
info.setPackageName(mContext.getPackageName());
info.setClassName(getAccessibilityClassName());
info.setStateDescription(getStateDescription());
info.setContentDescription(getContentDescription());
info.setStateDescription(mStateDescription);
info.setContentDescription(mContentDescription);
info.setEnabled(isEnabled());
info.setClickable(isClickable());
@@ -10318,7 +10318,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* @see #setStateDescription(CharSequence)
*/
@ViewDebug.ExportedProperty(category = "accessibility")
public final @Nullable CharSequence getStateDescription() {
public @Nullable CharSequence getStateDescription() {
return mStateDescription;
}
@@ -13724,7 +13724,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
*/
@UnsupportedAppUsage
public CharSequence getIterableTextForAccessibility() {
return getContentDescription();
return mContentDescription;
}
/**
@@ -29514,9 +29514,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
stream.addProperty("text:textAlignment", getTextAlignment());
// accessibility
CharSequence contentDescription = getContentDescription();
stream.addProperty("accessibility:contentDescription",
contentDescription == null ? "" : contentDescription.toString());
mContentDescription == null ? "" : mContentDescription.toString());
stream.addProperty("accessibility:stateDescription",
mStateDescription == null ? "" : mStateDescription.toString());
stream.addProperty("accessibility:labelFor", getLabelFor());
stream.addProperty("accessibility:importantForAccessibility", getImportantForAccessibility());
}