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

Commit a03acf9d authored by Will Leshner's avatar Will Leshner
Browse files

Update charging string to match keyguard.

Use the keyguard algorithm for computing the charging string in the
low-light clock dream, so that the same string appears in both keyguard
and the low-light clock.

Fixes: 424297980
Test: atest ChargingStatusProviderTest, KeyguardIndicationControllerTest
Flag: android.service.dreams.dreams_v2

Change-Id: Ibfd04cf4e4465fa4193a55b6cf21aca18f0e7e51
parent de007d17
Loading
Loading
Loading
Loading
+17 −2
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.systemui.lowlightclock;

import static android.service.dreams.Flags.dreamsV2;

import android.content.Context;
import android.content.res.Resources;
import android.os.BatteryManager;
@@ -30,6 +32,7 @@ import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.settingslib.fuelgauge.BatteryStatus;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.res.R;
import com.android.systemui.statusbar.KeyguardIndicationController;

import java.text.NumberFormat;

@@ -53,6 +56,8 @@ public class ChargingStatusProvider {
    // callback being GC'd.
    private ChargingStatusCallback mChargingStatusCallback;

    private final KeyguardIndicationController mKeyguardIndicationController;

    private Callback mCallback;

    @Inject
@@ -60,11 +65,13 @@ public class ChargingStatusProvider {
            Context context,
            @Main Resources resources,
            IBatteryStats iBatteryStats,
            KeyguardUpdateMonitor keyguardUpdateMonitor) {
            KeyguardUpdateMonitor keyguardUpdateMonitor,
            KeyguardIndicationController keyguardIndicationController) {
        mContext = context;
        mResources = resources;
        mBatteryInfo = iBatteryStats;
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
        mKeyguardIndicationController = keyguardIndicationController;
    }

    /**
@@ -157,7 +164,15 @@ public class ChargingStatusProvider {
        if (mCallback != null) {
            final boolean shouldShowStatus =
                    mBatteryState.isPowerPluggedIn() || mBatteryState.isBatteryDefenderEnabled();
            mCallback.onChargingStatusChanged(shouldShowStatus, computeChargingString());
            mCallback.onChargingStatusChanged(shouldShowStatus, getChargingString());
        }
    }

    private String getChargingString() {
        if (dreamsV2()) {
            return mKeyguardIndicationController.getPowerChargingString();
        } else {
            return computeChargingString();
        }
    }

+4 −0
Original line number Diff line number Diff line
@@ -479,6 +479,10 @@ public class KeyguardIndicationController {
        mBroadcastDispatcher.unregisterReceiver(mBroadcastReceiver);
    }

    public String getPowerChargingString() {
        return computePowerChargingStringIndication();
    }

    private void handleAlignStateChanged(int alignState) {
        String alignmentIndication = "";
        if (alignState == DockManager.ALIGN_STATE_POOR) {
+25 −3
Original line number Diff line number Diff line
@@ -26,8 +26,11 @@ import static org.mockito.Mockito.when;
import android.content.res.Resources;
import android.os.BatteryManager;
import android.os.RemoteException;
import android.testing.AndroidTestingRunner;
import android.platform.test.annotations.DisableFlags;
import android.platform.test.annotations.EnableFlags;
import android.service.dreams.Flags;

import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;

import com.android.internal.app.IBatteryStats;
@@ -36,6 +39,7 @@ import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.settingslib.fuelgauge.BatteryStatus;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.res.R;
import com.android.systemui.statusbar.KeyguardIndicationController;

import org.junit.Before;
import org.junit.Test;
@@ -45,7 +49,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

@SmallTest
@RunWith(AndroidTestingRunner.class)
@RunWith(AndroidJUnit4.class)
public class ChargingStatusProviderTest extends SysuiTestCase {
    @Mock
    private Resources mResources;
@@ -54,6 +58,8 @@ public class ChargingStatusProviderTest extends SysuiTestCase {
    @Mock
    private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    @Mock
    private KeyguardIndicationController mKeyguardIndicationController;
    @Mock
    private ChargingStatusProvider.Callback mCallback;

    private ChargingStatusProvider mProvider;
@@ -63,7 +69,11 @@ public class ChargingStatusProviderTest extends SysuiTestCase {
        MockitoAnnotations.initMocks(this);

        mProvider = new ChargingStatusProvider(
                mContext, mResources, mBatteryInfo, mKeyguardUpdateMonitor);
                mContext,
                mResources,
                mBatteryInfo,
                mKeyguardUpdateMonitor,
                mKeyguardIndicationController);
    }

    @Test
@@ -143,6 +153,7 @@ public class ChargingStatusProviderTest extends SysuiTestCase {
    }

    @Test
    @DisableFlags(Flags.FLAG_DREAMS_V2)
    public void testChargingStatusReportsChargingLimitedWhenOverheated() {
        ArgumentCaptor<KeyguardUpdateMonitorCallback> keyguardUpdateMonitorCallbackArgumentCaptor =
                ArgumentCaptor.forClass(KeyguardUpdateMonitorCallback.class);
@@ -156,6 +167,7 @@ public class ChargingStatusProviderTest extends SysuiTestCase {
    }

    @Test
    @DisableFlags(Flags.FLAG_DREAMS_V2)
    public void testChargingStatusReportsChargedWhenCharged() {
        ArgumentCaptor<KeyguardUpdateMonitorCallback> keyguardUpdateMonitorCallbackArgumentCaptor =
                ArgumentCaptor.forClass(KeyguardUpdateMonitorCallback.class);
@@ -169,6 +181,7 @@ public class ChargingStatusProviderTest extends SysuiTestCase {
    }

    @Test
    @DisableFlags(Flags.FLAG_DREAMS_V2)
    public void testChargingStatusReportsPluggedInWhenDockedAndChargingTimeUnknown() throws
            RemoteException {
        ArgumentCaptor<KeyguardUpdateMonitorCallback> keyguardUpdateMonitorCallbackArgumentCaptor =
@@ -185,6 +198,7 @@ public class ChargingStatusProviderTest extends SysuiTestCase {
    }

    @Test
    @DisableFlags(Flags.FLAG_DREAMS_V2)
    public void testChargingStatusReportsTimeRemainingWhenDockedAndCharging() throws
            RemoteException {
        ArgumentCaptor<KeyguardUpdateMonitorCallback> keyguardUpdateMonitorCallbackArgumentCaptor =
@@ -200,6 +214,14 @@ public class ChargingStatusProviderTest extends SysuiTestCase {
                eq(R.string.keyguard_indication_charging_time_dock), any(), any());
    }

    @Test
    @EnableFlags(Flags.FLAG_DREAMS_V2)
    public void testAsksKeyguardForChargingStatusInDreamsV2() {
        mProvider.startUsing(mCallback);
        verify(mCallback).onChargingStatusChanged(false, null);
        verify(mKeyguardIndicationController).getPowerChargingString();
    }

    private BatteryStatus getUnpluggedBattery() {
        return new BatteryStatus(BatteryManager.BATTERY_STATUS_NOT_CHARGING,
                80, BatteryManager.BATTERY_PLUGGED_ANY, BatteryManager.BATTERY_HEALTH_GOOD,