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

Commit 5b07143e authored by RoboErik's avatar RoboErik
Browse files

Pass the new progress when updating a ProgressBar

There was a race condition where the update for a progress change
from the user could pass the wrong progress value causing apps to
treat a non-user update as a user update.

bug:18515012
Change-Id: Ia62a1d07cd15f99effbf644642307c71049748f2
parent 7d85bc4c
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -381,8 +381,8 @@ public abstract class AbsSeekBar extends ProgressBar {
    }

    @Override
    void onProgressRefresh(float scale, boolean fromUser) {
        super.onProgressRefresh(scale, fromUser);
    void onProgressRefresh(float scale, boolean fromUser, int progress) {
        super.onProgressRefresh(scale, fromUser, progress);

        final Drawable thumb = mThumb;
        if (thumb != null) {
+52 −51
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.widget;

import android.annotation.Nullable;
import android.graphics.PorterDuff;

import com.android.internal.R;

import android.content.Context;
@@ -1259,11 +1260,11 @@ public class ProgressBar extends View {
        }

        if (callBackToApp && id == R.id.progress) {
            onProgressRefresh(scale, fromUser);
            onProgressRefresh(scale, fromUser, progress);
        }
    }

    void onProgressRefresh(float scale, boolean fromUser) {
    void onProgressRefresh(float scale, boolean fromUser, int progress) {
        if (AccessibilityManager.getInstance(mContext).isEnabled()) {
            scheduleAccessibilityEventSender();
        }
+35 −35
Original line number Diff line number Diff line
@@ -251,11 +251,11 @@ public class RatingBar extends AbsSeekBar {
    }

    @Override
    void onProgressRefresh(float scale, boolean fromUser) {
        super.onProgressRefresh(scale, fromUser);
    void onProgressRefresh(float scale, boolean fromUser, int progress) {
        super.onProgressRefresh(scale, fromUser, progress);

        // Keep secondary progress in sync with primary
        updateSecondaryProgress(getProgress());
        updateSecondaryProgress(progress);

        if (!fromUser) {
            // Callback for non-user rating changes
+16 −16
Original line number Diff line number Diff line
@@ -88,11 +88,11 @@ public class SeekBar extends AbsSeekBar {
    }

    @Override
    void onProgressRefresh(float scale, boolean fromUser) {
        super.onProgressRefresh(scale, fromUser);
    void onProgressRefresh(float scale, boolean fromUser, int progress) {
        super.onProgressRefresh(scale, fromUser, progress);

        if (mOnSeekBarChangeListener != null) {
            mOnSeekBarChangeListener.onProgressChanged(this, getProgress(), fromUser);
            mOnSeekBarChangeListener.onProgressChanged(this, progress, fromUser);
        }
    }