Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8e36f0a2 authored by yingleiw's avatar yingleiw Committed by Yinglei Wang
Browse files

Add accessibility manager enabled check in progressbar

formatStateDescription() in onProgressRefresh() is causing performance
degradation with accessibility off.

Note that stateDescription is set in onInitializeAccessibilityNodeInfo
to ensure that accessibility always get the update-to-date
stateDescription. Otherwise, stateDescription might be stale on first
accessibility focus and the user might get wrong information.

Fix: b/166215147

Test: tested with talkback enabled from the beginning or from the
middle.

Change-Id: I9fb99b479b172d87c8d0fa1b8765dab53445b993
(cherry picked from commit fc9d9b80)
parent 71f959be
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ import android.view.View;
import android.view.ViewDebug;
import android.view.ViewHierarchyEncoder;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.AccessibilityNodeInfo;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
@@ -306,9 +307,6 @@ public class ProgressBar extends View {
        setMax(a.getInt(R.styleable.ProgressBar_max, mMax));

        setProgress(a.getInt(R.styleable.ProgressBar_progress, mProgress));
        // onProgressRefresh() is only called when the progress changes. So we should set
        // stateDescription during initialization here.
        super.setStateDescription(formatStateDescription(mProgress));

        setSecondaryProgress(a.getInt(
                R.styleable.ProgressBar_secondaryProgress, mSecondaryProgress));
@@ -1601,7 +1599,8 @@ public class ProgressBar extends View {
    }

    void onProgressRefresh(float scale, boolean fromUser, int progress) {
        if (mCustomStateDescription == null) {
        if (AccessibilityManager.getInstance(mContext).isEnabled()
                && mCustomStateDescription == null) {
            super.setStateDescription(formatStateDescription(mProgress));
        }
    }
@@ -2325,6 +2324,7 @@ public class ProgressBar extends View {
                    AccessibilityNodeInfo.RangeInfo.RANGE_TYPE_INT, getMin(), getMax(),
                    getProgress());
            info.setRangeInfo(rangeInfo);
            info.setStateDescription(formatStateDescription(mProgress));
        }
    }