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

Commit f5a97660 authored by Zaiyue Xue's avatar Zaiyue Xue Committed by Android (Google) Code Review
Browse files

Merge changes I93d4d089,I4f09f9e5 into tm-qpr-dev

* changes:
  Fix b/248686898: Battery Usage list renders items on top of each other after swiping back from an app
  Fix broken battery usage Robolectric tests
parents 7a8a9e4f 4fbd2064
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -108,6 +108,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll

    private boolean mIs24HourFormat;
    private boolean mIsFooterPrefAdded = false;
    private boolean mHourlyChartVisible = true;
    private View mBatteryChartViewGroup;
    private View mCategoryTitleView;
    private PreferenceScreen mPreferenceScreen;
@@ -690,9 +691,10 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
    }

    private void animateBatteryHourlyChartView(final boolean visible) {
        if (mHourlyChartView == null) {
        if (mHourlyChartView == null || mHourlyChartVisible == visible) {
            return;
        }
        mHourlyChartVisible = visible;

        if (visible) {
            mHourlyChartView.setVisibility(View.VISIBLE);
+27 −4
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ package com.android.settings.fuelgauge.batteryusage;

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

import static org.mockito.ArgumentMatchers.anyFloat;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.atLeastOnce;
@@ -36,6 +38,7 @@ import android.os.Bundle;
import android.os.LocaleList;
import android.text.format.DateUtils;
import android.view.View;
import android.view.ViewPropertyAnimator;
import android.widget.LinearLayout;

import androidx.preference.Preference;
@@ -85,6 +88,8 @@ public final class BatteryChartPreferenceControllerTest {
    @Mock
    private BatteryChartView mHourlyChartView;
    @Mock
    private ViewPropertyAnimator mViewPropertyAnimator;
    @Mock
    private PowerGaugePreference mPowerGaugePreference;
    @Mock
    private BatteryUtils mBatteryUtils;
@@ -116,6 +121,7 @@ public final class BatteryChartPreferenceControllerTest {
                .when(mFeatureFactory.powerUsageFeatureProvider)
                .getHideApplicationEntries(mContext);
        doReturn(mLayoutParams).when(mDailyChartView).getLayoutParams();
        setupHourlyChartViewAnimationMock();
        mBatteryChartPreferenceController = createController();
        mBatteryChartPreferenceController.mPrefContext = mContext;
        mBatteryChartPreferenceController.mAppListPrefGroup = mAppListGroup;
@@ -174,11 +180,13 @@ public final class BatteryChartPreferenceControllerTest {

    @Test
    public void setBatteryChartViewModel_6Hours() {
        reset(mDailyChartView);
        reset(mHourlyChartView);
        setupHourlyChartViewAnimationMock();

        mBatteryChartPreferenceController.setBatteryHistoryMap(createBatteryHistoryMap(6));

        verify(mDailyChartView, atLeastOnce()).setVisibility(View.GONE);
        verify(mHourlyChartView, atLeastOnce()).setVisibility(View.VISIBLE);
        // Ignore fast refresh ui from the data processor callback.
        verify(mHourlyChartView, atLeast(0)).setViewModel(null);
        verify(mHourlyChartView, atLeastOnce()).setViewModel(new BatteryChartViewModel(
@@ -192,6 +200,10 @@ public final class BatteryChartPreferenceControllerTest {

    @Test
    public void setBatteryChartViewModel_60Hours() {
        reset(mDailyChartView);
        reset(mHourlyChartView);
        setupHourlyChartViewAnimationMock();

        BatteryChartViewModel expectedDailyViewModel = new BatteryChartViewModel(
                List.of(100, 83, 59, 41),
                // "Sat", "Sun", "Mon", "Mon"
@@ -205,16 +217,18 @@ public final class BatteryChartPreferenceControllerTest {
        mBatteryChartPreferenceController.setBatteryHistoryMap(createBatteryHistoryMap(60));

        verify(mDailyChartView, atLeastOnce()).setVisibility(View.VISIBLE);
        verify(mHourlyChartView, atLeastOnce()).setVisibility(View.GONE);
        verify(mViewPropertyAnimator, atLeastOnce()).alpha(0f);
        verify(mDailyChartView).setViewModel(expectedDailyViewModel);

        reset(mDailyChartView);
        reset(mHourlyChartView);
        setupHourlyChartViewAnimationMock();
        doReturn(mLayoutParams).when(mDailyChartView).getLayoutParams();
        mBatteryChartPreferenceController.mDailyChartIndex = 0;
        mBatteryChartPreferenceController.refreshUi();
        verify(mDailyChartView).setVisibility(View.VISIBLE);
        verify(mHourlyChartView).setVisibility(View.VISIBLE);
        verify(mViewPropertyAnimator, atLeastOnce()).alpha(1f);

        expectedDailyViewModel.setSelectedIndex(0);
        verify(mDailyChartView).setViewModel(expectedDailyViewModel);
@@ -234,12 +248,13 @@ public final class BatteryChartPreferenceControllerTest {

        reset(mDailyChartView);
        reset(mHourlyChartView);
        setupHourlyChartViewAnimationMock();
        doReturn(mLayoutParams).when(mDailyChartView).getLayoutParams();
        mBatteryChartPreferenceController.mDailyChartIndex = 1;
        mBatteryChartPreferenceController.mHourlyChartIndex = 6;
        mBatteryChartPreferenceController.refreshUi();
        verify(mDailyChartView).setVisibility(View.VISIBLE);
        verify(mHourlyChartView).setVisibility(View.VISIBLE);
        verify(mViewPropertyAnimator, atLeastOnce()).alpha(1f);
        expectedDailyViewModel.setSelectedIndex(1);
        verify(mDailyChartView).setViewModel(expectedDailyViewModel);
        BatteryChartViewModel expectedHourlyViewModel = new BatteryChartViewModel(
@@ -264,13 +279,14 @@ public final class BatteryChartPreferenceControllerTest {

        reset(mDailyChartView);
        reset(mHourlyChartView);
        setupHourlyChartViewAnimationMock();
        doReturn(mLayoutParams).when(mDailyChartView).getLayoutParams();
        mBatteryChartPreferenceController.mDailyChartIndex = 2;
        mBatteryChartPreferenceController.mHourlyChartIndex =
                BatteryChartViewModel.SELECTED_INDEX_ALL;
        mBatteryChartPreferenceController.refreshUi();
        verify(mDailyChartView).setVisibility(View.VISIBLE);
        verify(mHourlyChartView).setVisibility(View.VISIBLE);
        verify(mViewPropertyAnimator, atLeastOnce()).alpha(1f);
        expectedDailyViewModel.setSelectedIndex(2);
        verify(mDailyChartView).setViewModel(expectedDailyViewModel);
        verify(mHourlyChartView).setViewModel(new BatteryChartViewModel(
@@ -734,4 +750,11 @@ public final class BatteryChartPreferenceControllerTest {
        controller.mPrefContext = mContext;
        return controller;
    }

    private void setupHourlyChartViewAnimationMock() {
        doReturn(mViewPropertyAnimator).when(mHourlyChartView).animate();
        doReturn(mViewPropertyAnimator).when(mViewPropertyAnimator).alpha(anyFloat());
        doReturn(mViewPropertyAnimator).when(mViewPropertyAnimator).setDuration(anyLong());
        doReturn(mViewPropertyAnimator).when(mViewPropertyAnimator).setListener(any());
    }
}
+30 −10
Original line number Diff line number Diff line
@@ -579,9 +579,13 @@ public class DataProcessorTest {
                ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY, /*consumePercentage=*/ 25.0,
                /*foregroundUsageTimeInMs=*/ 50, /*backgroundUsageTimeInMs=*/ 60);
        verify(mMetricsFeatureProvider)
                .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 3);
                .action(mContext.getApplicationContext(),
                        SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT,
                        3);
        verify(mMetricsFeatureProvider)
                .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0);
                .action(mContext.getApplicationContext(),
                        SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT,
                        0);
    }

    @Test
@@ -674,9 +678,13 @@ public class DataProcessorTest {
        assertThat(resultMap.get(0).get(0)).isNotNull();
        assertThat(resultMap.get(0).get(DataProcessor.SELECTED_INDEX_ALL)).isNotNull();
        verify(mMetricsFeatureProvider)
                .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 2);
                .action(mContext.getApplicationContext(),
                        SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT,
                        2);
        verify(mMetricsFeatureProvider)
                .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0);
                .action(mContext.getApplicationContext(),
                        SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT,
                        0);
    }

    @Test
@@ -739,9 +747,13 @@ public class DataProcessorTest {
        assertThat(resultMap.get(0).get(0)).isNotNull();
        assertThat(resultMap.get(0).get(DataProcessor.SELECTED_INDEX_ALL)).isNotNull();
        verify(mMetricsFeatureProvider)
                .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 1);
                .action(mContext.getApplicationContext(),
                        SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT,
                        1);
        verify(mMetricsFeatureProvider)
                .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0);
                .action(mContext.getApplicationContext(),
                        SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT,
                        0);
    }

    @Test
@@ -814,9 +826,13 @@ public class DataProcessorTest {
                ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 50.0,
                /*foregroundUsageTimeInMs=*/ 10, /*backgroundUsageTimeInMs=*/ 20);
        verify(mMetricsFeatureProvider)
                .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 1);
                .action(mContext.getApplicationContext(),
                        SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT,
                        1);
        verify(mMetricsFeatureProvider)
                .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 1);
                .action(mContext.getApplicationContext(),
                        SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT,
                        1);
    }

    @Test
@@ -889,9 +905,13 @@ public class DataProcessorTest {
        resultEntry = resultDiffData.getAppDiffEntryList().get(1);
        assertThat(resultEntry.mBackgroundUsageTimeInMs).isEqualTo(0);
        verify(mMetricsFeatureProvider)
                .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 2);
                .action(mContext.getApplicationContext(),
                        SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT,
                        2);
        verify(mMetricsFeatureProvider)
                .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0);
                .action(mContext.getApplicationContext(),
                        SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT,
                        0);
    }

    @Test