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

Commit bbf1a743 authored by Jim Miller's avatar Jim Miller
Browse files

Clean up info and callback architecture in KeyguardUpdateMonitor.

- We now pass a more robust battery status object to methods that handle battery updates.
- Consolidated battery decision code into BatteryStatus object (e.g.  charging, low, charged)
so it can be shared.
- Consolidated SIMStateCallback into common KeyguardUpdateMonitorCallback object to reduce complexity.
- Consolidated user changes into common callback using KeyguardUpdateMonitorCallback.
- Fixed a race condition caused by launching LockSettingsService after WindowManagerService.

Change-Id: I6b2a328f8581f35593e41348693b92ab66d02429
parent 219dfa4d
Loading
Loading
Loading
Loading
+22 −34
Original line number Original line Diff line number Diff line
@@ -21,8 +21,7 @@ import com.android.internal.telephony.IccCardConstants;
import com.android.internal.widget.DigitalClock;
import com.android.internal.widget.DigitalClock;
import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.TransportControlView;
import com.android.internal.widget.TransportControlView;
import com.android.internal.policy.impl.KeyguardUpdateMonitor.InfoCallbackImpl;
import com.android.internal.policy.impl.KeyguardUpdateMonitor.BatteryStatus;
import com.android.internal.policy.impl.KeyguardUpdateMonitor.SimStateCallback;


import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Date;
import java.util.Date;
@@ -107,6 +106,8 @@ class KeyguardStatusViewManager implements OnClickListener {
    private CharSequence mSpn;
    private CharSequence mSpn;
    protected int mPhoneState;
    protected int mPhoneState;
    private DigitalClock mDigitalClock;
    private DigitalClock mDigitalClock;
    protected boolean mBatteryCharged;
    protected boolean mBatteryIsLow;


    private class TransientTextManager {
    private class TransientTextManager {
        private TextView mTextView;
        private TextView mTextView;
@@ -198,8 +199,8 @@ class KeyguardStatusViewManager implements OnClickListener {


        mTransientTextManager = new TransientTextManager(mCarrierView);
        mTransientTextManager = new TransientTextManager(mCarrierView);


        mUpdateMonitor.registerInfoCallback(mInfoCallback);
        // Registering this callback immediately updates the battery state, among other things.
        mUpdateMonitor.registerSimStateCallback(mSimStateCallback);
        mUpdateMonitor.registerCallback(mInfoCallback);


        resetStatusInfo();
        resetStatusInfo();
        refreshDate();
        refreshDate();
@@ -287,7 +288,6 @@ class KeyguardStatusViewManager implements OnClickListener {
    public void onPause() {
    public void onPause() {
        if (DEBUG) Log.v(TAG, "onPause()");
        if (DEBUG) Log.v(TAG, "onPause()");
        mUpdateMonitor.removeCallback(mInfoCallback);
        mUpdateMonitor.removeCallback(mInfoCallback);
        mUpdateMonitor.removeCallback(mSimStateCallback);
    }
    }


    /** {@inheritDoc} */
    /** {@inheritDoc} */
@@ -299,8 +299,7 @@ class KeyguardStatusViewManager implements OnClickListener {
            mDigitalClock.updateTime();
            mDigitalClock.updateTime();
        }
        }


        mUpdateMonitor.registerInfoCallback(mInfoCallback);
        mUpdateMonitor.registerCallback(mInfoCallback);
        mUpdateMonitor.registerSimStateCallback(mSimStateCallback);
        resetStatusInfo();
        resetStatusInfo();
        // Issue the biometric unlock failure message in a centralized place
        // Issue the biometric unlock failure message in a centralized place
        // TODO: we either need to make the Face Unlock multiple failures string a more general
        // TODO: we either need to make the Face Unlock multiple failures string a more general
@@ -312,9 +311,6 @@ class KeyguardStatusViewManager implements OnClickListener {


    void resetStatusInfo() {
    void resetStatusInfo() {
        mInstructionText = null;
        mInstructionText = null;
        mShowingBatteryInfo = mUpdateMonitor.shouldShowBatteryInfo();
        mPluggedIn = mUpdateMonitor.isDevicePluggedIn();
        mBatteryLevel = mUpdateMonitor.getBatteryLevel();
        updateStatusLines(true);
        updateStatusLines(true);
    }
    }


@@ -379,14 +375,11 @@ class KeyguardStatusViewManager implements OnClickListener {
        if (mShowingBatteryInfo) {
        if (mShowingBatteryInfo) {
            // Battery status
            // Battery status
            if (mPluggedIn) {
            if (mPluggedIn) {
                // Charging or charged
                // Charging, charged or waiting to charge.
                if (mUpdateMonitor.isDeviceCharged()) {
                string = getContext().getString(mBatteryCharged ? R.string.lockscreen_charged
                    string = getContext().getString(R.string.lockscreen_charged);
                        :R.string.lockscreen_plugged_in, mBatteryLevel);
                } else {
                    string = getContext().getString(R.string.lockscreen_plugged_in, mBatteryLevel);
                }
                icon.value = CHARGING_ICON;
                icon.value = CHARGING_ICON;
            } else if (mBatteryLevel < KeyguardUpdateMonitor.LOW_BATTERY_THRESHOLD) {
            } else if (mBatteryIsLow) {
                // Battery is low
                // Battery is low
                string = getContext().getString(R.string.lockscreen_low_battery);
                string = getContext().getString(R.string.lockscreen_low_battery);
                icon.value = BATTERY_LOW_ICON;
                icon.value = BATTERY_LOW_ICON;
@@ -406,14 +399,11 @@ class KeyguardStatusViewManager implements OnClickListener {
        } else if (mShowingBatteryInfo) {
        } else if (mShowingBatteryInfo) {
            // Battery status
            // Battery status
            if (mPluggedIn) {
            if (mPluggedIn) {
                // Charging or charged
                // Charging, charged or waiting to charge.
                if (mUpdateMonitor.isDeviceCharged()) {
                string = getContext().getString(mBatteryCharged ? R.string.lockscreen_charged
                    string = getContext().getString(R.string.lockscreen_charged);
                        :R.string.lockscreen_plugged_in, mBatteryLevel);
                } else {
                    string = getContext().getString(R.string.lockscreen_plugged_in, mBatteryLevel);
                }
                icon.value = CHARGING_ICON;
                icon.value = CHARGING_ICON;
            } else if (mBatteryLevel < KeyguardUpdateMonitor.LOW_BATTERY_THRESHOLD) {
            } else if (mBatteryIsLow) {
                // Battery is low
                // Battery is low
                string = getContext().getString(R.string.lockscreen_low_battery);
                string = getContext().getString(R.string.lockscreen_low_battery);
                icon.value = BATTERY_LOW_ICON;
                icon.value = BATTERY_LOW_ICON;
@@ -629,14 +619,15 @@ class KeyguardStatusViewManager implements OnClickListener {
        }
        }
    }
    }


    private InfoCallbackImpl mInfoCallback = new InfoCallbackImpl() {
    private KeyguardUpdateMonitorCallback mInfoCallback = new KeyguardUpdateMonitorCallback() {


        @Override
        @Override
        public void onRefreshBatteryInfo(boolean showBatteryInfo, boolean pluggedIn,
        public void onRefreshBatteryInfo(BatteryStatus status) {
                int batteryLevel) {
            mShowingBatteryInfo = status.isPluggedIn() || status.isBatteryLow();
            mShowingBatteryInfo = showBatteryInfo;
            mPluggedIn = status.isPluggedIn();
            mPluggedIn = pluggedIn;
            mBatteryLevel = status.level;
            mBatteryLevel = batteryLevel;
            mBatteryCharged = status.isCharged();
            mBatteryIsLow = status.isBatteryLow();
            final MutableInt tmpIcon = new MutableInt(0);
            final MutableInt tmpIcon = new MutableInt(0);
            update(BATTERY_INFO, getAltTextMessage(tmpIcon));
            update(BATTERY_INFO, getAltTextMessage(tmpIcon));
        }
        }
@@ -659,10 +650,7 @@ class KeyguardStatusViewManager implements OnClickListener {
            updateEmergencyCallButtonState(phoneState);
            updateEmergencyCallButtonState(phoneState);
        }
        }


    };
        @Override

    private SimStateCallback mSimStateCallback = new SimStateCallback() {

        public void onSimStateChanged(IccCardConstants.State simState) {
        public void onSimStateChanged(IccCardConstants.State simState) {
            updateCarrierStateWithSimStatus(simState);
            updateCarrierStateWithSimStatus(simState);
        }
        }
Loading