Loading src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java +9 −48 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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, Loading Loading @@ -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) { Loading Loading @@ -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); Loading @@ -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(); } Loading Loading @@ -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); } } Loading tests/robotests/src/com/android/settings/fuelgauge/BatteryChartPreferenceControllerTest.java +25 −55 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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; Loading @@ -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"); } Loading Loading @@ -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; } } Loading
src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java +9 −48 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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, Loading Loading @@ -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) { Loading Loading @@ -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); Loading @@ -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(); } Loading Loading @@ -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); } } Loading
tests/robotests/src/com/android/settings/fuelgauge/BatteryChartPreferenceControllerTest.java +25 −55 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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; Loading @@ -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"); } Loading Loading @@ -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; } }