From c9cb2e8307b50ea1867e898123b66af46f64bbdd Mon Sep 17 00:00:00 2001 From: yingleiw Date: Thu, 31 Oct 2019 11:26:20 -0700 Subject: [PATCH] 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 --- api/current.txt | 2 +- core/java/android/view/View.java | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/api/current.txt b/api/current.txt index 2cf1f44ebb6ca..d8355ede4456b 100644 --- a/api/current.txt +++ b/api/current.txt @@ -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(); diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 1599afb358e0f..b90ce876aeb38 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -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()); }