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
diff --git a/res/values/strings.xml b/res/values/strings.xml
index d72a7bd..dda89ee 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -5680,6 +5680,8 @@
     <string name="advanced_battery_title">Battery usage</string>
     <!-- Activity title for battery usage history details [CHAR LIMIT=60] -->
     <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 -->
     <string name="battery_details_title">Battery usage</string>
diff --git a/res/xml/power_usage_summary.xml b/res/xml/power_usage_summary.xml
index 005ce17..a9819fd 100644
--- a/res/xml/power_usage_summary.xml
+++ b/res/xml/power_usage_summary.xml
@@ -28,6 +28,13 @@
         android:layout="@layout/battery_header"
         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
         android:key="battery_tip"
         android:title="@string/summary_placeholder"
@@ -39,33 +46,22 @@
         android:title="@string/battery_saver"
         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
         android:key="battery_percentage"
         android:title="@string/battery_percentage"
         android:summary="@string/battery_percentage_description"
         settings:controller="com.android.settings.display.BatteryPercentagePreferenceController" />
 
-
-    <com.android.settings.fuelgauge.PowerGaugePreference
-        android:key="last_full_charge"
-        android:title="@string/battery_last_full_charge"
-        android:selectable="false"
-        settings:allowDividerAbove="true" />
-
-    <com.android.settings.fuelgauge.PowerGaugePreference
-        android:key="screen_usage"
-        android:title="@string/device_screen_usage"
-        android:selectable="false" />
+    <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" />
 
     <com.android.settingslib.widget.FooterPreference
         android:key="power_usage_footer"
         android:title="@string/battery_footer_summary"
         android:selectable="false"
-        settings:searchable="false"/>
+        settings:searchable="false"
+        settings:allowDividerAbove="true" />
 </PreferenceScreen>
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
index 57949db..735f43d 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -26,9 +26,6 @@
 import android.os.Handler;
 import android.provider.Settings.Global;
 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.OnLongClickListener;
 import android.widget.TextView;
@@ -41,16 +38,13 @@
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
 import com.android.settings.Utils;
-import com.android.settings.core.SubSettingLauncher;
 import com.android.settings.fuelgauge.batterytip.BatteryTipLoader;
 import com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController;
 import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settingslib.fuelgauge.EstimateKt;
 import com.android.settingslib.search.SearchIndexable;
 import com.android.settingslib.utils.PowerUtil;
-import com.android.settingslib.utils.StringUtil;
 import com.android.settingslib.widget.LayoutPreference;
 
 import java.util.List;
@@ -67,22 +61,13 @@
 
     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
     static final int BATTERY_INFO_LOADER = 1;
     @VisibleForTesting
     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;
 
     @VisibleForTesting
-    PowerGaugePreference mScreenUsagePref;
-    @VisibleForTesting
-    PowerGaugePreference mLastFullChargePref;
-    @VisibleForTesting
     PowerUsageFeatureProvider mPowerFeatureProvider;
     @VisibleForTesting
     BatteryUtils mBatteryUtils;
@@ -119,7 +104,6 @@
                 public void onLoadFinished(Loader<BatteryInfo> loader, BatteryInfo batteryInfo) {
                     mBatteryHeaderPreferenceController.updateHeaderPreference(batteryInfo);
                     mBatteryInfo = batteryInfo;
-                    updateLastFullChargePreference();
                 }
 
                 @Override
@@ -215,9 +199,6 @@
         initFeatureProvider();
         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());
 
         if (Utils.isBatteryPresent(getContext())) {
@@ -258,32 +239,10 @@
     }
 
     @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
     public int getHelpResource() {
         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) {
         final Context context = getContext();
         if (context == null) {
@@ -303,9 +262,6 @@
         }
         // reload BatteryInfo and updateUI
         restartBatteryInfoLoader();
-        updateLastFullChargePreference();
-        mScreenUsagePref.setSubtitle(StringUtil.formatElapsedTime(getContext(),
-                mBatteryUtils.calculateScreenUsageTime(mStatsHelper), false));
     }
 
     @VisibleForTesting
@@ -319,24 +275,6 @@
     }
 
     @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
     void showBothEstimates() {
         final Context context = getContext();
         if (context == null
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
index 1cc4dca..cf278f6 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
@@ -16,7 +16,6 @@
 package com.android.settings.fuelgauge;
 
 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;
 
@@ -39,9 +38,6 @@
 import android.content.Intent;
 import android.os.Bundle;
 import android.provider.Settings;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
 import android.view.View;
 import android.widget.TextView;
 
@@ -117,12 +113,6 @@
     private SettingsActivity mSettingsActivity;
     @Mock
     private LoaderManager mLoaderManager;
-    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
-    private Menu mMenu;
-    @Mock
-    private MenuInflater mMenuInflater;
-    @Mock
-    private MenuItem mAdvancedPageMenu;
     @Mock
     private BatteryInfo mBatteryInfo;
     @Mock
@@ -139,8 +129,6 @@
     private TestFragment mFragment;
     private FakeFeatureFactory mFeatureFactory;
     private BatteryMeterView mBatteryMeterView;
-    private PowerGaugePreference mScreenUsagePref;
-    private PowerGaugePreference mLastFullChargePref;
     private Intent mIntent;
 
     @Before
@@ -149,15 +137,12 @@
 
         mRealContext = spy(RuntimeEnvironment.application);
         mFeatureFactory = FakeFeatureFactory.setupForTest();
-        mScreenUsagePref = new PowerGaugePreference(mRealContext);
-        mLastFullChargePref = new PowerGaugePreference(mRealContext);
         mFragment = spy(new TestFragment(mRealContext));
         mFragment.initFeatureProvider();
         mBatteryMeterView = new BatteryMeterView(mRealContext);
         mBatteryMeterView.mDrawable = new BatteryMeterView.BatteryMeterDrawable(mRealContext, 0);
         doNothing().when(mFragment).restartBatteryStatsLoader(anyInt());
         doReturn(mock(LoaderManager.class)).when(mFragment).getLoaderManager();
-        doReturn(MENU_ADVANCED_BATTERY).when(mAdvancedPageMenu).getItemId();
 
         when(mFragment.getActivity()).thenReturn(mSettingsActivity);
         when(mFeatureFactory.powerUsageFeatureProvider.getAdditionalBatteryInfoIntent())
@@ -189,8 +174,6 @@
 
         mFragment.mStatsHelper = mBatteryHelper;
         when(mBatteryHelper.getUsageList()).thenReturn(mUsageList);
-        mFragment.mScreenUsagePref = mScreenUsagePref;
-        mFragment.mLastFullChargePref = mLastFullChargePref;
         mFragment.mBatteryUtils = spy(new BatteryUtils(mRealContext));
         ReflectionHelpers.setField(mFragment, "mVisibilityLoggerMixin", mVisibilityLoggerMixin);
         ReflectionHelpers.setField(mFragment, "mBatteryBroadcastReceiver",
@@ -200,31 +183,6 @@
     }
 
     @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
     @Config(shadows = ShadowUtils.class)
     public void nonIndexableKeys_MatchPreferenceKeys() {
         final Context context = RuntimeEnvironment.application;
@@ -294,35 +252,6 @@
     }
 
     @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
     public void refreshUi_deviceRotate_doNotUpdateBatteryTip() {
         mFragment.mBatteryTipPreferenceController = mock(BatteryTipPreferenceController.class);
         when(mFragment.mBatteryTipPreferenceController.needUpdate()).thenReturn(false);