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

Commit 051fb19d authored by jackqdyulei's avatar jackqdyulei Committed by android-build-merger
Browse files

Merge "Add quickUpdate method to BatteryHeaderPrefCtrl" into oc-dr1-dev am: 7ea8ecda

am: fc55a3ce

Change-Id: I7d23a1bab37417064a1ffc358f9856d711426c19
parents d5d4ae73 fc55a3ce
Loading
Loading
Loading
Loading
+22 −9
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.support.annotation.VisibleForTesting;
import android.support.v14.preference.PreferenceFragment;
import android.support.v7.preference.PreferenceScreen;
@@ -47,7 +48,7 @@ public class BatteryHeaderPreferenceController extends AbstractPreferenceControl
    @VisibleForTesting
    BatteryMeterView mBatteryMeterView;
    @VisibleForTesting
    TextView mTimeText;
    TextView mBatteryPercentText;
    @VisibleForTesting
    TextView mSummary1;
    @VisibleForTesting
@@ -76,16 +77,11 @@ public class BatteryHeaderPreferenceController extends AbstractPreferenceControl
        mBatteryLayoutPref = (LayoutPreference) screen.findPreference(KEY_BATTERY_HEADER);
        mBatteryMeterView = (BatteryMeterView) mBatteryLayoutPref
                .findViewById(R.id.battery_header_icon);
        mTimeText = mBatteryLayoutPref.findViewById(R.id.battery_percent);
        mBatteryPercentText = mBatteryLayoutPref.findViewById(R.id.battery_percent);
        mSummary1 = mBatteryLayoutPref.findViewById(R.id.summary1);
        mSummary2 = mBatteryLayoutPref.findViewById(R.id.summary2);

        Intent batteryBroadcast = mContext.registerReceiver(null,
                new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
        final int batteryLevel = Utils.getBatteryLevel(batteryBroadcast);

        mBatteryMeterView.setBatteryLevel(batteryLevel);
        mTimeText.setText(Utils.formatPercentage(batteryLevel));
        quickUpdateHeaderPreference();
    }

    @Override
@@ -107,7 +103,7 @@ public class BatteryHeaderPreferenceController extends AbstractPreferenceControl
    }

    public void updateHeaderPreference(BatteryInfo info) {
        mTimeText.setText(Utils.formatPercentage(info.batteryLevel));
        mBatteryPercentText.setText(Utils.formatPercentage(info.batteryLevel));
        if (info.remainingLabel == null) {
            mSummary1.setText(info.statusLabel);
        } else {
@@ -120,4 +116,21 @@ public class BatteryHeaderPreferenceController extends AbstractPreferenceControl
        mBatteryMeterView.setBatteryLevel(info.batteryLevel);
        mBatteryMeterView.setCharging(!info.discharging);
    }

    public void quickUpdateHeaderPreference() {
        Intent batteryBroadcast = mContext.registerReceiver(null,
                new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
        final int batteryLevel = Utils.getBatteryLevel(batteryBroadcast);
        final boolean discharging =
                batteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1) == 0;

        // Set battery level and charging status
        mBatteryMeterView.setBatteryLevel(batteryLevel);
        mBatteryMeterView.setCharging(!discharging);
        mBatteryPercentText.setText(Utils.formatPercentage(batteryLevel));

        // clear all the summaries
        mSummary1.setText("");
        mSummary2.setText("");
    }
}
+5 −0
Original line number Diff line number Diff line
@@ -78,6 +78,11 @@ public class BatteryMeterView extends ImageView {

    public void setCharging(boolean charging) {
        mDrawable.setCharging(charging);
        postInvalidate();
    }

    public boolean getCharging() {
        return mDrawable.getCharging();
    }

    public static class BatteryMeterDrawable extends BatteryMeterDrawableBase {
+6 −0
Original line number Diff line number Diff line
@@ -848,6 +848,12 @@ public class PowerUsageSummary extends PowerUsageBase implements
        performBatteryHeaderClick();
    }

    @Override
    protected void restartBatteryStatsLoader() {
        super.restartBatteryStatsLoader();
        mBatteryHeaderPreferenceController.quickUpdateHeaderPreference();
    }

    private static class SummaryProvider implements SummaryLoader.SummaryProvider {
        private final Context mContext;
        private final SummaryLoader mLoader;
+14 −3
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
@@ -81,7 +82,7 @@ public class BatteryHeaderPreferenceControllerTest {
    private BatteryHeaderPreferenceController mController;
    private Context mContext;
    private BatteryMeterView mBatteryMeterView;
    private TextView mTimeText;
    private TextView mBatteryPercentText;
    private TextView mSummary;
    private TextView mSummary2;
    private LayoutPreference mBatteryLayoutPref;
@@ -95,7 +96,7 @@ public class BatteryHeaderPreferenceControllerTest {
        mLifecycle = new Lifecycle();
        mContext = spy(RuntimeEnvironment.application);
        mBatteryMeterView = new BatteryMeterView(mContext);
        mTimeText = new TextView(mContext);
        mBatteryPercentText = new TextView(mContext);
        mSummary = new TextView(mContext);
        ShadowEntityHeaderController.setUseMock(mEntityHeaderController);
        mSummary2 = new TextView(mContext);
@@ -103,6 +104,7 @@ public class BatteryHeaderPreferenceControllerTest {
        mBatteryIntent = new Intent();
        mBatteryIntent.putExtra(BatteryManager.EXTRA_LEVEL, BATTERY_LEVEL);
        mBatteryIntent.putExtra(BatteryManager.EXTRA_SCALE, 100);
        mBatteryIntent.putExtra(BatteryManager.EXTRA_PLUGGED, 1);
        doReturn(mBatteryIntent).when(mContext).registerReceiver(any(), any());

        mBatteryLayoutPref = new LayoutPreference(mContext, R.layout.battery_header);
@@ -114,7 +116,7 @@ public class BatteryHeaderPreferenceControllerTest {
        mController = new BatteryHeaderPreferenceController(
                mContext, mActivity, mPreferenceFragment, mLifecycle);
        mController.mBatteryMeterView = mBatteryMeterView;
        mController.mTimeText = mTimeText;
        mController.mBatteryPercentText = mBatteryPercentText;
        mController.mSummary1 = mSummary;
        mController.mSummary2 = mSummary2;
    }
@@ -175,4 +177,13 @@ public class BatteryHeaderPreferenceControllerTest {

        verify(mEntityHeaderController).styleActionBar(mActivity);
    }

    @Test
    public void testQuickUpdateHeaderPreference_showBatteryLevelAndChargingState() {
        mController.quickUpdateHeaderPreference();

        assertThat(mBatteryMeterView.getBatteryLevel()).isEqualTo(BATTERY_LEVEL);
        assertThat(mBatteryMeterView.getCharging()).isTrue();
        assertThat(mBatteryPercentText.getText()).isEqualTo("60%");
    }
}