Loading core/java/android/widget/ProgressBar.java +13 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package android.widget; import static android.view.accessibility.Flags.indeterminateRangeInfo; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; Loading Loading @@ -2364,15 +2366,22 @@ public class ProgressBar extends View { public void onInitializeAccessibilityNodeInfoInternal(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfoInternal(info); if (!isIndeterminate()) { AccessibilityNodeInfo.RangeInfo rangeInfo = AccessibilityNodeInfo.RangeInfo.obtain( AccessibilityNodeInfo.RangeInfo rangeInfo = null; if (isIndeterminate()) { if (indeterminateRangeInfo()) { rangeInfo = AccessibilityNodeInfo.RangeInfo.INDETERMINATE; } } else { rangeInfo = new AccessibilityNodeInfo.RangeInfo( AccessibilityNodeInfo.RangeInfo.RANGE_TYPE_INT, getMin(), getMax(), getProgress()); info.setRangeInfo(rangeInfo); } // Only set the default state description when custom state descripton is null. info.setRangeInfo(rangeInfo); // Only set the default state description when custom state description is null. if (getStateDescription() == null) { // TODO(b/380340432): Remove after accessibility services stop relying on this. if (isIndeterminate()) { info.setStateDescription(getResources().getString(R.string.in_progress)); } else { Loading core/tests/coretests/src/android/widget/ProgressBarTest.java +21 −0 Original line number Diff line number Diff line Loading @@ -23,8 +23,12 @@ import static org.junit.Assert.assertTrue; import android.app.Instrumentation; import android.platform.test.annotations.Presubmit; import android.platform.test.annotations.RequiresFlagsEnabled; import android.platform.test.flag.junit.CheckFlagsRule; import android.platform.test.flag.junit.DeviceFlagsValueProvider; import android.view.View; import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.Flags; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.SmallTest; Loading @@ -32,6 +36,7 @@ import androidx.test.platform.app.InstrumentationRegistry; import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -40,6 +45,10 @@ import org.junit.runner.RunWith; @Presubmit public class ProgressBarTest { private final Instrumentation mInstrumentation = InstrumentationRegistry.getInstrumentation(); @Rule public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule(); private ProgressBar mBar; private AccessibilityNodeInfo mInfo; Loading Loading @@ -181,4 +190,16 @@ public class ProgressBarTest { mBar.onInitializeAccessibilityNodeInfo(mInfo); assertEquals("custom state", mInfo.getStateDescription().toString()); } @Test @RequiresFlagsEnabled(Flags.FLAG_INDETERMINATE_RANGE_INFO) public void testRangeInfo_indeterminateProgressBar_usesTypeIndeterminate() { mBar.setIndeterminate(true); assertTrue(mBar.isIndeterminate()); mBar.onInitializeAccessibilityNodeInfo(mInfo); assertEquals(mInfo.getRangeInfo().getType(), AccessibilityNodeInfo.RangeInfo.RANGE_TYPE_INDETERMINATE); } } Loading
core/java/android/widget/ProgressBar.java +13 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package android.widget; import static android.view.accessibility.Flags.indeterminateRangeInfo; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; Loading Loading @@ -2364,15 +2366,22 @@ public class ProgressBar extends View { public void onInitializeAccessibilityNodeInfoInternal(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfoInternal(info); if (!isIndeterminate()) { AccessibilityNodeInfo.RangeInfo rangeInfo = AccessibilityNodeInfo.RangeInfo.obtain( AccessibilityNodeInfo.RangeInfo rangeInfo = null; if (isIndeterminate()) { if (indeterminateRangeInfo()) { rangeInfo = AccessibilityNodeInfo.RangeInfo.INDETERMINATE; } } else { rangeInfo = new AccessibilityNodeInfo.RangeInfo( AccessibilityNodeInfo.RangeInfo.RANGE_TYPE_INT, getMin(), getMax(), getProgress()); info.setRangeInfo(rangeInfo); } // Only set the default state description when custom state descripton is null. info.setRangeInfo(rangeInfo); // Only set the default state description when custom state description is null. if (getStateDescription() == null) { // TODO(b/380340432): Remove after accessibility services stop relying on this. if (isIndeterminate()) { info.setStateDescription(getResources().getString(R.string.in_progress)); } else { Loading
core/tests/coretests/src/android/widget/ProgressBarTest.java +21 −0 Original line number Diff line number Diff line Loading @@ -23,8 +23,12 @@ import static org.junit.Assert.assertTrue; import android.app.Instrumentation; import android.platform.test.annotations.Presubmit; import android.platform.test.annotations.RequiresFlagsEnabled; import android.platform.test.flag.junit.CheckFlagsRule; import android.platform.test.flag.junit.DeviceFlagsValueProvider; import android.view.View; import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.Flags; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.SmallTest; Loading @@ -32,6 +36,7 @@ import androidx.test.platform.app.InstrumentationRegistry; import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -40,6 +45,10 @@ import org.junit.runner.RunWith; @Presubmit public class ProgressBarTest { private final Instrumentation mInstrumentation = InstrumentationRegistry.getInstrumentation(); @Rule public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule(); private ProgressBar mBar; private AccessibilityNodeInfo mInfo; Loading Loading @@ -181,4 +190,16 @@ public class ProgressBarTest { mBar.onInitializeAccessibilityNodeInfo(mInfo); assertEquals("custom state", mInfo.getStateDescription().toString()); } @Test @RequiresFlagsEnabled(Flags.FLAG_INDETERMINATE_RANGE_INFO) public void testRangeInfo_indeterminateProgressBar_usesTypeIndeterminate() { mBar.setIndeterminate(true); assertTrue(mBar.isIndeterminate()); mBar.onInitializeAccessibilityNodeInfo(mInfo); assertEquals(mInfo.getRangeInfo().getType(), AccessibilityNodeInfo.RangeInfo.RANGE_TYPE_INDETERMINATE); } }