Reorder Settings Battery main page index (1/2)

- Reorder battery page index
 - Remove option menu
 - Add battery usage preference
 - Remove last full charge and screen usage preference
 Screenshots:
 https://screenshot.googleplex.com/7VMeSVKHGViZyRv.png
 https://screenshot.googleplex.com/7v6wNL4qamfMAgM.png

Bug: 177407113
Test: make SettingsGoogleRoboTests -j40
Change-Id: I8a1fb30cdd3774840bf28d9c84017d946a4244df
This commit is contained in:
Wesley.CW Wang
2021-01-25 17:57:41 +08:00
committed by Wesley Wang
parent 6b603fc5e2
commit 0457af5347
4 changed files with 16 additions and 151 deletions

View File

@@ -5680,6 +5680,8 @@
<string name="advanced_battery_title">Battery usage</string> <string name="advanced_battery_title">Battery usage</string>
<!-- Activity title for battery usage history details [CHAR LIMIT=60] --> <!-- Activity title for battery usage history details [CHAR LIMIT=60] -->
<string name="history_details_title">History details</string> <string name="history_details_title">History details</string>
<!-- Preference title for advanced battery usage [CHAR LIMIT=40] -->
<string name="advanced_battery_preference_title">View battery usage</string>
<!-- Activity title for battery usage details for an app. or power consumer --> <!-- Activity title for battery usage details for an app. or power consumer -->
<string name="battery_details_title">Battery usage</string> <string name="battery_details_title">Battery usage</string>

View File

@@ -28,6 +28,13 @@
android:layout="@layout/battery_header" android:layout="@layout/battery_header"
settings:controller="com.android.settings.fuelgauge.BatteryHeaderPreferenceController" /> settings:controller="com.android.settings.fuelgauge.BatteryHeaderPreferenceController" />
<Preference
android:fragment="com.android.settings.fuelgauge.PowerUsageAdvanced"
android:key="battery_usage_summary"
android:title="@string/advanced_battery_preference_title"
android:icon="@drawable/ic_chevron_right_24dp"
settings:searchable="false" />
<com.android.settings.widget.CardPreference <com.android.settings.widget.CardPreference
android:key="battery_tip" android:key="battery_tip"
android:title="@string/summary_placeholder" android:title="@string/summary_placeholder"
@@ -39,33 +46,22 @@
android:title="@string/battery_saver" android:title="@string/battery_saver"
settings:controller="com.android.settings.fuelgauge.BatterySaverController" /> settings:controller="com.android.settings.fuelgauge.BatterySaverController" />
<Preference
android:fragment="com.android.settings.fuelgauge.SmartBatterySettings"
android:key="smart_battery_manager"
android:title="@string/smart_battery_manager_title"
settings:controller="com.android.settings.fuelgauge.batterytip.BatteryManagerPreferenceController" />
<SwitchPreference <SwitchPreference
android:key="battery_percentage" android:key="battery_percentage"
android:title="@string/battery_percentage" android:title="@string/battery_percentage"
android:summary="@string/battery_percentage_description" android:summary="@string/battery_percentage_description"
settings:controller="com.android.settings.display.BatteryPercentagePreferenceController" /> settings:controller="com.android.settings.display.BatteryPercentagePreferenceController" />
<Preference
<com.android.settings.fuelgauge.PowerGaugePreference android:fragment="com.android.settings.fuelgauge.SmartBatterySettings"
android:key="last_full_charge" android:key="smart_battery_manager"
android:title="@string/battery_last_full_charge" android:title="@string/smart_battery_manager_title"
android:selectable="false" settings:controller="com.android.settings.fuelgauge.batterytip.BatteryManagerPreferenceController" />
settings:allowDividerAbove="true" />
<com.android.settings.fuelgauge.PowerGaugePreference
android:key="screen_usage"
android:title="@string/device_screen_usage"
android:selectable="false" />
<com.android.settingslib.widget.FooterPreference <com.android.settingslib.widget.FooterPreference
android:key="power_usage_footer" android:key="power_usage_footer"
android:title="@string/battery_footer_summary" android:title="@string/battery_footer_summary"
android:selectable="false" android:selectable="false"
settings:searchable="false"/> settings:searchable="false"
settings:allowDividerAbove="true" />
</PreferenceScreen> </PreferenceScreen>

View File

@@ -26,9 +26,6 @@ import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.provider.Settings.Global; import android.provider.Settings.Global;
import android.text.format.Formatter; import android.text.format.Formatter;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.View.OnLongClickListener; import android.view.View.OnLongClickListener;
import android.widget.TextView; import android.widget.TextView;
@@ -41,16 +38,13 @@ import androidx.loader.content.Loader;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.fuelgauge.batterytip.BatteryTipLoader; import com.android.settings.fuelgauge.batterytip.BatteryTipLoader;
import com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController; import com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip; import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.fuelgauge.EstimateKt;
import com.android.settingslib.search.SearchIndexable; import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.utils.PowerUtil; import com.android.settingslib.utils.PowerUtil;
import com.android.settingslib.utils.StringUtil;
import com.android.settingslib.widget.LayoutPreference; import com.android.settingslib.widget.LayoutPreference;
import java.util.List; import java.util.List;
@@ -67,21 +61,12 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
private static final String KEY_BATTERY_HEADER = "battery_header"; private static final String KEY_BATTERY_HEADER = "battery_header";
private static final String KEY_SCREEN_USAGE = "screen_usage";
private static final String KEY_TIME_SINCE_LAST_FULL_CHARGE = "last_full_charge";
@VisibleForTesting @VisibleForTesting
static final int BATTERY_INFO_LOADER = 1; static final int BATTERY_INFO_LOADER = 1;
@VisibleForTesting @VisibleForTesting
static final int BATTERY_TIP_LOADER = 2; static final int BATTERY_TIP_LOADER = 2;
@VisibleForTesting
static final int MENU_ADVANCED_BATTERY = Menu.FIRST + 1;
public static final int DEBUG_INFO_LOADER = 3; public static final int DEBUG_INFO_LOADER = 3;
@VisibleForTesting
PowerGaugePreference mScreenUsagePref;
@VisibleForTesting
PowerGaugePreference mLastFullChargePref;
@VisibleForTesting @VisibleForTesting
PowerUsageFeatureProvider mPowerFeatureProvider; PowerUsageFeatureProvider mPowerFeatureProvider;
@VisibleForTesting @VisibleForTesting
@@ -119,7 +104,6 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
public void onLoadFinished(Loader<BatteryInfo> loader, BatteryInfo batteryInfo) { public void onLoadFinished(Loader<BatteryInfo> loader, BatteryInfo batteryInfo) {
mBatteryHeaderPreferenceController.updateHeaderPreference(batteryInfo); mBatteryHeaderPreferenceController.updateHeaderPreference(batteryInfo);
mBatteryInfo = batteryInfo; mBatteryInfo = batteryInfo;
updateLastFullChargePreference();
} }
@Override @Override
@@ -215,9 +199,6 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
initFeatureProvider(); initFeatureProvider();
mBatteryLayoutPref = (LayoutPreference) findPreference(KEY_BATTERY_HEADER); mBatteryLayoutPref = (LayoutPreference) findPreference(KEY_BATTERY_HEADER);
mScreenUsagePref = (PowerGaugePreference) findPreference(KEY_SCREEN_USAGE);
mLastFullChargePref = (PowerGaugePreference) findPreference(
KEY_TIME_SINCE_LAST_FULL_CHARGE);
mBatteryUtils = BatteryUtils.getInstance(getContext()); mBatteryUtils = BatteryUtils.getInstance(getContext());
if (Utils.isBatteryPresent(getContext())) { if (Utils.isBatteryPresent(getContext())) {
@@ -257,33 +238,11 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
return R.xml.power_usage_summary; return R.xml.power_usage_summary;
} }
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.add(Menu.NONE, MENU_ADVANCED_BATTERY, Menu.NONE, R.string.advanced_battery_title);
super.onCreateOptionsMenu(menu, inflater);
}
@Override @Override
public int getHelpResource() { public int getHelpResource() {
return R.string.help_url_battery; return R.string.help_url_battery;
} }
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_ADVANCED_BATTERY:
new SubSettingLauncher(getContext())
.setDestination(PowerUsageAdvanced.class.getName())
.setSourceMetricsCategory(getMetricsCategory())
.setTitleRes(R.string.advanced_battery_title)
.launch();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
protected void refreshUi(@BatteryUpdateType int refreshType) { protected void refreshUi(@BatteryUpdateType int refreshType) {
final Context context = getContext(); final Context context = getContext();
if (context == null) { if (context == null) {
@@ -303,9 +262,6 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
} }
// reload BatteryInfo and updateUI // reload BatteryInfo and updateUI
restartBatteryInfoLoader(); restartBatteryInfoLoader();
updateLastFullChargePreference();
mScreenUsagePref.setSubtitle(StringUtil.formatElapsedTime(getContext(),
mBatteryUtils.calculateScreenUsageTime(mStatsHelper), false));
} }
@VisibleForTesting @VisibleForTesting
@@ -318,24 +274,6 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
mBatteryLayoutPref = layoutPreference; mBatteryLayoutPref = layoutPreference;
} }
@VisibleForTesting
void updateLastFullChargePreference() {
if (mBatteryInfo != null && mBatteryInfo.averageTimeToDischarge
!= EstimateKt.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN) {
mLastFullChargePref.setTitle(R.string.battery_full_charge_last);
mLastFullChargePref.setSubtitle(
StringUtil.formatElapsedTime(getContext(), mBatteryInfo.averageTimeToDischarge,
false /* withSeconds */));
} else {
final long lastFullChargeTime = mBatteryUtils.calculateLastFullChargeTime(mStatsHelper,
System.currentTimeMillis());
mLastFullChargePref.setTitle(R.string.battery_last_full_charge);
mLastFullChargePref.setSubtitle(
StringUtil.formatRelativeTime(getContext(), lastFullChargeTime,
false /* withSeconds */));
}
}
@VisibleForTesting @VisibleForTesting
void showBothEstimates() { void showBothEstimates() {
final Context context = getContext(); final Context context = getContext();

View File

@@ -16,7 +16,6 @@
package com.android.settings.fuelgauge; package com.android.settings.fuelgauge;
import static com.android.settings.fuelgauge.PowerUsageSummary.BATTERY_INFO_LOADER; import static com.android.settings.fuelgauge.PowerUsageSummary.BATTERY_INFO_LOADER;
import static com.android.settings.fuelgauge.PowerUsageSummary.MENU_ADVANCED_BATTERY;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
@@ -39,9 +38,6 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.provider.Settings; import android.provider.Settings;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.widget.TextView; import android.widget.TextView;
@@ -117,12 +113,6 @@ public class PowerUsageSummaryTest {
private SettingsActivity mSettingsActivity; private SettingsActivity mSettingsActivity;
@Mock @Mock
private LoaderManager mLoaderManager; private LoaderManager mLoaderManager;
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private Menu mMenu;
@Mock
private MenuInflater mMenuInflater;
@Mock
private MenuItem mAdvancedPageMenu;
@Mock @Mock
private BatteryInfo mBatteryInfo; private BatteryInfo mBatteryInfo;
@Mock @Mock
@@ -139,8 +129,6 @@ public class PowerUsageSummaryTest {
private TestFragment mFragment; private TestFragment mFragment;
private FakeFeatureFactory mFeatureFactory; private FakeFeatureFactory mFeatureFactory;
private BatteryMeterView mBatteryMeterView; private BatteryMeterView mBatteryMeterView;
private PowerGaugePreference mScreenUsagePref;
private PowerGaugePreference mLastFullChargePref;
private Intent mIntent; private Intent mIntent;
@Before @Before
@@ -149,15 +137,12 @@ public class PowerUsageSummaryTest {
mRealContext = spy(RuntimeEnvironment.application); mRealContext = spy(RuntimeEnvironment.application);
mFeatureFactory = FakeFeatureFactory.setupForTest(); mFeatureFactory = FakeFeatureFactory.setupForTest();
mScreenUsagePref = new PowerGaugePreference(mRealContext);
mLastFullChargePref = new PowerGaugePreference(mRealContext);
mFragment = spy(new TestFragment(mRealContext)); mFragment = spy(new TestFragment(mRealContext));
mFragment.initFeatureProvider(); mFragment.initFeatureProvider();
mBatteryMeterView = new BatteryMeterView(mRealContext); mBatteryMeterView = new BatteryMeterView(mRealContext);
mBatteryMeterView.mDrawable = new BatteryMeterView.BatteryMeterDrawable(mRealContext, 0); mBatteryMeterView.mDrawable = new BatteryMeterView.BatteryMeterDrawable(mRealContext, 0);
doNothing().when(mFragment).restartBatteryStatsLoader(anyInt()); doNothing().when(mFragment).restartBatteryStatsLoader(anyInt());
doReturn(mock(LoaderManager.class)).when(mFragment).getLoaderManager(); doReturn(mock(LoaderManager.class)).when(mFragment).getLoaderManager();
doReturn(MENU_ADVANCED_BATTERY).when(mAdvancedPageMenu).getItemId();
when(mFragment.getActivity()).thenReturn(mSettingsActivity); when(mFragment.getActivity()).thenReturn(mSettingsActivity);
when(mFeatureFactory.powerUsageFeatureProvider.getAdditionalBatteryInfoIntent()) when(mFeatureFactory.powerUsageFeatureProvider.getAdditionalBatteryInfoIntent())
@@ -189,8 +174,6 @@ public class PowerUsageSummaryTest {
mFragment.mStatsHelper = mBatteryHelper; mFragment.mStatsHelper = mBatteryHelper;
when(mBatteryHelper.getUsageList()).thenReturn(mUsageList); when(mBatteryHelper.getUsageList()).thenReturn(mUsageList);
mFragment.mScreenUsagePref = mScreenUsagePref;
mFragment.mLastFullChargePref = mLastFullChargePref;
mFragment.mBatteryUtils = spy(new BatteryUtils(mRealContext)); mFragment.mBatteryUtils = spy(new BatteryUtils(mRealContext));
ReflectionHelpers.setField(mFragment, "mVisibilityLoggerMixin", mVisibilityLoggerMixin); ReflectionHelpers.setField(mFragment, "mVisibilityLoggerMixin", mVisibilityLoggerMixin);
ReflectionHelpers.setField(mFragment, "mBatteryBroadcastReceiver", ReflectionHelpers.setField(mFragment, "mBatteryBroadcastReceiver",
@@ -199,31 +182,6 @@ public class PowerUsageSummaryTest {
when(mFragment.getContentResolver()).thenReturn(mContentResolver); when(mFragment.getContentResolver()).thenReturn(mContentResolver);
} }
@Test
public void updateLastFullChargePreference_noAverageTime_showLastFullChargeSummary() {
mFragment.mBatteryInfo = null;
when(mFragment.getContext()).thenReturn(mRealContext);
doReturn(TIME_SINCE_LAST_FULL_CHARGE_MS).when(
mFragment.mBatteryUtils).calculateLastFullChargeTime(any(), anyLong());
mFragment.updateLastFullChargePreference();
assertThat(mLastFullChargePref.getTitle()).isEqualTo("Last full charge");
assertThat(mLastFullChargePref.getSubtitle()).isEqualTo("2 hours ago");
}
@Test
public void updateLastFullChargePreference_hasAverageTime_showFullChargeLastSummary() {
mFragment.mBatteryInfo = mBatteryInfo;
mBatteryInfo.averageTimeToDischarge = TIME_SINCE_LAST_FULL_CHARGE_MS;
when(mFragment.getContext()).thenReturn(mRealContext);
mFragment.updateLastFullChargePreference();
assertThat(mLastFullChargePref.getTitle()).isEqualTo("Full charge lasts about");
assertThat(mLastFullChargePref.getSubtitle().toString()).isEqualTo("2 hr");
}
@Test @Test
@Config(shadows = ShadowUtils.class) @Config(shadows = ShadowUtils.class)
public void nonIndexableKeys_MatchPreferenceKeys() { public void nonIndexableKeys_MatchPreferenceKeys() {
@@ -293,35 +251,6 @@ public class PowerUsageSummaryTest {
verify(mSummary1, times(2)).setOnLongClickListener(any(View.OnLongClickListener.class)); verify(mSummary1, times(2)).setOnLongClickListener(any(View.OnLongClickListener.class));
} }
@Test
public void optionsMenu_advancedPageEnabled() {
when(mFeatureFactory.powerUsageFeatureProvider.isPowerAccountingToggleEnabled())
.thenReturn(true);
mFragment.onCreateOptionsMenu(mMenu, mMenuInflater);
verify(mMenu).add(Menu.NONE, MENU_ADVANCED_BATTERY, Menu.NONE,
R.string.advanced_battery_title);
}
@Test
public void optionsMenu_clickAdvancedPage_fireIntent() {
final ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
doAnswer(invocation -> {
// Get the intent in which it has the app info bundle
mIntent = captor.getValue();
return true;
}).when(mRealContext).startActivity(captor.capture());
mFragment.onOptionsItemSelected(mAdvancedPageMenu);
assertThat(mIntent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT)).isEqualTo(
PowerUsageAdvanced.class.getName());
assertThat(
mIntent.getIntExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, 0)).isEqualTo(
R.string.advanced_battery_title);
}
@Test @Test
public void refreshUi_deviceRotate_doNotUpdateBatteryTip() { public void refreshUi_deviceRotate_doNotUpdateBatteryTip() {
mFragment.mBatteryTipPreferenceController = mock(BatteryTipPreferenceController.class); mFragment.mBatteryTipPreferenceController = mock(BatteryTipPreferenceController.class);