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

Commit 16b60aa2 authored by YUKAI HUNG's avatar YUKAI HUNG Committed by Android (Google) Code Review
Browse files

Merge "Refine the app/system section divider content show/hide rule" into sc-dev

parents 6f1ae5d6 5407d1b1
Loading
Loading
Loading
Loading
+9 −48
Original line number Diff line number Diff line
@@ -66,8 +66,6 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
    @VisibleForTesting PreferenceGroup mAppListPrefGroup;
    @VisibleForTesting BatteryChartView mBatteryChartView;
    @VisibleForTesting ExpandDividerPreference mExpandDividerPreference;
    @VisibleForTesting CategoryTitleType mCategoryTitleType =
        CategoryTitleType.TYPE_UNKNOWN;

    @VisibleForTesting int[] mBatteryHistoryLevels;
    @VisibleForTesting long[] mBatteryHistoryKeys;
@@ -87,14 +85,6 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
    @VisibleForTesting
    final List<BatteryDiffEntry> mSystemEntries = new ArrayList<>();

    /** Which component data will be shown in the screen. */
    enum CategoryTitleType {
        TYPE_UNKNOWN,
        TYPE_APP_COMPONENT,
        TYPE_SYSTEM_COMPONENT,
        TYPE_ALL_COMPONENTS
    }

    public BatteryChartPreferenceController(
            Context context, String preferenceKey,
            Lifecycle lifecycle, SettingsActivity activity,
@@ -283,7 +273,6 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
    }

    private void addAllPreferences() {
        mCategoryTitleType = CategoryTitleType.TYPE_UNKNOWN;
        final List<BatteryDiffEntry> entries =
            mBatteryIndexedMap.get(Integer.valueOf(mTrapezoidIndex));
        if (entries == null) {
@@ -312,10 +301,9 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
        // Adds app entries to the list if it is not empty.
        if (!appEntries.isEmpty()) {
            addPreferenceToScreen(appEntries);
            mCategoryTitleType = CategoryTitleType.TYPE_APP_COMPONENT;
        }
        // Adds the expabable divider if we have two sections data.
        if (!appEntries.isEmpty() && !mSystemEntries.isEmpty()) {
        // Adds the expabable divider if we have system entries data.
        if (!mSystemEntries.isEmpty()) {
            if (mExpandDividerPreference == null) {
                mExpandDividerPreference = new ExpandDividerPreference(mPrefContext);
                mExpandDividerPreference.setOnExpandListener(this);
@@ -323,9 +311,6 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
            mExpandDividerPreference.setOrder(
                mAppListPrefGroup.getPreferenceCount());
            mAppListPrefGroup.addPreference(mExpandDividerPreference);
            mCategoryTitleType = CategoryTitleType.TYPE_ALL_COMPONENTS;
        } else if (appEntries.isEmpty() && !mSystemEntries.isEmpty()) {
            mCategoryTitleType = CategoryTitleType.TYPE_SYSTEM_COMPONENT;
        }
        refreshExpandUi();
    }
@@ -408,38 +393,14 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
    @VisibleForTesting
    void refreshCategoryTitle() {
        final String slotInformation = getSlotInformation();
        Log.d(TAG, String.format("refreshCategoryTitle:%s slotInfo:%s",
            mCategoryTitleType, slotInformation));
        refreshPreferenceCategoryTitle(slotInformation);
        refreshExpandableDividerTitle(slotInformation);
    }

    private void refreshExpandableDividerTitle(String slotInformation) {
        if (mExpandDividerPreference == null) {
            return;
        }
        mExpandDividerPreference.setTitle(
            mCategoryTitleType == CategoryTitleType.TYPE_ALL_COMPONENTS
                ? getSlotInformation(/*isApp=*/ false, slotInformation)
                : null);
    }

    private void refreshPreferenceCategoryTitle(String slotInformation) {
        if (mAppListPrefGroup == null) {
            return;
        }
        switch (mCategoryTitleType) {
            case TYPE_APP_COMPONENT:
            case TYPE_ALL_COMPONENTS:
        Log.d(TAG, String.format("refreshCategoryTitle:%s", slotInformation));
        if (mAppListPrefGroup != null) {
            mAppListPrefGroup.setTitle(
                getSlotInformation(/*isApp=*/ true, slotInformation));
                break;
            case TYPE_SYSTEM_COMPONENT:
                mAppListPrefGroup.setTitle(
        }
        if (mExpandDividerPreference != null) {
            mExpandDividerPreference.setTitle(
                getSlotInformation(/*isApp=*/ false, slotInformation));
                break;
            default:
                mAppListPrefGroup.setTitle(R.string.battery_app_usage_for_past_24);
        }
    }

+25 −55
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import android.graphics.drawable.Drawable;
import android.text.format.DateUtils;

import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceGroup;

import com.android.settings.R;
@@ -482,52 +483,13 @@ public final class BatteryChartPreferenceControllerTest {
    }

    @Test
    public void testRefreshCategoryTitle_appComponent_setHourIntoPreferenceTitle() {
        setUpBatteryHistoryKeys();
        mBatteryChartPreferenceController.mCategoryTitleType =
            BatteryChartPreferenceController.CategoryTitleType.TYPE_APP_COMPONENT;
        mBatteryChartPreferenceController.mExpandDividerPreference =
            mExpandDividerPreference;
        // Simulates select the first slot.
        mBatteryChartPreferenceController.mTrapezoidIndex = 0;

        mBatteryChartPreferenceController.refreshCategoryTitle();

        final ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
        // Verifies the title in the preference group.
        verify(mAppListGroup).setTitle(captor.capture());
        assertThat(captor.getValue())
            .isEqualTo("App usage for 4 pm-7 am");
        verify(mExpandDividerPreference).setTitle(null);
    }

    @Test
    public void testRefreshCategoryTitle_systemComponent_setHourIntoPreferenceTitle() {
        setUpBatteryHistoryKeys();
        mBatteryChartPreferenceController.mCategoryTitleType =
            BatteryChartPreferenceController.CategoryTitleType.TYPE_SYSTEM_COMPONENT;
        mBatteryChartPreferenceController.mExpandDividerPreference =
            mExpandDividerPreference;
        // Simulates select the first slot.
        mBatteryChartPreferenceController.mTrapezoidIndex = 0;

        mBatteryChartPreferenceController.refreshCategoryTitle();

        final ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
        // Verifies the title in the preference group.
        verify(mAppListGroup).setTitle(captor.capture());
        assertThat(captor.getValue())
            .isEqualTo("System usage for 4 pm-7 am");
        verify(mExpandDividerPreference).setTitle(null);
    }

    @Test
    public void testRefreshCategoryTitle_allComponents_setHourIntoBothTitleTextView() {
    public void testRefreshCategoryTitle_setHourIntoBothTitleTextView() {
        mBatteryChartPreferenceController = createController();
        setUpBatteryHistoryKeys();
        mBatteryChartPreferenceController.mCategoryTitleType =
            BatteryChartPreferenceController.CategoryTitleType.TYPE_ALL_COMPONENTS;
        mBatteryChartPreferenceController.mAppListPrefGroup =
            spy(new PreferenceCategory(mContext));
        mBatteryChartPreferenceController.mExpandDividerPreference =
            mExpandDividerPreference;
            spy(new ExpandDividerPreference(mContext));
        // Simulates select the first slot.
        mBatteryChartPreferenceController.mTrapezoidIndex = 0;

@@ -535,22 +497,25 @@ public final class BatteryChartPreferenceControllerTest {

        ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
        // Verifies the title in the preference group.
        verify(mAppListGroup).setTitle(captor.capture());
        verify(mBatteryChartPreferenceController.mAppListPrefGroup)
            .setTitle(captor.capture());
        assertThat(captor.getValue())
            .isEqualTo("App usage for 4 pm-7 am");
        // Verifies the title in the expandable divider.
        captor = ArgumentCaptor.forClass(String.class);
        verify(mExpandDividerPreference).setTitle(captor.capture());
        verify(mBatteryChartPreferenceController.mExpandDividerPreference)
            .setTitle(captor.capture());
        assertThat(captor.getValue())
            .isEqualTo("System usage for 4 pm-7 am");
    }

    @Test
    public void testRefreshCategoryTitle_allComponents_setLast24HrIntoBothTitleTextView() {
        mBatteryChartPreferenceController.mCategoryTitleType =
            BatteryChartPreferenceController.CategoryTitleType.TYPE_ALL_COMPONENTS;
    public void testRefreshCategoryTitle_setLast24HrIntoBothTitleTextView() {
        mBatteryChartPreferenceController = createController();
        mBatteryChartPreferenceController.mAppListPrefGroup =
            spy(new PreferenceCategory(mContext));
        mBatteryChartPreferenceController.mExpandDividerPreference =
            mExpandDividerPreference;
            spy(new ExpandDividerPreference(mContext));
        // Simulates select all condition.
        mBatteryChartPreferenceController.mTrapezoidIndex =
            BatteryChartView.SELECTED_INDEX_ALL;
@@ -559,12 +524,14 @@ public final class BatteryChartPreferenceControllerTest {

        ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
        // Verifies the title in the preference group.
        verify(mAppListGroup).setTitle(captor.capture());
        verify(mBatteryChartPreferenceController.mAppListPrefGroup)
            .setTitle(captor.capture());
        assertThat(captor.getValue())
            .isEqualTo("App usage for past 24 hr");
        // Verifies the title in the expandable divider.
        captor = ArgumentCaptor.forClass(String.class);
        verify(mExpandDividerPreference).setTitle(captor.capture());
        verify(mBatteryChartPreferenceController.mExpandDividerPreference)
            .setTitle(captor.capture());
        assertThat(captor.getValue())
            .isEqualTo("System usage for past 24 hr");
    }
@@ -643,8 +610,11 @@ public final class BatteryChartPreferenceControllerTest {
    }

    private BatteryChartPreferenceController createController() {
        return new BatteryChartPreferenceController(
        final BatteryChartPreferenceController controller =
            new BatteryChartPreferenceController(
                mContext, "app_list", /*lifecycle=*/ null,
                mSettingsActivity, mFragment);
        controller.mPrefContext = mContext;
        return controller;
    }
}