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

Commit a865c95c authored by android-build-team Robot's avatar android-build-team Robot
Browse files

release-request-94bbded7-c270-40fa-9a74-fedecfd046c6-for-git_oc-release-403417...

release-request-94bbded7-c270-40fa-9a74-fedecfd046c6-for-git_oc-release-4034177 snap-temp-L73200000066785187

Change-Id: I7369c40d56b4c25a1649e0af3d142db95c23ce5a
parents a3cd2834 37f6b7f7
Loading
Loading
Loading
Loading
+42 −30
Original line number Original line Diff line number Diff line
@@ -93,6 +93,7 @@ import com.android.settings.datausage.DataUsageList;
import com.android.settings.datausage.DataUsageSummary;
import com.android.settings.datausage.DataUsageSummary;
import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
import com.android.settings.fuelgauge.BatteryEntry;
import com.android.settings.fuelgauge.BatteryEntry;
import com.android.settings.fuelgauge.BatteryStatsHelperLoader;
import com.android.settings.fuelgauge.BatteryUtils;
import com.android.settings.fuelgauge.BatteryUtils;
import com.android.settings.notification.AppNotificationSettings;
import com.android.settings.notification.AppNotificationSettings;
import com.android.settings.notification.NotificationBackend;
import com.android.settings.notification.NotificationBackend;
@@ -143,6 +144,7 @@ public class InstalledAppDetails extends AppInfoBase


    private static final int LOADER_CHART_DATA = 2;
    private static final int LOADER_CHART_DATA = 2;
    private static final int LOADER_STORAGE = 3;
    private static final int LOADER_STORAGE = 3;
    private static final int LOADER_BATTERY = 4;


    private static final int DLG_FORCE_STOP = DLG_BASE + 1;
    private static final int DLG_FORCE_STOP = DLG_BASE + 1;
    private static final int DLG_DISABLE = DLG_BASE + 2;
    private static final int DLG_DISABLE = DLG_BASE + 2;
@@ -204,6 +206,31 @@ public class InstalledAppDetails extends AppInfoBase
    private String mBatteryPercent;
    private String mBatteryPercent;
    private BatteryUtils mBatteryUtils;
    private BatteryUtils mBatteryUtils;


    private final LoaderCallbacks<BatteryStatsHelper> mBatteryCallbacks =
            new LoaderCallbacks<BatteryStatsHelper>() {

                @Override
                public Loader<BatteryStatsHelper> onCreateLoader(int id, Bundle args) {
                    return new BatteryStatsHelperLoader(getContext(), args);
                }

                @Override
                public void onLoadFinished(Loader<BatteryStatsHelper> loader,
                        BatteryStatsHelper batteryHelper) {
                    mBatteryHelper = batteryHelper;
                    if (mPackageInfo != null) {
                        mSipper = findTargetSipper(batteryHelper, mPackageInfo.applicationInfo.uid);
                        if (getActivity() != null) {
                            updateBattery();
                        }
                    }
                }

                @Override
                public void onLoaderReset(Loader<BatteryStatsHelper> loader) {
                }
            };

    private boolean handleDisableable(Button button) {
    private boolean handleDisableable(Button button) {
        boolean disableable = false;
        boolean disableable = false;
        // Try to prevent the user from bricking their phone
        // Try to prevent the user from bricking their phone
@@ -362,7 +389,6 @@ public class InstalledAppDetails extends AppInfoBase
        } else {
        } else {
            removePreference(KEY_DATA);
            removePreference(KEY_DATA);
        }
        }
        mBatteryHelper = new BatteryStatsHelper(getActivity(), true);
        mBatteryUtils = BatteryUtils.getInstance(getContext());
        mBatteryUtils = BatteryUtils.getInstance(getContext());
    }
    }


@@ -386,7 +412,7 @@ public class InstalledAppDetails extends AppInfoBase
                    mDataCallbacks);
                    mDataCallbacks);
            loaderManager.restartLoader(LOADER_STORAGE, Bundle.EMPTY, this);
            loaderManager.restartLoader(LOADER_STORAGE, Bundle.EMPTY, this);
        }
        }
        new BatteryUpdater().execute();
        getLoaderManager().initLoader(LOADER_BATTERY, Bundle.EMPTY, mBatteryCallbacks);
        new MemoryUpdater().execute();
        new MemoryUpdater().execute();
        updateDynamicPrefs();
        updateDynamicPrefs();
    }
    }
@@ -625,6 +651,19 @@ public class InstalledAppDetails extends AppInfoBase
        return showIt;
        return showIt;
    }
    }


    @VisibleForTesting
    BatterySipper findTargetSipper(BatteryStatsHelper batteryHelper, int uid) {
        List<BatterySipper> usageList = batteryHelper.getUsageList();
        for (int i = 0, size = usageList.size(); i < size; i++) {
            BatterySipper sipper = usageList.get(i);
            if (sipper.getUid() == uid) {
                return sipper;
            }
        }

        return null;
    }

    private boolean signaturesMatch(String pkg1, String pkg2) {
    private boolean signaturesMatch(String pkg1, String pkg2) {
        if (pkg1 != null && pkg2 != null) {
        if (pkg1 != null && pkg2 != null) {
            try {
            try {
@@ -719,7 +758,7 @@ public class InstalledAppDetails extends AppInfoBase
    }
    }


    private void updateBattery() {
    private void updateBattery() {
        if (mSipper != null) {
        if (mSipper != null && mBatteryHelper != null) {
            mBatteryPreference.setEnabled(true);
            mBatteryPreference.setEnabled(true);
            final int dischargeAmount = mBatteryHelper.getStats().getDischargeAmount(
            final int dischargeAmount = mBatteryHelper.getStats().getDischargeAmount(
                    BatteryStats.STATS_SINCE_CHARGED);
                    BatteryStats.STATS_SINCE_CHARGED);
@@ -1343,33 +1382,6 @@ public class InstalledAppDetails extends AppInfoBase


    }
    }


    private class BatteryUpdater extends AsyncTask<Void, Void, Void> {
        @Override
        protected Void doInBackground(Void... params) {
            mBatteryHelper.create((Bundle) null);
            mBatteryHelper.refreshStats(BatteryStats.STATS_SINCE_CHARGED,
                    mUserManager.getUserProfiles());
            List<BatterySipper> usageList = mBatteryHelper.getUsageList();
            final int N = usageList.size();
            for (int i = 0; i < N; i++) {
                BatterySipper sipper = usageList.get(i);
                if (sipper.getUid() == mPackageInfo.applicationInfo.uid) {
                    mSipper = sipper;
                    break;
                }
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            if (getActivity() == null) {
                return;
            }
            refreshUi();
        }
    }

    /**
    /**
     * Elicit this class for testing. Test cannot be done in robolectric because it
     * Elicit this class for testing. Test cannot be done in robolectric because it
     * invokes the new API.
     * invokes the new API.
+8 −0
Original line number Original line Diff line number Diff line
@@ -159,6 +159,14 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
        startIconAnimation();
        startIconAnimation();
    }
    }


    @Override
    protected void onPause() {
        super.onPause();
        if (mSidecar != null) {
            mSidecar.setListener(null);
        }
    }

    private void startIconAnimation() {
    private void startIconAnimation() {
        mIconAnimationDrawable.start();
        mIconAnimationDrawable.start();
    }
    }
+66 −0
Original line number Original line Diff line number Diff line
@@ -31,6 +31,8 @@ import com.android.settings.Utils;
import com.android.settings.core.InstrumentedFragment;
import com.android.settings.core.InstrumentedFragment;
import com.android.settings.password.IFingerprintManager;
import com.android.settings.password.IFingerprintManager;


import java.util.ArrayList;

/**
/**
 * Sidecar fragment to handle the state around fingerprint enrollment.
 * Sidecar fragment to handle the state around fingerprint enrollment.
 */
 */
@@ -46,6 +48,57 @@ public class FingerprintEnrollSidecar extends InstrumentedFragment {
    private boolean mDone;
    private boolean mDone;
    private int mUserId;
    private int mUserId;
    private IFingerprintManager mFingerprintManager;
    private IFingerprintManager mFingerprintManager;
    private ArrayList<QueuedEvent> mQueuedEvents;

    private abstract class QueuedEvent {
        public abstract void send(Listener listener);
    }

    private class QueuedEnrollmentProgress extends QueuedEvent {
        int enrollmentSteps;
        int remaining;
        public QueuedEnrollmentProgress(int enrollmentSteps, int remaining) {
            this.enrollmentSteps = enrollmentSteps;
            this.remaining = remaining;
        }

        @Override
        public void send(Listener listener) {
            listener.onEnrollmentProgressChange(enrollmentSteps, remaining);
        }
    }

    private class QueuedEnrollmentHelp extends QueuedEvent {
        int helpMsgId;
        CharSequence helpString;
        public QueuedEnrollmentHelp(int helpMsgId, CharSequence helpString) {
            this.helpMsgId = helpMsgId;
            this.helpString = helpString;
        }

        @Override
        public void send(Listener listener) {
            listener.onEnrollmentHelp(helpString);
        }
    }

    private class QueuedEnrollmentError extends QueuedEvent {
        int errMsgId;
        CharSequence errString;
        public QueuedEnrollmentError(int errMsgId, CharSequence errString) {
            this.errMsgId = errMsgId;
            this.errString = errString;
        }

        @Override
        public void send(Listener listener) {
            listener.onEnrollmentError(errMsgId, errString);
        }
    }

    public FingerprintEnrollSidecar() {
        mQueuedEvents = new ArrayList<>();
    }


    @Override
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
    public void onCreate(@Nullable Bundle savedInstanceState) {
@@ -103,6 +156,13 @@ public class FingerprintEnrollSidecar extends InstrumentedFragment {


    public void setListener(Listener listener) {
    public void setListener(Listener listener) {
        mListener = listener;
        mListener = listener;
        if (mListener != null) {
            for (int i=0; i<mQueuedEvents.size(); i++) {
                QueuedEvent event = mQueuedEvents.get(i);
                event.send(mListener);
            }
            mQueuedEvents.clear();
        }
    }
    }


    public int getEnrollmentSteps() {
    public int getEnrollmentSteps() {
@@ -129,6 +189,8 @@ public class FingerprintEnrollSidecar extends InstrumentedFragment {
            mDone = remaining == 0;
            mDone = remaining == 0;
            if (mListener != null) {
            if (mListener != null) {
                mListener.onEnrollmentProgressChange(mEnrollmentSteps, remaining);
                mListener.onEnrollmentProgressChange(mEnrollmentSteps, remaining);
            } else {
                mQueuedEvents.add(new QueuedEnrollmentProgress(mEnrollmentSteps, remaining));
            }
            }
        }
        }


@@ -136,6 +198,8 @@ public class FingerprintEnrollSidecar extends InstrumentedFragment {
        public void onEnrollmentHelp(int helpMsgId, CharSequence helpString) {
        public void onEnrollmentHelp(int helpMsgId, CharSequence helpString) {
            if (mListener != null) {
            if (mListener != null) {
                mListener.onEnrollmentHelp(helpString);
                mListener.onEnrollmentHelp(helpString);
            } else {
                mQueuedEvents.add(new QueuedEnrollmentHelp(helpMsgId, helpString));
            }
            }
        }
        }


@@ -143,6 +207,8 @@ public class FingerprintEnrollSidecar extends InstrumentedFragment {
        public void onEnrollmentError(int errMsgId, CharSequence errString) {
        public void onEnrollmentError(int errMsgId, CharSequence errString) {
            if (mListener != null) {
            if (mListener != null) {
                mListener.onEnrollmentError(errMsgId, errString);
                mListener.onEnrollmentError(errMsgId, errString);
            } else {
                mQueuedEvents.add(new QueuedEnrollmentError(errMsgId, errString));
            }
            }
            mEnrolling = false;
            mEnrolling = false;
        }
        }
+0 −7
Original line number Original line Diff line number Diff line
@@ -38,8 +38,6 @@ public class BatteryMeterView extends ImageView {
    @VisibleForTesting
    @VisibleForTesting
    ColorFilter mAccentColorFilter;
    ColorFilter mAccentColorFilter;


    private int mLevel;

    public BatteryMeterView(Context context) {
    public BatteryMeterView(Context context) {
        this(context, null, 0);
        this(context, null, 0);
    }
    }
@@ -66,7 +64,6 @@ public class BatteryMeterView extends ImageView {
    }
    }


    public void setBatteryLevel(int level) {
    public void setBatteryLevel(int level) {
        mLevel = level;
        mDrawable.setBatteryLevel(level);
        mDrawable.setBatteryLevel(level);
        if (level < mDrawable.getCriticalLevel()) {
        if (level < mDrawable.getCriticalLevel()) {
            mDrawable.setBatteryColorFilter(mErrorColorFilter);
            mDrawable.setBatteryColorFilter(mErrorColorFilter);
@@ -75,10 +72,6 @@ public class BatteryMeterView extends ImageView {
        }
        }
    }
    }


    public int getBatteryLevel() {
        return mLevel;
    }

    public void setCharging(boolean charging) {
    public void setCharging(boolean charging) {
        mDrawable.setCharging(charging);
        mDrawable.setCharging(charging);
    }
    }
+3 −61
Original line number Original line Diff line number Diff line
@@ -16,8 +16,6 @@


package com.android.settings.fuelgauge;
package com.android.settings.fuelgauge;


import android.animation.Animator;
import android.animation.ValueAnimator;
import android.app.Activity;
import android.app.Activity;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
@@ -43,7 +41,6 @@ import android.util.TypedValue;
import android.view.Menu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.MenuItem;
import android.view.animation.AnimationUtils;
import android.widget.TextView;
import android.widget.TextView;


import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
@@ -87,10 +84,6 @@ public class PowerUsageSummary extends PowerUsageBase {
    private static final String KEY_BATTERY_HEADER = "battery_header";
    private static final String KEY_BATTERY_HEADER = "battery_header";
    private static final int MAX_ITEMS_TO_LIST = USE_FAKE_DATA ? 30 : 10;
    private static final int MAX_ITEMS_TO_LIST = USE_FAKE_DATA ? 30 : 10;
    private static final int MIN_AVERAGE_POWER_THRESHOLD_MILLI_AMP = 10;
    private static final int MIN_AVERAGE_POWER_THRESHOLD_MILLI_AMP = 10;
    private static final int BATTERY_ANIMATION_DURATION_MS_PER_LEVEL = 30;

    @VisibleForTesting
    static final String ARG_BATTERY_LEVEL = "key_battery_level";


    private static final String KEY_SCREEN_USAGE = "screen_usage";
    private static final String KEY_SCREEN_USAGE = "screen_usage";
    private static final String KEY_TIME_SINCE_LAST_FULL_CHARGE = "last_full_charge";
    private static final String KEY_TIME_SINCE_LAST_FULL_CHARGE = "last_full_charge";
@@ -111,8 +104,6 @@ public class PowerUsageSummary extends PowerUsageBase {
    private final FooterPreferenceMixin mFooterPreferenceMixin =
    private final FooterPreferenceMixin mFooterPreferenceMixin =
            new FooterPreferenceMixin(this, getLifecycle());
            new FooterPreferenceMixin(this, getLifecycle());


    @VisibleForTesting
    int mBatteryLevel;
    @VisibleForTesting
    @VisibleForTesting
    boolean mShowAllApps = false;
    boolean mShowAllApps = false;
    @VisibleForTesting
    @VisibleForTesting
@@ -133,8 +124,6 @@ public class PowerUsageSummary extends PowerUsageBase {
        super.onCreate(icicle);
        super.onCreate(icicle);
        setAnimationAllowed(true);
        setAnimationAllowed(true);


        mBatteryLevel = getContext().getResources().getInteger(
                com.android.internal.R.integer.config_criticalBatteryWarningLevel) + 1;
        mBatteryLayoutPref = (LayoutPreference) findPreference(KEY_BATTERY_HEADER);
        mBatteryLayoutPref = (LayoutPreference) findPreference(KEY_BATTERY_HEADER);
        mAppListGroup = (PreferenceGroup) findPreference(KEY_APP_LIST);
        mAppListGroup = (PreferenceGroup) findPreference(KEY_APP_LIST);
        mScreenUsagePref = (PowerGaugePreference) findPreference(KEY_SCREEN_USAGE);
        mScreenUsagePref = (PowerGaugePreference) findPreference(KEY_SCREEN_USAGE);
@@ -147,14 +136,6 @@ public class PowerUsageSummary extends PowerUsageBase {
        initFeatureProvider();
        initFeatureProvider();
    }
    }


    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        if (savedInstanceState != null) {
            mBatteryLevel = savedInstanceState.getInt(ARG_BATTERY_LEVEL);
        }
    }

    @Override
    @Override
    public int getMetricsCategory() {
    public int getMetricsCategory() {
        return MetricsEvent.FUELGAUGE_POWER_USAGE_SUMMARY;
        return MetricsEvent.FUELGAUGE_POWER_USAGE_SUMMARY;
@@ -163,8 +144,6 @@ public class PowerUsageSummary extends PowerUsageBase {
    @Override
    @Override
    public void onResume() {
    public void onResume() {
        super.onResume();
        super.onResume();

        initHeaderPreference();
    }
    }


    @Override
    @Override
@@ -182,12 +161,6 @@ public class PowerUsageSummary extends PowerUsageBase {
        }
        }
    }
    }


    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt(ARG_BATTERY_LEVEL, mBatteryLevel);
    }

    @Override
    @Override
    public boolean onPreferenceTreeClick(Preference preference) {
    public boolean onPreferenceTreeClick(Preference preference) {
        if (KEY_BATTERY_HEADER.equals(preference.getKey())) {
        if (KEY_BATTERY_HEADER.equals(preference.getKey())) {
@@ -596,46 +569,15 @@ public class PowerUsageSummary extends PowerUsageBase {
                .findViewById(R.id.battery_header_icon);
                .findViewById(R.id.battery_header_icon);
        final TextView timeText = (TextView) mBatteryLayoutPref.findViewById(R.id.battery_percent);
        final TextView timeText = (TextView) mBatteryLayoutPref.findViewById(R.id.battery_percent);
        final TextView summary1 = (TextView) mBatteryLayoutPref.findViewById(R.id.summary1);
        final TextView summary1 = (TextView) mBatteryLayoutPref.findViewById(R.id.summary1);
        timeText.setText(Utils.formatPercentage(info.batteryLevel));
        if (info.remainingLabel == null ) {
        if (info.remainingLabel == null ) {
            summary1.setText(info.statusLabel);
            summary1.setText(info.statusLabel);
        } else {
        } else {
            summary1.setText(info.remainingLabel);
            summary1.setText(info.remainingLabel);
        }
        }
        batteryView.setCharging(!info.discharging);
        startBatteryHeaderAnimationIfNecessary(batteryView, timeText, mBatteryLevel,
                info.batteryLevel);
    }


    @VisibleForTesting
        batteryView.setBatteryLevel(info.batteryLevel);
    void initHeaderPreference() {
        batteryView.setCharging(!info.discharging);
        final BatteryMeterView batteryView = (BatteryMeterView) mBatteryLayoutPref
                .findViewById(R.id.battery_header_icon);
        final TextView timeText = (TextView) mBatteryLayoutPref.findViewById(R.id.battery_percent);

        batteryView.setBatteryLevel(mBatteryLevel);
        timeText.setText(Utils.formatPercentage(mBatteryLevel));
    }

    @VisibleForTesting
    void startBatteryHeaderAnimationIfNecessary(BatteryMeterView batteryView, TextView timeTextView,
            int prevLevel, int currentLevel) {
        mBatteryLevel = currentLevel;
        final int diff = Math.abs(prevLevel - currentLevel);
        if (diff != 0) {
            final ValueAnimator animator = ValueAnimator.ofInt(prevLevel, currentLevel);
            animator.setDuration(BATTERY_ANIMATION_DURATION_MS_PER_LEVEL * diff);
            animator.setInterpolator(AnimationUtils.loadInterpolator(getContext(),
                    android.R.interpolator.fast_out_slow_in));
            animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                @Override
                public void onAnimationUpdate(ValueAnimator animation) {
                    final Integer level = (Integer) animation.getAnimatedValue();
                    batteryView.setBatteryLevel(level);
                    timeTextView.setText(Utils.formatPercentage(level));
                }
            });
            animator.start();
        }
    }
    }


    @VisibleForTesting
    @VisibleForTesting
Loading