Remove the old battery page

This CL removes PowerUsageSummaryLegacy and PowerUsageAdvancedLegacy
and their related layouts and strigns.

Also remove the isBatteryV2Enabled method in feature provider.

Change-Id: I1ec30f713d733ed24335a3e698fb515751232948
Fixes: 76027338
Test: robo test still pass
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 90fc74c..6fbdbc0 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -2208,7 +2208,6 @@
             android:name="Settings$PowerUsageSummaryActivity"
             android:label="@string/power_usage_summary_title"
             android:icon="@drawable/ic_homepage_battery"
-            android:enabled="false"
             android:taskAffinity="com.android.settings"
             android:parentActivityName="Settings">
             <intent-filter android:priority="1">
@@ -2229,24 +2228,6 @@
                 android:value="com.android.settings.fuelgauge.PowerUsageSummary" />
         </activity>
 
-        <activity android:name=".Settings$PowerUsageSummaryLegacyActivity"
-                  android:label="@string/power_usage_summary_title"
-                  android:icon="@drawable/ic_homepage_battery"
-                  android:taskAffinity="com.android.settings"
-                  android:parentActivityName="Settings">
-            <intent-filter>
-                <action android:name="android.intent.action.POWER_USAGE_SUMMARY" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-            <intent-filter android:priority="8">
-                <action android:name="com.android.settings.action.SETTINGS" />
-            </intent-filter>
-            <meta-data android:name="com.android.settings.category"
-                       android:value="com.android.settings.category.ia.homepage" />
-            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
-                       android:value="com.android.settings.fuelgauge.PowerUsageSummaryLegacy" />
-        </activity>
-
         <activity
             android:name="Settings$BatterySaverSettingsActivity"
             android:label="@string/battery_saver"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index a7228c4..64a754b 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -5061,14 +5061,6 @@
     <string name="power_unaccounted">Miscellaneous</string>
     <!-- Label for power that we computed too much for -->
     <string name="power_overcounted">Over-counted</string>
-    <!-- Label for power consumed by apps [CHAR LIMIT=30] -->
-    <string name="power_apps">Apps</string>
-    <!-- Label for power consumed by services [CHAR LIMIT=30] -->
-    <string name="power_service">Services</string>
-    <!-- Label for power consumed by system [CHAR LIMIT=30] -->
-    <string name="power_system">System</string>
-    <!-- Label for power consumed by user [CHAR LIMIT=30] -->
-    <string name="power_user">Other users</string>
 
     <!-- Label for CPU usage time -->
     <string name="usage_type_cpu">CPU total</string>
@@ -9658,8 +9650,6 @@
     <!-- Settings item summary for automatic Bluetooth on while driving preference [CHAR LIMIT=100] -->
     <string name="bluetooth_on_while_driving_summary">Turn on Bluetooth automatically when driving</string>
 
-    <!-- Title for item to go to old battery settings page when clicking [CHAR LIMIT=100] -->
-    <string name="dev_android_o_battery_settings_title">See Android 8.0 battery settings</string>
     <!-- Title for Wifi Access settings [CHAR LIMIT=35] -->
     <string name="change_wifi_state_title">Wi-Fi control</string>
 
diff --git a/res/xml/development_settings.xml b/res/xml/development_settings.xml
index 215dee4..77d4a7d 100644
--- a/res/xml/development_settings.xml
+++ b/res/xml/development_settings.xml
@@ -77,11 +77,6 @@
             android:fragment="com.android.settings.applications.RunningServices" />
 
         <Preference
-            android:key="android_o_battery_settings"
-            android:fragment="com.android.settings.fuelgauge.PowerUsageSummaryLegacy"
-            android:title="@string/dev_android_o_battery_settings_title" />
-
-        <Preference
             android:key="convert_to_file_encryption"
             android:title="@string/convert_to_file_encryption"
             android:summary="@string/convert_to_file_encryption_enabled"
diff --git a/res/xml/power_usage_advanced_legacy.xml b/res/xml/power_usage_advanced_legacy.xml
deleted file mode 100644
index 26be727..0000000
--- a/res/xml/power_usage_advanced_legacy.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<PreferenceScreen
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:settings="http://schemas.android.com/apk/res-auto"
-    android:key="power_usage_advanced_screen_legacy"
-    android:title="@string/advanced_battery_title"
-    settings:keywords="@string/keywords_battery">
-
-    <com.android.settings.fuelgauge.BatteryHistoryPreference
-        android:key="battery_graph_legacy"/>
-
-    <PreferenceCategory
-        android:key="battery_usage_list_legacy"
-        android:title="@string/battery_detail_since_full_charge"/>
-
-</PreferenceScreen>
diff --git a/res/xml/power_usage_summary_legacy.xml b/res/xml/power_usage_summary_legacy.xml
deleted file mode 100644
index 059c737..0000000
--- a/res/xml/power_usage_summary_legacy.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<PreferenceScreen
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:settings="http://schemas.android.com/apk/res-auto"
-    android:key="power_usage_summary_screen"
-    android:title="@string/power_usage_summary_title"
-    settings:keywords="@string/keywords_battery">
-
-    <com.android.settings.applications.LayoutPreference
-        android:key="battery_header"
-        android:selectable="true"
-        android:layout="@layout/battery_header"/>
-
-    <Preference
-        android:key="high_usage"
-        android:icon="@drawable/ic_battery_alert_24dp"
-        android:title="@string/power_high_usage_title"/>
-
-    <PreferenceCategory
-        android:key="device_usage_list">
-
-        <com.android.settings.fuelgauge.PowerGaugePreference
-            android:key="last_full_charge"
-            android:title="@string/battery_last_full_charge"
-            android:selectable="false"/>
-
-        <com.android.settings.fuelgauge.PowerGaugePreference
-            android:key="screen_usage"
-            android:title="@string/device_screen_usage"
-            android:selectable="false"/>
-
-    </PreferenceCategory>
-
-    <PreferenceCategory
-        android:key="power_management"
-        android:title="@string/battery_power_management">
-
-        <com.android.settings.widget.MasterSwitchPreference
-            android:fragment="com.android.settings.fuelgauge.batterysaver.BatterySaverSettings"
-            android:key="battery_saver_summary"
-            android:title="@string/battery_saver"/>
-
-        <SwitchPreference
-            android:key="battery_percentage"
-            android:title="@string/battery_percentage"
-            android:summary="@string/battery_percentage_description"/>
-
-        <!-- Cross-listed item, if you change this, also change it in display_settings.xml -->
-        <com.android.settingslib.RestrictedSwitchPreference
-            android:key="auto_brightness_battery"
-            android:title="@string/auto_brightness_title"
-            android:summary="@string/auto_brightness_summary"
-            settings:keywords="@string/keywords_display_auto_brightness"
-            settings:useAdminDisabledSummary="true"
-            settings:userRestriction="no_config_brightness" />
-
-        <!-- Cross-listed item, if you change this, also change it in display_settings.xml -->
-        <com.android.settings.TimeoutListPreference
-            android:key="screen_timeout_battery"
-            android:title="@string/screen_timeout"
-            android:summary="@string/screen_timeout_summary"
-            android:entries="@array/screen_timeout_entries"
-            android:entryValues="@array/screen_timeout_values"/>
-
-        <!-- Cross-listed item, if you change this, also change it in display_settings.xml -->
-        <com.android.settingslib.RestrictedPreference
-            android:key="ambient_display_battery"
-            android:title="@string/ambient_display_screen_title"
-            android:fragment="com.android.settings.display.AmbientDisplaySettings"
-            settings:userRestriction="no_ambient_display" />
-
-    </PreferenceCategory>
-
-    <PreferenceCategory
-        android:key="app_list"
-        android:title="@string/power_usage_list_summary"/>
-
-</PreferenceScreen>
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 836fa75..e3fcd5c 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -158,7 +158,6 @@
     public static class NetworkDashboardActivity extends SettingsActivity {}
     public static class ConnectedDeviceDashboardActivity extends SettingsActivity {}
     public static class PowerUsageSummaryActivity extends SettingsActivity { /* empty */ }
-    public static class PowerUsageSummaryLegacyActivity extends SettingsActivity { /* empty */ }
     public static class AppAndNotificationDashboardActivity extends SettingsActivity {}
     public static class StorageDashboardActivity extends SettingsActivity {}
     public static class AccountDashboardActivity extends SettingsActivity {}
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 16e1a7b..970692d 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -655,17 +655,9 @@
                 Utils.showSimCardTile(this), isAdmin)
                 || somethingChanged;
 
-        final boolean isBatterySettingsV2Enabled = featureFactory
-                .getPowerUsageFeatureProvider(this)
-                .isBatteryV2Enabled();
-        // Enable new battery page if v2 enabled
         somethingChanged = setTileEnabled(new ComponentName(packageName,
                         Settings.PowerUsageSummaryActivity.class.getName()),
-                mBatteryPresent && isBatterySettingsV2Enabled, isAdmin) || somethingChanged;
-        // Enable legacy battery page if v2 disabled
-        somethingChanged = setTileEnabled(new ComponentName(packageName,
-                        Settings.PowerUsageSummaryLegacyActivity.class.getName()),
-                mBatteryPresent && !isBatterySettingsV2Enabled, isAdmin) || somethingChanged;
+                mBatteryPresent, isAdmin) || somethingChanged;
 
         final boolean isDataUsageSettingsV2Enabled =
                 FeatureFlagUtils.isEnabled(this, FeatureFlags.DATA_USAGE_SETTINGS_V2);
diff --git a/src/com/android/settings/core/FeatureFlags.java b/src/com/android/settings/core/FeatureFlags.java
index a5edf3c..a6e961b 100644
--- a/src/com/android/settings/core/FeatureFlags.java
+++ b/src/com/android/settings/core/FeatureFlags.java
@@ -20,7 +20,6 @@
  * This class keeps track of all feature flags in Settings.
  */
 public class FeatureFlags {
-    public static final String BATTERY_SETTINGS_V2 = "settings_battery_v2";
     public static final String BATTERY_DISPLAY_APP_LIST = "settings_battery_display_app_list";
     public static final String ZONE_PICKER_V2 = "settings_zone_picker_v2";
     public static final String ABOUT_PHONE_V2 = "settings_about_phone_v2";
diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java
index dbe8fba..bbba8ea 100644
--- a/src/com/android/settings/core/gateway/SettingsGateway.java
+++ b/src/com/android/settings/core/gateway/SettingsGateway.java
@@ -76,7 +76,6 @@
 import com.android.settings.enterprise.EnterprisePrivacySettings;
 import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
 import com.android.settings.fuelgauge.PowerUsageSummary;
-import com.android.settings.fuelgauge.PowerUsageSummaryLegacy;
 import com.android.settings.fuelgauge.batterysaver.BatterySaverSettings;
 import com.android.settings.gestures.AssistGestureSettings;
 import com.android.settings.gestures.DoubleTapPowerSettings;
@@ -184,7 +183,6 @@
             AndroidBeam.class.getName(),
             WifiDisplaySettings.class.getName(),
             PowerUsageSummary.class.getName(),
-            PowerUsageSummaryLegacy.class.getName(),
             AccountSyncSettings.class.getName(),
             AssistGestureSettings.class.getName(),
             SwipeToNotificationSettings.class.getName(),
@@ -270,7 +268,6 @@
             Settings.SoundSettingsActivity.class.getName(),
             Settings.StorageDashboardActivity.class.getName(),
             Settings.PowerUsageSummaryActivity.class.getName(),
-            Settings.PowerUsageSummaryLegacyActivity.class.getName(),
             Settings.AccountDashboardActivity.class.getName(),
             Settings.SecurityDashboardActivity.class.getName(),
             Settings.AccessibilitySettingsActivity.class.getName(),
diff --git a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
index 9666a6c..3ee5db1 100644
--- a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
+++ b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
@@ -450,8 +450,6 @@
         controllers.add(new ShortcutManagerThrottlingPreferenceController(context));
         controllers.add(new EnableGnssRawMeasFullTrackingPreferenceController(context));
         controllers.add(new DefaultLaunchPreferenceController(context, "running_apps"));
-        controllers.add(
-            new DefaultLaunchPreferenceController(context, "android_o_battery_settings"));
         controllers.add(new DefaultLaunchPreferenceController(context, "demo_mode"));
         controllers.add(new DefaultLaunchPreferenceController(context, "quick_settings_tiles"));
         controllers.add(new DefaultLaunchPreferenceController(context, "feature_flags_dashboard"));
diff --git a/src/com/android/settings/fuelgauge/PowerUsageAdvancedLegacy.java b/src/com/android/settings/fuelgauge/PowerUsageAdvancedLegacy.java
deleted file mode 100644
index a4e3fef..0000000
--- a/src/com/android/settings/fuelgauge/PowerUsageAdvancedLegacy.java
+++ /dev/null
@@ -1,485 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the
- * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the specific language governing
- * permissions and limitations under the License.
- */
-package com.android.settings.fuelgauge;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.PackageManager;
-import android.content.pm.UserInfo;
-import android.os.BatteryManager;
-import android.os.BatteryStats;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.os.UserManager;
-import android.provider.SearchIndexableResource;
-import android.support.annotation.ColorInt;
-import android.support.annotation.IntDef;
-import android.support.annotation.NonNull;
-import android.support.annotation.StringRes;
-import android.support.annotation.VisibleForTesting;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceGroup;
-import android.text.TextUtils;
-
-import com.android.internal.logging.nano.MetricsProto;
-import com.android.internal.os.BatterySipper;
-import com.android.internal.os.BatterySipper.DrainType;
-import com.android.internal.os.BatteryStatsHelper;
-import com.android.settings.R;
-import com.android.settings.Utils;
-import com.android.settings.datausage.DataUsageUtils;
-import com.android.settings.fuelgauge.PowerUsageAdvancedLegacy.PowerUsageData.UsageType;
-import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settingslib.core.AbstractPreferenceController;
-
-import com.android.settingslib.utils.StringUtil;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class PowerUsageAdvancedLegacy extends PowerUsageBase {
-    private static final String TAG = "AdvancedBatteryUsage";
-    private static final String KEY_BATTERY_GRAPH = "battery_graph_legacy";
-    private static final String KEY_BATTERY_USAGE_LIST = "battery_usage_list_legacy";
-    private static final int STATUS_TYPE = BatteryStats.STATS_SINCE_CHARGED;
-
-    @VisibleForTesting
-    final int[] mUsageTypes = {
-            UsageType.WIFI,
-            UsageType.CELL,
-            UsageType.SYSTEM,
-            UsageType.BLUETOOTH,
-            UsageType.USER,
-            UsageType.IDLE,
-            UsageType.APP,
-            UsageType.UNACCOUNTED,
-            UsageType.OVERCOUNTED};
-
-    @VisibleForTesting BatteryHistoryPreference mHistPref;
-    @VisibleForTesting PreferenceGroup mUsageListGroup;
-    private BatteryUtils mBatteryUtils;
-    private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
-    private PackageManager mPackageManager;
-    private UserManager mUserManager;
-    private Map<Integer, PowerUsageData> mBatteryDataMap;
-
-    Handler mHandler = new Handler() {
-
-        @Override
-        public void handleMessage(Message msg) {
-            switch (msg.what) {
-                case BatteryEntry.MSG_UPDATE_NAME_ICON:
-                    final int dischargeAmount = mStatsHelper.getStats().getDischargeAmount(
-                            STATUS_TYPE);
-                    final double totalPower = mStatsHelper.getTotalPower();
-                    final BatteryEntry entry = (BatteryEntry) msg.obj;
-                    final int usageType = extractUsageType(entry.sipper);
-
-                    PowerUsageData usageData = mBatteryDataMap.get(usageType);
-                    Preference pref = findPreference(String.valueOf(usageType));
-                    if (pref != null && usageData != null) {
-                        updateUsageDataSummary(usageData, totalPower, dischargeAmount);
-                        pref.setSummary(usageData.summary);
-                    }
-                    break;
-                case BatteryEntry.MSG_REPORT_FULLY_DRAWN:
-                    Activity activity = getActivity();
-                    if (activity != null) {
-                        activity.reportFullyDrawn();
-                    }
-                    break;
-            }
-            super.handleMessage(msg);
-        }
-    };
-
-    @Override
-    public void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-
-        mHistPref = (BatteryHistoryPreference) findPreference(KEY_BATTERY_GRAPH);
-        mUsageListGroup = (PreferenceGroup) findPreference(KEY_BATTERY_USAGE_LIST);
-
-        final Context context = getContext();
-        mPowerUsageFeatureProvider = FeatureFactory.getFactory(context)
-                .getPowerUsageFeatureProvider(context);
-        mPackageManager = context.getPackageManager();
-        mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
-        mBatteryUtils = BatteryUtils.getInstance(context);
-
-        // init the summary so other preferences won't have unnecessary move
-        updateHistPrefSummary(context);
-    }
-
-    @Override
-    public void onResume() {
-        super.onResume();
-    }
-
-    @Override
-    public void onPause() {
-        BatteryEntry.stopRequestQueue();
-        mHandler.removeMessages(BatteryEntry.MSG_UPDATE_NAME_ICON);
-        super.onPause();
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        if (getActivity().isChangingConfigurations()) {
-            BatteryEntry.clearUidCache();
-        }
-    }
-
-    @Override
-    public int getMetricsCategory() {
-        return MetricsProto.MetricsEvent.FUELGAUGE_BATTERY_HISTORY_DETAIL;
-    }
-
-    @Override
-    protected String getLogTag() {
-        return TAG;
-    }
-
-    @Override
-    protected int getPreferenceScreenResId() {
-        return R.xml.power_usage_advanced_legacy;
-    }
-
-    @Override
-    protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        return null;
-    }
-
-    @Override
-    protected void refreshUi() {
-        final long startTime = System.currentTimeMillis();
-        final Context context = getContext();
-        if (context == null) {
-            return;
-        }
-        updatePreference(mHistPref);
-        refreshPowerUsageDataList(mStatsHelper, mUsageListGroup);
-        updateHistPrefSummary(context);
-
-        BatteryEntry.startRequestQueue();
-        BatteryUtils.logRuntime(TAG, "refreshUI", startTime);
-    }
-
-    private void updateHistPrefSummary(Context context) {
-        Intent batteryIntent =
-                context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
-        final boolean plugged = batteryIntent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1) != 0;
-
-        if (mPowerUsageFeatureProvider.isEnhancedBatteryPredictionEnabled(context) && !plugged) {
-            mHistPref.setBottomSummary(
-                    mPowerUsageFeatureProvider.getAdvancedUsageScreenInfoString());
-        } else {
-            mHistPref.hideBottomSummary();
-        }
-    }
-
-    @VisibleForTesting
-    void refreshPowerUsageDataList(BatteryStatsHelper statsHelper,
-            PreferenceGroup preferenceGroup) {
-        List<PowerUsageData> dataList = parsePowerUsageData(statsHelper);
-        preferenceGroup.removeAll();
-        for (int i = 0, size = dataList.size(); i < size; i++) {
-            final PowerUsageData batteryData = dataList.get(i);
-            if (shouldHideCategory(batteryData)) {
-                continue;
-            }
-            final PowerGaugePreference pref = new PowerGaugePreference(getPrefContext());
-
-            pref.setKey(String.valueOf(batteryData.usageType));
-            pref.setTitle(batteryData.titleResId);
-            pref.setSummary(batteryData.summary);
-            pref.setPercent(batteryData.percentage);
-            pref.setSelectable(false);
-            preferenceGroup.addPreference(pref);
-        }
-    }
-
-    @VisibleForTesting
-    @UsageType
-    int extractUsageType(BatterySipper sipper) {
-        final DrainType drainType = sipper.drainType;
-        final int uid = sipper.getUid();
-
-        if (drainType == DrainType.WIFI) {
-            return UsageType.WIFI;
-        } else if (drainType == DrainType.BLUETOOTH) {
-            return UsageType.BLUETOOTH;
-        } else if (drainType == DrainType.IDLE) {
-            return UsageType.IDLE;
-        } else if (drainType == DrainType.USER) {
-            return UsageType.USER;
-        } else if (drainType == DrainType.CELL) {
-            return UsageType.CELL;
-        } else if (drainType == DrainType.UNACCOUNTED) {
-            return UsageType.UNACCOUNTED;
-        } else if (drainType == DrainType.OVERCOUNTED) {
-            return UsageType.OVERCOUNTED;
-        } else if (mPowerUsageFeatureProvider.isTypeSystem(sipper)
-                || mPowerUsageFeatureProvider.isTypeService(sipper)) {
-            return UsageType.SYSTEM;
-        } else {
-            return UsageType.APP;
-        }
-    }
-
-    @VisibleForTesting
-    boolean shouldHideCategory(PowerUsageData powerUsageData) {
-        return powerUsageData.usageType == UsageType.UNACCOUNTED
-                || powerUsageData.usageType == UsageType.OVERCOUNTED
-                || (powerUsageData.usageType == UsageType.USER && isSingleNormalUser())
-                || (powerUsageData.usageType == UsageType.CELL
-                && !DataUsageUtils.hasMobileData(getContext()));
-    }
-
-    @VisibleForTesting
-    boolean shouldShowBatterySipper(BatterySipper batterySipper) {
-        return batterySipper.drainType != DrainType.SCREEN;
-    }
-
-    @VisibleForTesting
-    List<PowerUsageData> parsePowerUsageData(BatteryStatsHelper statusHelper) {
-        final List<BatterySipper> batterySippers = statusHelper.getUsageList();
-        final Map<Integer, PowerUsageData> batteryDataMap = new HashMap<>();
-
-        for (final @UsageType Integer type : mUsageTypes) {
-            batteryDataMap.put(type, new PowerUsageData(type));
-        }
-
-        // Accumulate power usage based on usage type
-        for (final BatterySipper sipper : batterySippers) {
-            sipper.mPackages = mPackageManager.getPackagesForUid(sipper.getUid());
-            final PowerUsageData usageData = batteryDataMap.get(extractUsageType(sipper));
-            usageData.totalPowerMah += sipper.totalPowerMah;
-            if (sipper.drainType == DrainType.APP && sipper.usageTimeMs != 0) {
-                sipper.usageTimeMs = mBatteryUtils.getProcessTimeMs(
-                        BatteryUtils.StatusType.FOREGROUND, sipper.uidObj, STATUS_TYPE);
-            }
-            usageData.totalUsageTimeMs += sipper.usageTimeMs;
-            if (shouldShowBatterySipper(sipper)) {
-                usageData.usageList.add(sipper);
-            }
-        }
-
-        final List<PowerUsageData> batteryDataList = new ArrayList<>(batteryDataMap.values());
-        final int dischargeAmount = statusHelper.getStats().getDischargeAmount(STATUS_TYPE);
-        final double totalPower = statusHelper.getTotalPower();
-        final double hiddenPower = calculateHiddenPower(batteryDataList);
-        for (final PowerUsageData usageData : batteryDataList) {
-            usageData.percentage = mBatteryUtils.calculateBatteryPercent(usageData.totalPowerMah,
-                    totalPower, hiddenPower, dischargeAmount);
-            updateUsageDataSummary(usageData, totalPower, dischargeAmount);
-        }
-
-        Collections.sort(batteryDataList);
-
-        mBatteryDataMap = batteryDataMap;
-        return batteryDataList;
-    }
-
-    @VisibleForTesting
-    double calculateHiddenPower(List<PowerUsageData> batteryDataList) {
-        for (final PowerUsageData usageData : batteryDataList) {
-            if (usageData.usageType == UsageType.UNACCOUNTED) {
-                return usageData.totalPowerMah;
-            }
-        }
-
-        return 0;
-    }
-
-    @VisibleForTesting
-    void updateUsageDataSummary(PowerUsageData usageData, double totalPower, int dischargeAmount) {
-        if (shouldHideSummary(usageData)) {
-            return;
-        }
-        if (usageData.usageList.size() <= 1) {
-            CharSequence timeSequence = StringUtil.formatElapsedTime(getContext(),
-                    usageData.totalUsageTimeMs, false);
-            usageData.summary = usageData.usageType == UsageType.IDLE ? timeSequence
-                    : TextUtils.expandTemplate(getText(R.string.battery_used_for), timeSequence);
-        } else {
-            BatterySipper sipper = findBatterySipperWithMaxBatteryUsage(usageData.usageList);
-            BatteryEntry batteryEntry = new BatteryEntry(getContext(), mHandler, mUserManager,
-                    sipper);
-            final double percentage = (sipper.totalPowerMah / totalPower) * dischargeAmount;
-            usageData.summary = getString(R.string.battery_used_by,
-                    Utils.formatPercentage(percentage, true), batteryEntry.name);
-        }
-    }
-
-    @VisibleForTesting
-    boolean shouldHideSummary(PowerUsageData powerUsageData) {
-        @UsageType final int usageType = powerUsageData.usageType;
-
-        return usageType == UsageType.CELL
-                || usageType == UsageType.BLUETOOTH
-                || usageType == UsageType.WIFI
-                || usageType == UsageType.APP
-                || usageType == UsageType.SYSTEM;
-    }
-
-    @VisibleForTesting
-    BatterySipper findBatterySipperWithMaxBatteryUsage(List<BatterySipper> usageList) {
-        BatterySipper sipper = usageList.get(0);
-        for (int i = 1, size = usageList.size(); i < size; i++) {
-            final BatterySipper comparedSipper = usageList.get(i);
-            if (comparedSipper.totalPowerMah > sipper.totalPowerMah) {
-                sipper = comparedSipper;
-            }
-        }
-
-        return sipper;
-    }
-
-    @VisibleForTesting
-    void setPackageManager(PackageManager packageManager) {
-        mPackageManager = packageManager;
-    }
-
-    @VisibleForTesting
-    void setPowerUsageFeatureProvider(PowerUsageFeatureProvider provider) {
-        mPowerUsageFeatureProvider = provider;
-    }
-    @VisibleForTesting
-    void setUserManager(UserManager userManager) {
-        mUserManager = userManager;
-    }
-    @VisibleForTesting
-    void setBatteryUtils(BatteryUtils batteryUtils) {
-        mBatteryUtils = batteryUtils;
-    }
-
-    @VisibleForTesting
-    boolean isSingleNormalUser() {
-        int count = 0;
-        for (UserInfo userInfo : mUserManager.getUsers()) {
-            if (userInfo.isEnabled() && !userInfo.isManagedProfile()) {
-                count++;
-            }
-        }
-
-        return count == 1;
-    }
-
-    /**
-     * Class that contains data used in {@link PowerGaugePreference}.
-     */
-    @VisibleForTesting
-    static class PowerUsageData implements Comparable<PowerUsageData> {
-
-        @Retention(RetentionPolicy.SOURCE)
-        @IntDef({UsageType.APP,
-                UsageType.WIFI,
-                UsageType.CELL,
-                UsageType.SYSTEM,
-                UsageType.BLUETOOTH,
-                UsageType.USER,
-                UsageType.IDLE,
-                UsageType.UNACCOUNTED,
-                UsageType.OVERCOUNTED})
-        public @interface UsageType {
-            int APP = 0;
-            int WIFI = 1;
-            int CELL = 2;
-            int SYSTEM = 3;
-            int BLUETOOTH = 4;
-            int USER = 5;
-            int IDLE = 6;
-            int UNACCOUNTED = 7;
-            int OVERCOUNTED = 8;
-        }
-
-        @StringRes
-        public int titleResId;
-        public CharSequence summary;
-        public double percentage;
-        public double totalPowerMah;
-        public long totalUsageTimeMs;
-        @ColorInt
-        public int iconColor;
-        @UsageType
-        public int usageType;
-        public List<BatterySipper> usageList;
-
-        public PowerUsageData(@UsageType int usageType) {
-            this(usageType, 0);
-        }
-
-        public PowerUsageData(@UsageType int usageType, double totalPower) {
-            this.usageType = usageType;
-            totalPowerMah = 0;
-            totalUsageTimeMs = 0;
-            titleResId = getTitleResId(usageType);
-            totalPowerMah = totalPower;
-            usageList = new ArrayList<>();
-        }
-
-        private int getTitleResId(@UsageType int usageType) {
-            switch (usageType) {
-                case UsageType.WIFI:
-                    return R.string.power_wifi;
-                case UsageType.CELL:
-                    return R.string.power_cell;
-                case UsageType.SYSTEM:
-                    return R.string.power_system;
-                case UsageType.BLUETOOTH:
-                    return R.string.power_bluetooth;
-                case UsageType.USER:
-                    return R.string.power_user;
-                case UsageType.IDLE:
-                    return R.string.power_idle;
-                case UsageType.UNACCOUNTED:
-                    return R.string.power_unaccounted;
-                case UsageType.OVERCOUNTED:
-                    return R.string.power_overcounted;
-                case UsageType.APP:
-                default:
-                    return R.string.power_apps;
-            }
-        }
-
-        @Override
-        public int compareTo(@NonNull PowerUsageData powerUsageData) {
-            final int diff = Double.compare(powerUsageData.totalPowerMah, totalPowerMah);
-            return diff != 0 ? diff : usageType - powerUsageData.usageType;
-        }
-    }
-
-    public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
-            new BaseSearchIndexProvider() {
-                @Override
-                public List<SearchIndexableResource> getXmlResourcesToIndex(
-                        Context context, boolean enabled) {
-                    final SearchIndexableResource sir = new SearchIndexableResource(context);
-                    sir.xmlResId = R.xml.power_usage_advanced_legacy;
-                    return Arrays.asList(sir);
-                }
-            };
-
-}
diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
index 861ee56..a6474fb 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
@@ -106,11 +106,6 @@
     String getAdvancedUsageScreenInfoString();
 
     /**
-     * Checks whether to display the battery v2.
-     */
-    boolean isBatteryV2Enabled();
-
-    /**
      * Returns a signal to indicate if the device will need to warn the user they may not make it
      * to their next charging time.
      *
diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
index 6c3897d..e727521 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
@@ -16,13 +16,10 @@
 
 package com.android.settings.fuelgauge;
 
-import static com.android.settings.core.FeatureFlags.BATTERY_SETTINGS_V2;
-
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.os.Process;
-import android.util.FeatureFlagUtils;
 import android.util.SparseIntArray;
 
 import com.android.internal.os.BatterySipper;
@@ -128,11 +125,6 @@
     }
 
     @Override
-    public boolean isBatteryV2Enabled() {
-        return FeatureFlagUtils.isEnabled(mContext, BATTERY_SETTINGS_V2);
-    }
-
-    @Override
     public boolean getEarlyWarningSignal(Context context, String id) {
         return false;
     }
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummaryLegacy.java b/src/com/android/settings/fuelgauge/PowerUsageSummaryLegacy.java
deleted file mode 100644
index d321bb7..0000000
--- a/src/com/android/settings/fuelgauge/PowerUsageSummaryLegacy.java
+++ /dev/null
@@ -1,911 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.fuelgauge;
-
-import android.app.Activity;
-import android.app.LoaderManager;
-import android.app.LoaderManager.LoaderCallbacks;
-import android.content.Context;
-import android.content.Loader;
-import android.graphics.drawable.Drawable;
-import android.os.BatteryStats;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.os.Process;
-import android.os.UserHandle;
-import android.support.annotation.VisibleForTesting;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceGroup;
-import android.text.TextUtils;
-import android.text.format.DateUtils;
-import android.text.format.Formatter;
-import android.util.Log;
-import android.util.SparseArray;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.View.OnLongClickListener;
-import android.widget.TextView;
-
-import com.android.internal.hardware.AmbientDisplayConfiguration;
-import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
-import com.android.internal.os.BatterySipper;
-import com.android.internal.os.BatterySipper.DrainType;
-import com.android.internal.os.PowerProfile;
-import com.android.settings.R;
-import com.android.settings.Settings.HighPowerApplicationsActivity;
-import com.android.settings.SettingsActivity;
-import com.android.settings.Utils;
-import com.android.settings.applications.LayoutPreference;
-import com.android.settings.applications.manageapplications.ManageApplications;
-import com.android.settings.core.SubSettingLauncher;
-import com.android.settings.dashboard.SummaryLoader;
-import com.android.settings.display.AmbientDisplayPreferenceController;
-import com.android.settings.display.AutoBrightnessPreferenceController;
-import com.android.settings.display.BatteryPercentagePreferenceController;
-import com.android.settings.display.TimeoutPreferenceController;
-import com.android.settings.fuelgauge.anomaly.Anomaly;
-import com.android.settings.fuelgauge.anomaly.AnomalyDetectionPolicy;
-import com.android.settings.fuelgauge.anomaly.AnomalyDialogFragment.AnomalyDialogListener;
-import com.android.settings.fuelgauge.anomaly.AnomalyLoader;
-import com.android.settings.fuelgauge.anomaly.AnomalySummaryPreferenceController;
-import com.android.settings.fuelgauge.anomaly.AnomalyUtils;
-import com.android.settings.overlay.FeatureFactory;
-import com.android.settingslib.core.AbstractPreferenceController;
-import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
-import com.android.settingslib.utils.PowerUtil;
-import com.android.settingslib.utils.StringUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Displays a list of apps and subsystems that consume power, ordered by how much power was
- * consumed since the last time it was unplugged.
- *
- * This is the battery page used in Android O with the app usage list. It is also used for battery
- * debug.
- */
-public class PowerUsageSummaryLegacy extends PowerUsageBase implements
-        AnomalyDialogListener, OnLongClickListener, OnClickListener {
-
-    static final String TAG = "PowerUsageSummaryLegacy";
-
-    private static final boolean DEBUG = false;
-    private static final boolean USE_FAKE_DATA = false;
-    private static final String KEY_APP_LIST = "app_list";
-    private static final String KEY_BATTERY_HEADER = "battery_header";
-    private static final String KEY_SHOW_ALL_APPS = "show_all_apps";
-    private static final int MAX_ITEMS_TO_LIST = USE_FAKE_DATA ? 30 : 10;
-    private static final int MIN_AVERAGE_POWER_THRESHOLD_MILLI_AMP = 10;
-
-    private static final String KEY_SCREEN_USAGE = "screen_usage";
-    private static final String KEY_TIME_SINCE_LAST_FULL_CHARGE = "last_full_charge";
-
-    private static final String KEY_AUTO_BRIGHTNESS = "auto_brightness_battery";
-    private static final String KEY_SCREEN_TIMEOUT = "screen_timeout_battery";
-    private static final String KEY_AMBIENT_DISPLAY = "ambient_display_battery";
-    private static final String KEY_BATTERY_SAVER_SUMMARY = "battery_saver_summary";
-    private static final String KEY_HIGH_USAGE = "high_usage";
-
-    @VisibleForTesting
-    static final int ANOMALY_LOADER = 1;
-    @VisibleForTesting
-    static final int BATTERY_INFO_LOADER = 2;
-    private static final int MENU_STATS_TYPE = Menu.FIRST;
-    @VisibleForTesting
-    static final int MENU_HIGH_POWER_APPS = Menu.FIRST + 3;
-    @VisibleForTesting
-    static final int MENU_TOGGLE_APPS = Menu.FIRST + 4;
-    private static final int MENU_HELP = Menu.FIRST + 5;
-    public static final int DEBUG_INFO_LOADER = 3;
-
-    @VisibleForTesting
-    boolean mShowAllApps = false;
-    @VisibleForTesting
-    PowerGaugePreference mScreenUsagePref;
-    @VisibleForTesting
-    PowerGaugePreference mLastFullChargePref;
-    @VisibleForTesting
-    PowerUsageFeatureProvider mPowerFeatureProvider;
-    @VisibleForTesting
-    BatteryUtils mBatteryUtils;
-    @VisibleForTesting
-    LayoutPreference mBatteryLayoutPref;
-
-    /**
-     * SparseArray that maps uid to {@link Anomaly}, so we could find {@link Anomaly} by uid
-     */
-    @VisibleForTesting
-    SparseArray<List<Anomaly>> mAnomalySparseArray;
-    @VisibleForTesting
-    PreferenceGroup mAppListGroup;
-    @VisibleForTesting
-    BatteryHeaderPreferenceController mBatteryHeaderPreferenceController;
-    private AnomalySummaryPreferenceController mAnomalySummaryPreferenceController;
-    private int mStatsType = BatteryStats.STATS_SINCE_CHARGED;
-
-    private LoaderCallbacks<List<Anomaly>> mAnomalyLoaderCallbacks =
-            new LoaderCallbacks<List<Anomaly>>() {
-
-                @Override
-                public Loader<List<Anomaly>> onCreateLoader(int id, Bundle args) {
-                    return new AnomalyLoader(getContext(), mStatsHelper);
-                }
-
-                @Override
-                public void onLoadFinished(Loader<List<Anomaly>> loader, List<Anomaly> data) {
-                    final AnomalyUtils anomalyUtils = AnomalyUtils.getInstance(getContext());
-                    anomalyUtils.logAnomalies(mMetricsFeatureProvider, data,
-                            MetricsEvent.FUELGAUGE_POWER_USAGE_SUMMARY);
-
-                    // show high usage preference if possible
-                    mAnomalySummaryPreferenceController.updateAnomalySummaryPreference(data);
-
-                    updateAnomalySparseArray(data);
-                    refreshAnomalyIcon();
-                }
-
-                @Override
-                public void onLoaderReset(Loader<List<Anomaly>> loader) {
-
-                }
-            };
-
-    @VisibleForTesting
-    LoaderCallbacks<BatteryInfo> mBatteryInfoLoaderCallbacks =
-            new LoaderCallbacks<BatteryInfo>() {
-
-                @Override
-                public Loader<BatteryInfo> onCreateLoader(int i, Bundle bundle) {
-                    return new BatteryInfoLoader(getContext(), mStatsHelper);
-                }
-
-                @Override
-                public void onLoadFinished(Loader<BatteryInfo> loader, BatteryInfo batteryInfo) {
-                    mBatteryHeaderPreferenceController.updateHeaderPreference(batteryInfo);
-                }
-
-                @Override
-                public void onLoaderReset(Loader<BatteryInfo> loader) {
-                    // do nothing
-                }
-            };
-
-    LoaderManager.LoaderCallbacks<List<BatteryInfo>> mBatteryInfoDebugLoaderCallbacks =
-        new LoaderCallbacks<List<BatteryInfo>>() {
-            @Override
-            public Loader<List<BatteryInfo>> onCreateLoader(int i, Bundle bundle) {
-                return new DebugEstimatesLoader(getContext(), mStatsHelper);
-            }
-
-            @Override
-            public void onLoadFinished(Loader<List<BatteryInfo>> loader,
-                List<BatteryInfo> batteryInfos) {
-                updateViews(batteryInfos);
-            }
-
-            @Override
-            public void onLoaderReset(Loader<List<BatteryInfo>> loader) {
-            }
-        };
-
-    protected void updateViews(List<BatteryInfo> batteryInfos) {
-        final BatteryMeterView batteryView = mBatteryLayoutPref
-            .findViewById(R.id.battery_header_icon);
-        final TextView percentRemaining =
-            mBatteryLayoutPref.findViewById(R.id.battery_percent);
-        final TextView summary1 = mBatteryLayoutPref.findViewById(R.id.summary1);
-        final TextView summary2 = mBatteryLayoutPref.findViewById(R.id.summary2);
-        BatteryInfo oldInfo = batteryInfos.get(0);
-        BatteryInfo newInfo = batteryInfos.get(1);
-        percentRemaining.setText(Utils.formatPercentage(oldInfo.batteryLevel));
-
-        // set the text to the old estimate (copied from battery info). Note that this
-        // can sometimes say 0 time remaining because battery stats requires the phone
-        // be unplugged for a period of time before being willing ot make an estimate.
-        summary1.setText(mPowerFeatureProvider.getOldEstimateDebugString(
-            Formatter.formatShortElapsedTime(getContext(),
-                PowerUtil.convertUsToMs(oldInfo.remainingTimeUs))));
-
-        // for this one we can just set the string directly
-        summary2.setText(mPowerFeatureProvider.getEnhancedEstimateDebugString(
-            Formatter.formatShortElapsedTime(getContext(),
-                PowerUtil.convertUsToMs(newInfo.remainingTimeUs))));
-
-        batteryView.setBatteryLevel(oldInfo.batteryLevel);
-        batteryView.setCharging(!oldInfo.discharging);
-    }
-
-    @Override
-    public void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-        setAnimationAllowed(true);
-
-        initFeatureProvider();
-        mBatteryLayoutPref = (LayoutPreference) findPreference(KEY_BATTERY_HEADER);
-
-        mAppListGroup = (PreferenceGroup) findPreference(KEY_APP_LIST);
-        mScreenUsagePref = (PowerGaugePreference) findPreference(KEY_SCREEN_USAGE);
-        mLastFullChargePref = (PowerGaugePreference) findPreference(
-                KEY_TIME_SINCE_LAST_FULL_CHARGE);
-        mFooterPreferenceMixin.createFooterPreference().setTitle(R.string.battery_footer_summary);
-        mAnomalySummaryPreferenceController = new AnomalySummaryPreferenceController(
-                (SettingsActivity) getActivity(), this);
-        mBatteryUtils = BatteryUtils.getInstance(getContext());
-        mAnomalySparseArray = new SparseArray<>();
-
-        restartBatteryInfoLoader();
-        restoreSavedInstance(icicle);
-    }
-
-    @Override
-    public int getMetricsCategory() {
-        return MetricsEvent.FUELGAUGE_POWER_USAGE_SUMMARY;
-    }
-
-    @Override
-    public void onPause() {
-        BatteryEntry.stopRequestQueue();
-        mHandler.removeMessages(BatteryEntry.MSG_UPDATE_NAME_ICON);
-        super.onPause();
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        if (getActivity().isChangingConfigurations()) {
-            BatteryEntry.clearUidCache();
-        }
-    }
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-        outState.putBoolean(KEY_SHOW_ALL_APPS, mShowAllApps);
-    }
-
-    @Override
-    public boolean onPreferenceTreeClick(Preference preference) {
-        if (mAnomalySummaryPreferenceController.onPreferenceTreeClick(preference)) {
-            return true;
-        }
-        if (KEY_BATTERY_HEADER.equals(preference.getKey())) {
-            performBatteryHeaderClick();
-            return true;
-        } else if (!(preference instanceof PowerGaugePreference)) {
-            return super.onPreferenceTreeClick(preference);
-        }
-        PowerGaugePreference pgp = (PowerGaugePreference) preference;
-        BatteryEntry entry = pgp.getInfo();
-        AdvancedPowerUsageDetail.startBatteryDetailPage((SettingsActivity) getActivity(),
-                this, mStatsHelper, mStatsType, entry, pgp.getPercent(),
-                mAnomalySparseArray.get(entry.sipper.getUid()));
-        return super.onPreferenceTreeClick(preference);
-    }
-
-    @Override
-    protected String getLogTag() {
-        return TAG;
-    }
-
-    @Override
-    protected int getPreferenceScreenResId() {
-        return R.xml.power_usage_summary_legacy;
-    }
-
-    @Override
-    protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        final List<AbstractPreferenceController> controllers = new ArrayList<>();
-        mBatteryHeaderPreferenceController = new BatteryHeaderPreferenceController(
-                context, getActivity(), this /* host */, getLifecycle());
-        controllers.add(mBatteryHeaderPreferenceController);
-        controllers.add(new AutoBrightnessPreferenceController(context, KEY_AUTO_BRIGHTNESS));
-        controllers.add(new TimeoutPreferenceController(context, KEY_SCREEN_TIMEOUT));
-        controllers.add(new BatteryPercentagePreferenceController(context));
-        controllers.add(new AmbientDisplayPreferenceController(
-                context,
-                new AmbientDisplayConfiguration(context),
-                KEY_AMBIENT_DISPLAY));
-        BatterySaverController batterySaverController = new BatterySaverController(context);
-        controllers.add(batterySaverController);
-        getLifecycle().addObserver(batterySaverController);
-        return controllers;
-    }
-
-    @Override
-    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
-        if (DEBUG) {
-            menu.add(Menu.NONE, MENU_STATS_TYPE, Menu.NONE, R.string.menu_stats_total)
-                    .setIcon(com.android.internal.R.drawable.ic_menu_info_details)
-                    .setAlphabeticShortcut('t');
-        }
-
-        menu.add(Menu.NONE, MENU_HIGH_POWER_APPS, Menu.NONE, R.string.high_power_apps);
-
-        if (mPowerFeatureProvider.isPowerAccountingToggleEnabled()) {
-            menu.add(Menu.NONE, MENU_TOGGLE_APPS, Menu.NONE,
-                    mShowAllApps ? R.string.hide_extra_apps : R.string.show_all_apps);
-        }
-
-        super.onCreateOptionsMenu(menu, inflater);
-    }
-
-    @Override
-    public int getHelpResource() {
-        return R.string.help_url_battery;
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        final SettingsActivity sa = (SettingsActivity) getActivity();
-        final Context context = getContext();
-        final MetricsFeatureProvider metricsFeatureProvider =
-                FeatureFactory.getFactory(context).getMetricsFeatureProvider();
-
-        switch (item.getItemId()) {
-            case MENU_STATS_TYPE:
-                if (mStatsType == BatteryStats.STATS_SINCE_CHARGED) {
-                    mStatsType = BatteryStats.STATS_SINCE_UNPLUGGED;
-                } else {
-                    mStatsType = BatteryStats.STATS_SINCE_CHARGED;
-                }
-                refreshUi();
-                return true;
-            case MENU_HIGH_POWER_APPS:
-                Bundle args = new Bundle();
-                args.putString(ManageApplications.EXTRA_CLASSNAME,
-                        HighPowerApplicationsActivity.class.getName());
-                new SubSettingLauncher(context)
-                        .setDestination(ManageApplications.class.getName())
-                        .setArguments(args)
-                        .setTitle(R.string.high_power_apps)
-                        .setSourceMetricsCategory(getMetricsCategory())
-                        .launch();
-                metricsFeatureProvider.action(context,
-                        MetricsEvent.ACTION_SETTINGS_MENU_BATTERY_OPTIMIZATION);
-                return true;
-            case MENU_TOGGLE_APPS:
-                mShowAllApps = !mShowAllApps;
-                item.setTitle(mShowAllApps ? R.string.hide_extra_apps : R.string.show_all_apps);
-                metricsFeatureProvider.action(context,
-                        MetricsEvent.ACTION_SETTINGS_MENU_BATTERY_APPS_TOGGLE, mShowAllApps);
-                restartBatteryStatsLoader(false /* clearHeader */);
-                return true;
-            default:
-                return super.onOptionsItemSelected(item);
-        }
-    }
-
-    @VisibleForTesting
-    void restoreSavedInstance(Bundle savedInstance) {
-        if (savedInstance != null) {
-            mShowAllApps = savedInstance.getBoolean(KEY_SHOW_ALL_APPS, false);
-        }
-    }
-
-    private void addNotAvailableMessage() {
-        final String NOT_AVAILABLE = "not_available";
-        Preference notAvailable = getCachedPreference(NOT_AVAILABLE);
-        if (notAvailable == null) {
-            notAvailable = new Preference(getPrefContext());
-            notAvailable.setKey(NOT_AVAILABLE);
-            notAvailable.setTitle(R.string.power_usage_not_available);
-            mAppListGroup.addPreference(notAvailable);
-        }
-    }
-
-    private void performBatteryHeaderClick() {
-        if (mPowerFeatureProvider.isAdvancedUiEnabled()) {
-            new SubSettingLauncher(getContext())
-                    .setDestination(PowerUsageAdvancedLegacy.class.getName())
-                    .setSourceMetricsCategory(getMetricsCategory())
-                    .setTitle(R.string.advanced_battery_title)
-                    .launch();
-        } else {
-            mStatsHelper.storeStatsHistoryInFile(BatteryHistoryDetail.BATTERY_HISTORY_FILE);
-            Bundle args = new Bundle(2);
-            args.putString(BatteryHistoryDetail.EXTRA_STATS,
-                    BatteryHistoryDetail.BATTERY_HISTORY_FILE);
-            args.putParcelable(BatteryHistoryDetail.EXTRA_BROADCAST,
-                    mStatsHelper.getBatteryBroadcast());
-            new SubSettingLauncher(getContext())
-                    .setDestination(BatteryHistoryDetail.class.getName())
-                    .setSourceMetricsCategory(getMetricsCategory())
-                    .setArguments(args)
-                    .setTitle(R.string.history_details_title)
-                    .launch();
-        }
-    }
-
-    private static boolean isSharedGid(int uid) {
-        return UserHandle.getAppIdFromSharedAppGid(uid) > 0;
-    }
-
-    private static boolean isSystemUid(int uid) {
-        final int appUid = UserHandle.getAppId(uid);
-        return appUid >= Process.SYSTEM_UID && appUid < Process.FIRST_APPLICATION_UID;
-    }
-
-    /**
-     * We want to coalesce some UIDs. For example, dex2oat runs under a shared gid that
-     * exists for all users of the same app. We detect this case and merge the power use
-     * for dex2oat to the device OWNER's use of the app.
-     *
-     * @return A sorted list of apps using power.
-     */
-    private List<BatterySipper> getCoalescedUsageList(final List<BatterySipper> sippers) {
-        final SparseArray<BatterySipper> uidList = new SparseArray<>();
-
-        final ArrayList<BatterySipper> results = new ArrayList<>();
-        final int numSippers = sippers.size();
-        for (int i = 0; i < numSippers; i++) {
-            BatterySipper sipper = sippers.get(i);
-            if (sipper.getUid() > 0) {
-                int realUid = sipper.getUid();
-
-                // Check if this UID is a shared GID. If so, we combine it with the OWNER's
-                // actual app UID.
-                if (isSharedGid(sipper.getUid())) {
-                    realUid = UserHandle.getUid(UserHandle.USER_SYSTEM,
-                            UserHandle.getAppIdFromSharedAppGid(sipper.getUid()));
-                }
-
-                // Check if this UID is a system UID (mediaserver, logd, nfc, drm, etc).
-                if (isSystemUid(realUid)
-                        && !"mediaserver".equals(sipper.packageWithHighestDrain)) {
-                    // Use the system UID for all UIDs running in their own sandbox that
-                    // are not apps. We exclude mediaserver because we already are expected to
-                    // report that as a separate item.
-                    realUid = Process.SYSTEM_UID;
-                }
-
-                if (realUid != sipper.getUid()) {
-                    // Replace the BatterySipper with a new one with the real UID set.
-                    BatterySipper newSipper = new BatterySipper(sipper.drainType,
-                            new FakeUid(realUid), 0.0);
-                    newSipper.add(sipper);
-                    newSipper.packageWithHighestDrain = sipper.packageWithHighestDrain;
-                    newSipper.mPackages = sipper.mPackages;
-                    sipper = newSipper;
-                }
-
-                int index = uidList.indexOfKey(realUid);
-                if (index < 0) {
-                    // New entry.
-                    uidList.put(realUid, sipper);
-                } else {
-                    // Combine BatterySippers if we already have one with this UID.
-                    final BatterySipper existingSipper = uidList.valueAt(index);
-                    existingSipper.add(sipper);
-                    if (existingSipper.packageWithHighestDrain == null
-                            && sipper.packageWithHighestDrain != null) {
-                        existingSipper.packageWithHighestDrain = sipper.packageWithHighestDrain;
-                    }
-
-                    final int existingPackageLen = existingSipper.mPackages != null ?
-                            existingSipper.mPackages.length : 0;
-                    final int newPackageLen = sipper.mPackages != null ?
-                            sipper.mPackages.length : 0;
-                    if (newPackageLen > 0) {
-                        String[] newPackages = new String[existingPackageLen + newPackageLen];
-                        if (existingPackageLen > 0) {
-                            System.arraycopy(existingSipper.mPackages, 0, newPackages, 0,
-                                    existingPackageLen);
-                        }
-                        System.arraycopy(sipper.mPackages, 0, newPackages, existingPackageLen,
-                                newPackageLen);
-                        existingSipper.mPackages = newPackages;
-                    }
-                }
-            } else {
-                results.add(sipper);
-            }
-        }
-
-        final int numUidSippers = uidList.size();
-        for (int i = 0; i < numUidSippers; i++) {
-            results.add(uidList.valueAt(i));
-        }
-
-        // The sort order must have changed, so re-sort based on total power use.
-        mBatteryUtils.sortUsageList(results);
-        return results;
-    }
-
-    protected void refreshUi() {
-        final Context context = getContext();
-        if (context == null) {
-            return;
-        }
-
-        restartAnomalyDetectionIfPossible();
-
-        // reload BatteryInfo and updateUI
-        restartBatteryInfoLoader();
-        final long lastFullChargeTime = mBatteryUtils.calculateLastFullChargeTime(mStatsHelper,
-                System.currentTimeMillis());
-        updateScreenPreference();
-        updateLastFullChargePreference(lastFullChargeTime);
-
-        final CharSequence timeSequence = StringUtil.formatRelativeTime(context, lastFullChargeTime,
-                false);
-        final int resId = mShowAllApps ? R.string.power_usage_list_summary_device
-                : R.string.power_usage_list_summary;
-        mAppListGroup.setTitle(TextUtils.expandTemplate(getText(resId), timeSequence));
-
-        refreshAppListGroup();
-    }
-
-    private void refreshAppListGroup() {
-        final PowerProfile powerProfile = mStatsHelper.getPowerProfile();
-        final BatteryStats stats = mStatsHelper.getStats();
-        final double averagePower = powerProfile.getAveragePower(PowerProfile.POWER_SCREEN_FULL);
-        boolean addedSome = false;
-        final int dischargeAmount = USE_FAKE_DATA ? 5000
-                : stats != null ? stats.getDischargeAmount(mStatsType) : 0;
-
-        cacheRemoveAllPrefs(mAppListGroup);
-        mAppListGroup.setOrderingAsAdded(false);
-
-        if (averagePower >= MIN_AVERAGE_POWER_THRESHOLD_MILLI_AMP || USE_FAKE_DATA) {
-            final List<BatterySipper> usageList = getCoalescedUsageList(
-                    USE_FAKE_DATA ? getFakeStats() : mStatsHelper.getUsageList());
-            double hiddenPowerMah = mShowAllApps ? 0 :
-                    mBatteryUtils.removeHiddenBatterySippers(usageList);
-            mBatteryUtils.sortUsageList(usageList);
-
-            final int numSippers = usageList.size();
-            for (int i = 0; i < numSippers; i++) {
-                final BatterySipper sipper = usageList.get(i);
-                double totalPower = USE_FAKE_DATA ? 4000 : mStatsHelper.getTotalPower();
-
-                final double percentOfTotal = mBatteryUtils.calculateBatteryPercent(
-                        sipper.totalPowerMah, totalPower, hiddenPowerMah, dischargeAmount);
-
-                if (((int) (percentOfTotal + .5)) < 1) {
-                    continue;
-                }
-                if (shouldHideSipper(sipper)) {
-                    continue;
-                }
-                final UserHandle userHandle = new UserHandle(UserHandle.getUserId(sipper.getUid()));
-                final BatteryEntry entry = new BatteryEntry(getActivity(), mHandler, mUm, sipper);
-                final Drawable badgedIcon = mUm.getBadgedIconForUser(entry.getIcon(),
-                        userHandle);
-                final CharSequence contentDescription = mUm.getBadgedLabelForUser(entry.getLabel(),
-                        userHandle);
-
-                final String key = extractKeyFromSipper(sipper);
-                PowerGaugePreference pref = (PowerGaugePreference) getCachedPreference(key);
-                if (pref == null) {
-                    pref = new PowerGaugePreference(getPrefContext(), badgedIcon,
-                            contentDescription, entry);
-                    pref.setKey(key);
-                }
-                sipper.percent = percentOfTotal;
-                pref.setTitle(entry.getLabel());
-                pref.setOrder(i + 1);
-                pref.setPercent(percentOfTotal);
-                pref.shouldShowAnomalyIcon(false);
-                if (sipper.usageTimeMs == 0 && sipper.drainType == DrainType.APP) {
-                    sipper.usageTimeMs = mBatteryUtils.getProcessTimeMs(
-                            BatteryUtils.StatusType.FOREGROUND, sipper.uidObj, mStatsType);
-                }
-                setUsageSummary(pref, sipper);
-                addedSome = true;
-                mAppListGroup.addPreference(pref);
-                if (mAppListGroup.getPreferenceCount() - getCachedCount()
-                        > (MAX_ITEMS_TO_LIST + 1)) {
-                    break;
-                }
-            }
-        }
-        if (!addedSome) {
-            addNotAvailableMessage();
-        }
-        removeCachedPrefs(mAppListGroup);
-
-        BatteryEntry.startRequestQueue();
-    }
-
-    @VisibleForTesting
-    boolean shouldHideSipper(BatterySipper sipper) {
-        // Don't show over-counted and unaccounted in any condition
-        return sipper.drainType == DrainType.OVERCOUNTED
-                || sipper.drainType == DrainType.UNACCOUNTED;
-    }
-
-    @VisibleForTesting
-    void refreshAnomalyIcon() {
-        for (int i = 0, size = mAnomalySparseArray.size(); i < size; i++) {
-            final String key = extractKeyFromUid(mAnomalySparseArray.keyAt(i));
-            final PowerGaugePreference pref = (PowerGaugePreference) mAppListGroup.findPreference(
-                    key);
-            if (pref != null) {
-                pref.shouldShowAnomalyIcon(true);
-            }
-        }
-    }
-
-    @VisibleForTesting
-    void restartAnomalyDetectionIfPossible() {
-        if (getAnomalyDetectionPolicy().isAnomalyDetectionEnabled()) {
-            getLoaderManager().restartLoader(ANOMALY_LOADER, Bundle.EMPTY, mAnomalyLoaderCallbacks);
-        }
-    }
-
-    @VisibleForTesting
-    AnomalyDetectionPolicy getAnomalyDetectionPolicy() {
-        return new AnomalyDetectionPolicy(getContext());
-    }
-
-    @VisibleForTesting
-    BatterySipper findBatterySipperByType(List<BatterySipper> usageList, DrainType type) {
-        for (int i = 0, size = usageList.size(); i < size; i++) {
-            final BatterySipper sipper = usageList.get(i);
-            if (sipper.drainType == type) {
-                return sipper;
-            }
-        }
-        return null;
-    }
-
-    @VisibleForTesting
-    void updateScreenPreference() {
-        final BatterySipper sipper = findBatterySipperByType(
-                mStatsHelper.getUsageList(), DrainType.SCREEN);
-        final long usageTimeMs = sipper != null ? sipper.usageTimeMs : 0;
-
-        mScreenUsagePref.setSubtitle(
-            StringUtil.formatElapsedTime(getContext(), usageTimeMs, false));
-    }
-
-    @VisibleForTesting
-    void updateLastFullChargePreference(long timeMs) {
-        final CharSequence timeSequence = StringUtil.formatRelativeTime(getContext(), timeMs, false);
-        mLastFullChargePref.setSubtitle(timeSequence);
-    }
-
-    @VisibleForTesting
-    void showBothEstimates() {
-        final Context context = getContext();
-        if (context == null
-                || !mPowerFeatureProvider.isEnhancedBatteryPredictionEnabled(context)) {
-            return;
-        }
-        getLoaderManager().restartLoader(DEBUG_INFO_LOADER, Bundle.EMPTY,
-                mBatteryInfoDebugLoaderCallbacks);
-    }
-
-    @VisibleForTesting
-    double calculatePercentage(double powerUsage, double dischargeAmount) {
-        final double totalPower = mStatsHelper.getTotalPower();
-        return totalPower == 0 ? 0 :
-                ((powerUsage / totalPower) * dischargeAmount);
-    }
-
-    @VisibleForTesting
-    void setUsageSummary(Preference preference, BatterySipper sipper) {
-        // Only show summary when usage time is longer than one minute
-        final long usageTimeMs = sipper.usageTimeMs;
-        if (usageTimeMs >= DateUtils.MINUTE_IN_MILLIS) {
-            final CharSequence timeSequence =
-                    StringUtil.formatElapsedTime(getContext(), usageTimeMs, false);
-            preference.setSummary(
-                    (sipper.drainType != DrainType.APP || mBatteryUtils.shouldHideSipper(sipper))
-                            ? timeSequence
-                            : TextUtils.expandTemplate(getText(R.string.battery_used_for),
-                                    timeSequence));
-        }
-    }
-
-    @VisibleForTesting
-    String extractKeyFromSipper(BatterySipper sipper) {
-        if (sipper.uidObj != null) {
-            return extractKeyFromUid(sipper.getUid());
-        } else if (sipper.drainType == DrainType.USER) {
-            return sipper.drainType.toString() + sipper.userId;
-        } else if (sipper.drainType != DrainType.APP) {
-            return sipper.drainType.toString();
-        } else if (sipper.getPackages() != null) {
-            return TextUtils.concat(sipper.getPackages()).toString();
-        } else {
-            Log.w(TAG, "Inappropriate BatterySipper without uid and package names: " + sipper);
-            return "-1";
-        }
-    }
-
-    @VisibleForTesting
-    String extractKeyFromUid(int uid) {
-        return Integer.toString(uid);
-    }
-
-    @VisibleForTesting
-    void setBatteryLayoutPreference(LayoutPreference layoutPreference) {
-        mBatteryLayoutPref = layoutPreference;
-    }
-
-    @VisibleForTesting
-    void initFeatureProvider() {
-        final Context context = getContext();
-        mPowerFeatureProvider = FeatureFactory.getFactory(context)
-                .getPowerUsageFeatureProvider(context);
-    }
-
-    @VisibleForTesting
-    void updateAnomalySparseArray(List<Anomaly> anomalies) {
-        mAnomalySparseArray.clear();
-        for (int i = 0, size = anomalies.size(); i < size; i++) {
-            final Anomaly anomaly = anomalies.get(i);
-            if (mAnomalySparseArray.get(anomaly.uid) == null) {
-                mAnomalySparseArray.append(anomaly.uid, new ArrayList<>());
-            }
-            mAnomalySparseArray.get(anomaly.uid).add(anomaly);
-        }
-    }
-
-    @VisibleForTesting
-    void restartBatteryInfoLoader() {
-        getLoaderManager().restartLoader(BATTERY_INFO_LOADER, Bundle.EMPTY,
-                mBatteryInfoLoaderCallbacks);
-        if (mPowerFeatureProvider.isEstimateDebugEnabled()) {
-            // Unfortunately setting a long click listener on a view means it will no
-            // longer pass the regular click event to the parent, so we have to register
-            // a regular click listener as well.
-            View header = mBatteryLayoutPref.findViewById(R.id.summary1);
-            header.setOnLongClickListener(this);
-            header.setOnClickListener(this);
-        }
-    }
-
-    private static List<BatterySipper> getFakeStats() {
-        ArrayList<BatterySipper> stats = new ArrayList<>();
-        float use = 5;
-        for (DrainType type : DrainType.values()) {
-            if (type == DrainType.APP) {
-                continue;
-            }
-            stats.add(new BatterySipper(type, null, use));
-            use += 5;
-        }
-        for (int i = 0; i < 100; i++) {
-            stats.add(new BatterySipper(DrainType.APP,
-                    new FakeUid(Process.FIRST_APPLICATION_UID + i), use));
-        }
-        stats.add(new BatterySipper(DrainType.APP,
-                new FakeUid(0), use));
-
-        // Simulate dex2oat process.
-        BatterySipper sipper = new BatterySipper(DrainType.APP,
-                new FakeUid(UserHandle.getSharedAppGid(Process.FIRST_APPLICATION_UID)), 10.0f);
-        sipper.packageWithHighestDrain = "dex2oat";
-        stats.add(sipper);
-
-        sipper = new BatterySipper(DrainType.APP,
-                new FakeUid(UserHandle.getSharedAppGid(Process.FIRST_APPLICATION_UID + 1)), 10.0f);
-        sipper.packageWithHighestDrain = "dex2oat";
-        stats.add(sipper);
-
-        sipper = new BatterySipper(DrainType.APP,
-                new FakeUid(UserHandle.getSharedAppGid(Process.LOG_UID)), 9.0f);
-        stats.add(sipper);
-
-        return stats;
-    }
-
-    Handler mHandler = new Handler() {
-
-        @Override
-        public void handleMessage(Message msg) {
-            switch (msg.what) {
-                case BatteryEntry.MSG_UPDATE_NAME_ICON:
-                    BatteryEntry entry = (BatteryEntry) msg.obj;
-                    PowerGaugePreference pgp =
-                            (PowerGaugePreference) findPreference(
-                                    Integer.toString(entry.sipper.uidObj.getUid()));
-                    if (pgp != null) {
-                        final int userId = UserHandle.getUserId(entry.sipper.getUid());
-                        final UserHandle userHandle = new UserHandle(userId);
-                        pgp.setIcon(mUm.getBadgedIconForUser(entry.getIcon(), userHandle));
-                        pgp.setTitle(entry.name);
-                        if (entry.sipper.drainType == DrainType.APP) {
-                            pgp.setContentDescription(entry.name);
-                        }
-                    }
-                    break;
-                case BatteryEntry.MSG_REPORT_FULLY_DRAWN:
-                    Activity activity = getActivity();
-                    if (activity != null) {
-                        activity.reportFullyDrawn();
-                    }
-                    break;
-            }
-            super.handleMessage(msg);
-        }
-    };
-
-    @Override
-    public void onAnomalyHandled(Anomaly anomaly) {
-        mAnomalySummaryPreferenceController.hideHighUsagePreference();
-    }
-
-    @Override
-    public boolean onLongClick(View view) {
-        showBothEstimates();
-        view.setOnLongClickListener(null);
-        return true;
-    }
-
-    @Override
-    public void onClick(View view) {
-        performBatteryHeaderClick();
-    }
-
-    @Override
-    protected void restartBatteryStatsLoader() {
-        restartBatteryStatsLoader(true /* clearHeader */);
-    }
-
-    void restartBatteryStatsLoader(boolean clearHeader) {
-        super.restartBatteryStatsLoader();
-        if (clearHeader) {
-            mBatteryHeaderPreferenceController.quickUpdateHeaderPreference();
-        }
-    }
-
-    private static class SummaryProvider implements SummaryLoader.SummaryProvider {
-        private final Context mContext;
-        private final SummaryLoader mLoader;
-        private final BatteryBroadcastReceiver mBatteryBroadcastReceiver;
-
-        private SummaryProvider(Context context, SummaryLoader loader) {
-            mContext = context;
-            mLoader = loader;
-            mBatteryBroadcastReceiver = new BatteryBroadcastReceiver(mContext);
-            mBatteryBroadcastReceiver.setBatteryChangedListener(() -> {
-                BatteryInfo.getBatteryInfo(mContext, new BatteryInfo.Callback() {
-                    @Override
-                    public void onBatteryInfoLoaded(BatteryInfo info) {
-                        mLoader.setSummary(PowerUsageSummaryLegacy.SummaryProvider.this, info.chargeLabel);
-                    }
-                }, true /* shortString */);
-            });
-        }
-
-        @Override
-        public void setListening(boolean listening) {
-            if (listening) {
-                mBatteryBroadcastReceiver.register();
-            } else {
-                mBatteryBroadcastReceiver.unRegister();
-            }
-        }
-    }
-
-    public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY
-            = new SummaryLoader.SummaryProviderFactory() {
-        @Override
-        public SummaryLoader.SummaryProvider createSummaryProvider(Activity activity,
-                SummaryLoader summaryLoader) {
-            return new SummaryProvider(activity, summaryLoader);
-        }
-    };
-}
diff --git a/src/com/android/settings/search/SearchIndexableResourcesImpl.java b/src/com/android/settings/search/SearchIndexableResourcesImpl.java
index 61f5fec..0bc8de6 100644
--- a/src/com/android/settings/search/SearchIndexableResourcesImpl.java
+++ b/src/com/android/settings/search/SearchIndexableResourcesImpl.java
@@ -50,7 +50,6 @@
 import com.android.settings.dream.DreamSettings;
 import com.android.settings.enterprise.EnterprisePrivacySettings;
 import com.android.settings.fuelgauge.PowerUsageAdvanced;
-import com.android.settings.fuelgauge.PowerUsageAdvancedLegacy;
 import com.android.settings.fuelgauge.batterysaver.BatterySaverSettings;
 import com.android.settings.fuelgauge.PowerUsageSummary;
 import com.android.settings.fuelgauge.SmartBatterySettings;
@@ -124,7 +123,6 @@
         addIndex(ZenModeSettings.class);
         addIndex(StorageSettings.class);
         addIndex(PowerUsageAdvanced.class);
-        addIndex(PowerUsageAdvancedLegacy.class);
         addIndex(DefaultAppSettings.class);
         addIndex(ManageAssist.class);
         addIndex(SpecialAccessSettings.class);
diff --git a/tests/robotests/assets/grandfather_not_implementing_index_provider b/tests/robotests/assets/grandfather_not_implementing_index_provider
index 223d8f8..39e63d4 100644
--- a/tests/robotests/assets/grandfather_not_implementing_index_provider
+++ b/tests/robotests/assets/grandfather_not_implementing_index_provider
@@ -4,7 +4,6 @@
 com.android.settings.bluetooth.BluetoothPairingDetail
 com.android.settings.accounts.AccountDetailDashboardFragment
 com.android.settings.fuelgauge.PowerUsageAnomalyDetails
-com.android.settings.fuelgauge.PowerUsageSummaryLegacy
 com.android.settings.fuelgauge.AdvancedPowerUsageDetail
 com.android.settings.development.featureflags.FeatureFlagsDashboard
 com.android.settings.development.qstile.DevelopmentTileConfigFragment
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageAdvancedLegacyTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageAdvancedLegacyTest.java
deleted file mode 100644
index 756d913..0000000
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageAdvancedLegacyTest.java
+++ /dev/null
@@ -1,437 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.settings.fuelgauge;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.atLeastOnce;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.UserInfo;
-import android.net.ConnectivityManager;
-import android.os.UserManager;
-import android.support.v7.preference.PreferenceCategory;
-import android.support.v7.preference.PreferenceGroup;
-import android.support.v7.preference.PreferenceManager;
-
-import com.android.internal.os.BatterySipper;
-import com.android.internal.os.BatterySipper.DrainType;
-import com.android.internal.os.BatteryStatsHelper;
-import com.android.settings.R;
-import com.android.settings.Utils;
-import com.android.settings.testutils.BatteryTestUtils;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
-import com.android.settings.fuelgauge.PowerUsageAdvancedLegacy.PowerUsageData;
-import com.android.settings.fuelgauge.PowerUsageAdvancedLegacy.PowerUsageData.UsageType;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Answers;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RuntimeEnvironment;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-@RunWith(SettingsRobolectricTestRunner.class)
-public class PowerUsageAdvancedLegacyTest {
-    private static final int FAKE_UID_1 = 50;
-    private static final int FAKE_UID_2 = 100;
-    private static final int DISCHARGE_AMOUNT = 60;
-    private static final double TYPE_APP_USAGE = 80;
-    private static final double TYPE_BLUETOOTH_USAGE = 50;
-    private static final double TYPE_WIFI_USAGE = 0;
-    private static final double TOTAL_USAGE = TYPE_APP_USAGE * 2 + TYPE_BLUETOOTH_USAGE
-            + TYPE_WIFI_USAGE;
-    private static final double TOTAL_POWER = 500;
-    private static final double PRECISION = 0.001;
-    private static final String STUB_STRING = "stub_string";
-    @Mock
-    private BatterySipper mNormalBatterySipper;
-    @Mock
-    private BatterySipper mMaxBatterySipper;
-    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
-    private BatteryStatsHelper mBatteryStatsHelper;
-    @Mock
-    private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
-    @Mock
-    private PackageManager mPackageManager;
-    @Mock
-    private UserManager mUserManager;
-    @Mock
-    private BatteryHistoryPreference mHistPref;
-    @Mock
-    private PreferenceGroup mUsageListGroup;
-    @Mock
-    private ConnectivityManager mConnectivityManager;
-    @Mock
-    private UserInfo mNormalUserInfo;
-    @Mock
-    private UserInfo mManagedUserInfo;
-    private PowerUsageAdvancedLegacy mPowerUsageAdvanced;
-    private PowerUsageData mPowerUsageData;
-    private Context mShadowContext;
-    private Intent mDischargingBatteryIntent;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mShadowContext = spy(RuntimeEnvironment.application);
-        mPowerUsageAdvanced = spy(new PowerUsageAdvancedLegacy());
-
-        List<BatterySipper> batterySippers = new ArrayList<>();
-        batterySippers.add(new BatterySipper(DrainType.APP,
-                new FakeUid(FAKE_UID_1), TYPE_APP_USAGE));
-        batterySippers.add(new BatterySipper(DrainType.APP,
-                new FakeUid(FAKE_UID_2), TYPE_APP_USAGE));
-        batterySippers.add(new BatterySipper(DrainType.BLUETOOTH, new FakeUid(FAKE_UID_1),
-                TYPE_BLUETOOTH_USAGE));
-        batterySippers.add(new BatterySipper(DrainType.WIFI, new FakeUid(FAKE_UID_1),
-                TYPE_WIFI_USAGE));
-
-        mDischargingBatteryIntent = BatteryTestUtils.getDischargingIntent();
-        doReturn(mDischargingBatteryIntent).when(mShadowContext).registerReceiver(any(), any());
-        when(mBatteryStatsHelper.getStats().getDischargeAmount(anyInt())).thenReturn(
-                DISCHARGE_AMOUNT);
-        when(mBatteryStatsHelper.getUsageList()).thenReturn(batterySippers);
-        when(mBatteryStatsHelper.getTotalPower()).thenReturn(TOTAL_USAGE);
-        when(mPowerUsageAdvanced.getContext()).thenReturn(mShadowContext);
-        doReturn(STUB_STRING).when(mPowerUsageAdvanced).getString(anyInt(), any(), any());
-        doReturn(STUB_STRING).when(mPowerUsageAdvanced).getString(anyInt(), any());
-        doReturn(mShadowContext.getText(R.string.battery_used_for)).when(
-                mPowerUsageAdvanced).getText(R.string.battery_used_for);
-        mPowerUsageAdvanced.setPackageManager(mPackageManager);
-        mPowerUsageAdvanced.setPowerUsageFeatureProvider(mPowerUsageFeatureProvider);
-        mPowerUsageAdvanced.setUserManager(mUserManager);
-        mPowerUsageAdvanced.setBatteryUtils(BatteryUtils.getInstance(mShadowContext));
-        when(mShadowContext.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn(
-                mConnectivityManager);
-
-        mPowerUsageData = new PowerUsageData(UsageType.USER);
-        mMaxBatterySipper.totalPowerMah = TYPE_BLUETOOTH_USAGE;
-        mMaxBatterySipper.drainType = DrainType.BLUETOOTH;
-        mNormalBatterySipper.drainType = DrainType.SCREEN;
-
-        doReturn(true).when(mNormalUserInfo).isEnabled();
-        doReturn(false).when(mNormalUserInfo).isManagedProfile();
-        doReturn(true).when(mManagedUserInfo).isEnabled();
-        doReturn(true).when(mManagedUserInfo).isManagedProfile();
-    }
-
-    @Test
-    public void testPrefs_shouldNotBeSelectable() {
-        PreferenceManager pm = new PreferenceManager(mShadowContext);
-        when(mPowerUsageAdvanced.getPreferenceManager()).thenReturn(pm);
-        PreferenceGroup prefGroup = spy(new PreferenceCategory(mShadowContext));
-        when(prefGroup.getPreferenceManager()).thenReturn(pm);
-
-        mPowerUsageAdvanced.refreshPowerUsageDataList(mBatteryStatsHelper, prefGroup);
-        assertThat(prefGroup.getPreferenceCount()).isAtLeast(1);
-        for (int i = 0, count = prefGroup.getPreferenceCount(); i < count; i++) {
-            PowerGaugePreference pref = (PowerGaugePreference) prefGroup.getPreference(i);
-            assertThat(pref.isSelectable()).isFalse();
-        }
-    }
-
-    @Test
-    public void testExtractUsageType_TypeSystem_ReturnSystem() {
-        mNormalBatterySipper.drainType = DrainType.APP;
-        when(mPowerUsageFeatureProvider.isTypeSystem(any())).thenReturn(true);
-
-        assertThat(mPowerUsageAdvanced.extractUsageType(mNormalBatterySipper))
-                .isEqualTo(UsageType.SYSTEM);
-    }
-
-    @Test
-    public void testExtractUsageType_TypeEqualsToDrainType_ReturnRelevantType() {
-        final DrainType drainTypes[] = {DrainType.WIFI, DrainType.BLUETOOTH, DrainType.IDLE,
-                DrainType.USER, DrainType.CELL, DrainType.UNACCOUNTED};
-        final int usageTypes[] = {UsageType.WIFI, UsageType.BLUETOOTH, UsageType.IDLE,
-                UsageType.USER, UsageType.CELL, UsageType.UNACCOUNTED};
-
-        assertThat(drainTypes.length).isEqualTo(usageTypes.length);
-        for (int i = 0, size = drainTypes.length; i < size; i++) {
-            mNormalBatterySipper.drainType = drainTypes[i];
-            assertThat(mPowerUsageAdvanced.extractUsageType(mNormalBatterySipper))
-                    .isEqualTo(usageTypes[i]);
-        }
-    }
-
-    @Test
-    public void testExtractUsageType_TypeService_ReturnSystem() {
-        mNormalBatterySipper.drainType = DrainType.APP;
-        when(mNormalBatterySipper.getUid()).thenReturn(FAKE_UID_1);
-        when(mPowerUsageFeatureProvider.isTypeService(any())).thenReturn(true);
-
-        assertThat(mPowerUsageAdvanced.extractUsageType(mNormalBatterySipper))
-                .isEqualTo(UsageType.SYSTEM);
-    }
-
-    @Test
-    public void testParsePowerUsageData_PercentageCalculatedCorrectly() {
-        final double percentApp = TYPE_APP_USAGE * 2 / TOTAL_USAGE * DISCHARGE_AMOUNT;
-        final double percentWifi = TYPE_WIFI_USAGE / TOTAL_USAGE * DISCHARGE_AMOUNT;
-        final double percentBluetooth = TYPE_BLUETOOTH_USAGE / TOTAL_USAGE * DISCHARGE_AMOUNT;
-
-        List<PowerUsageData> batteryData =
-                mPowerUsageAdvanced.parsePowerUsageData(mBatteryStatsHelper);
-        for (PowerUsageData data : batteryData) {
-            switch (data.usageType) {
-                case UsageType.WIFI:
-                    assertThat(data.percentage).isWithin(PRECISION).of(percentWifi);
-                    break;
-                case UsageType.APP:
-                    assertThat(data.percentage).isWithin(PRECISION).of(percentApp);
-                    break;
-                case UsageType.BLUETOOTH:
-                    assertThat(data.percentage).isWithin(PRECISION).of(percentBluetooth);
-                    break;
-                default:
-                    break;
-            }
-        }
-    }
-
-    @Test
-    public void testUpdateUsageDataSummary_onlyOneApp_showUsageTime() {
-        final String expectedSummary = "Used for 0m";
-        mPowerUsageData.usageList.add(mNormalBatterySipper);
-
-        mPowerUsageAdvanced.updateUsageDataSummary(mPowerUsageData, TOTAL_POWER, DISCHARGE_AMOUNT);
-
-        assertThat(mPowerUsageData.summary.toString()).isEqualTo(expectedSummary);
-    }
-
-    @Test
-    public void testUpdateUsageDataSummary_typeIdle_showUsageTime() {
-        mPowerUsageData.usageType = UsageType.IDLE;
-        mPowerUsageData.usageList.add(mNormalBatterySipper);
-
-        mPowerUsageAdvanced.updateUsageDataSummary(mPowerUsageData, TOTAL_POWER, DISCHARGE_AMOUNT);
-
-        assertThat(mPowerUsageData.summary.toString()).isEqualTo("0m");
-    }
-
-    @Test
-    public void testUpdateUsageDataSummary_moreThanOneApp_showMaxUsageApp() {
-        mPowerUsageData.usageList.add(mNormalBatterySipper);
-        mPowerUsageData.usageList.add(mMaxBatterySipper);
-        doReturn(mMaxBatterySipper).when(mPowerUsageAdvanced)
-            .findBatterySipperWithMaxBatteryUsage(mPowerUsageData.usageList);
-        final double percentage = (TYPE_BLUETOOTH_USAGE / TOTAL_POWER) * DISCHARGE_AMOUNT;
-        mPowerUsageAdvanced.updateUsageDataSummary(mPowerUsageData, TOTAL_POWER, DISCHARGE_AMOUNT);
-
-        verify(mPowerUsageAdvanced).getString(eq(R.string.battery_used_by),
-                eq(Utils.formatPercentage(percentage, true)), any());
-    }
-
-    @Test
-    public void testFindBatterySipperWithMaxBatteryUsage_findCorrectOne() {
-        mPowerUsageData.usageList.add(mNormalBatterySipper);
-        mPowerUsageData.usageList.add(mMaxBatterySipper);
-        BatterySipper sipper =
-            mPowerUsageAdvanced.findBatterySipperWithMaxBatteryUsage(mPowerUsageData.usageList);
-
-        assertThat(sipper).isEqualTo(mMaxBatterySipper);
-    }
-
-    @Test
-    public void testInit_ContainsAllUsageType() {
-        final int[] usageTypeSet = mPowerUsageAdvanced.mUsageTypes;
-
-        assertThat(usageTypeSet).asList().containsExactly(UsageType.APP, UsageType.WIFI,
-                UsageType.CELL, UsageType.BLUETOOTH, UsageType.IDLE, UsageType.USER,
-                UsageType.SYSTEM, UsageType.UNACCOUNTED, UsageType.OVERCOUNTED);
-    }
-
-    @Test
-    public void testPowerUsageData_SortedByUsage() {
-        List<PowerUsageData> dataList = new ArrayList<>();
-
-        dataList.add(new PowerUsageData(UsageType.WIFI, TYPE_WIFI_USAGE));
-        dataList.add(new PowerUsageData(UsageType.BLUETOOTH, TYPE_BLUETOOTH_USAGE));
-        dataList.add(new PowerUsageData(UsageType.APP, TYPE_APP_USAGE));
-        Collections.sort(dataList);
-
-        for (int i = 1, size = dataList.size(); i < size; i++) {
-            assertThat(dataList.get(i - 1).totalPowerMah).isAtLeast(dataList.get(i).totalPowerMah);
-        }
-    }
-
-    @Test
-    public void testShouldHideCategory_typeUnAccounted_returnTrue() {
-        mPowerUsageData.usageType = UsageType.UNACCOUNTED;
-
-        assertThat(mPowerUsageAdvanced.shouldHideCategory(mPowerUsageData)).isTrue();
-    }
-
-    @Test
-    public void testShouldHideCategory_typeOverCounted_returnTrue() {
-        mPowerUsageData.usageType = UsageType.OVERCOUNTED;
-
-        assertThat(mPowerUsageAdvanced.shouldHideCategory(mPowerUsageData)).isTrue();
-    }
-
-    @Test
-    public void testShouldHideCategory_typeUserAndOnlyOneNormalUser_returnTrue() {
-        mPowerUsageData.usageType = UsageType.USER;
-        List<UserInfo> userInfos = new ArrayList<>();
-        userInfos.add(mNormalUserInfo);
-        userInfos.add(mManagedUserInfo);
-        doReturn(userInfos).when(mUserManager).getUsers();
-
-        assertThat(mPowerUsageAdvanced.shouldHideCategory(mPowerUsageData)).isTrue();
-    }
-
-    @Test
-    public void testShouldHideCategory_typeCellWhileNotSupported_returnTrue() {
-        mPowerUsageData.usageType = UsageType.CELL;
-        doReturn(false).when(mConnectivityManager)
-            .isNetworkSupported(ConnectivityManager.TYPE_MOBILE);
-
-        assertThat(mPowerUsageAdvanced.shouldHideCategory(mPowerUsageData)).isTrue();
-    }
-
-    @Test
-    public void testShouldHideCategory_typeCellWhileSupported_returnFalse() {
-        mPowerUsageData.usageType = UsageType.CELL;
-        doReturn(true).when(mConnectivityManager).isNetworkSupported(
-                ConnectivityManager.TYPE_MOBILE);
-
-        assertThat(mPowerUsageAdvanced.shouldHideCategory(mPowerUsageData)).isFalse();
-    }
-
-    @Test
-    public void testShouldHideCategory_typeUserAndMoreThanOne_returnFalse() {
-        mPowerUsageData.usageType = UsageType.USER;
-        List<UserInfo> userInfos = new ArrayList<>();
-        userInfos.add(mNormalUserInfo);
-        userInfos.add(mNormalUserInfo);
-        doReturn(userInfos).when(mUserManager).getUsers();
-
-        assertThat(mPowerUsageAdvanced.shouldHideCategory(mPowerUsageData)).isFalse();
-    }
-
-    @Test
-    public void testShouldHideCategory_typeNormal_returnFalse() {
-        mPowerUsageData.usageType = UsageType.APP;
-
-        assertThat(mPowerUsageAdvanced.shouldHideCategory(mPowerUsageData)).isFalse();
-    }
-
-    @Test
-    public void testShouldHideSummary_typeCell_returnTrue() {
-        mPowerUsageData.usageType = UsageType.CELL;
-
-        assertThat(mPowerUsageAdvanced.shouldHideSummary(mPowerUsageData)).isTrue();
-    }
-
-    @Test
-    public void testShouldHideSummary_typeSystem_returnTrue() {
-        mPowerUsageData.usageType = UsageType.SYSTEM;
-
-        assertThat(mPowerUsageAdvanced.shouldHideSummary(mPowerUsageData)).isTrue();
-    }
-
-    @Test
-    public void testShouldHideSummary_typeWifi_returnTrue() {
-        mPowerUsageData.usageType = UsageType.WIFI;
-
-        assertThat(mPowerUsageAdvanced.shouldHideSummary(mPowerUsageData)).isTrue();
-    }
-
-    @Test
-    public void testShouldHideSummary_typeBluetooth_returnTrue() {
-        mPowerUsageData.usageType = UsageType.BLUETOOTH;
-
-        assertThat(mPowerUsageAdvanced.shouldHideSummary(mPowerUsageData)).isTrue();
-    }
-
-    @Test
-    public void testShouldHideSummary_typeApp_returnTrue() {
-        mPowerUsageData.usageType = UsageType.APP;
-
-        assertThat(mPowerUsageAdvanced.shouldHideSummary(mPowerUsageData)).isTrue();
-    }
-
-    @Test
-    public void testShouldHideSummary_typeNormal_returnFalse() {
-        mPowerUsageData.usageType = UsageType.IDLE;
-
-        assertThat(mPowerUsageAdvanced.shouldHideSummary(mPowerUsageData)).isFalse();
-    }
-
-    @Test
-    public void testShouldShowBatterySipper_typeScreen_returnFalse() {
-        mNormalBatterySipper.drainType = DrainType.SCREEN;
-
-        assertThat(mPowerUsageAdvanced.shouldShowBatterySipper(mNormalBatterySipper)).isFalse();
-    }
-
-    @Test
-    public void testShouldShowBatterySipper_typeNormal_returnTrue() {
-        mNormalBatterySipper.drainType = DrainType.APP;
-
-        assertThat(mPowerUsageAdvanced.shouldShowBatterySipper(mNormalBatterySipper)).isTrue();
-    }
-
-    @Test
-    public void testCalculateHiddenPower_returnCorrectPower() {
-        List<PowerUsageData> powerUsageDataList = new ArrayList<>();
-        final double unaccountedPower = 100;
-        final double normalPower = 150;
-        powerUsageDataList.add(new PowerUsageData(UsageType.UNACCOUNTED, unaccountedPower));
-        powerUsageDataList.add(new PowerUsageData(UsageType.APP, normalPower));
-        powerUsageDataList.add(new PowerUsageData(UsageType.CELL, normalPower));
-
-        assertThat(mPowerUsageAdvanced.calculateHiddenPower(powerUsageDataList))
-            .isWithin(PRECISION).of(unaccountedPower);
-    }
-
-    @Test
-    public void testRefreshUi_addsSubtextWhenAppropriate() {
-        // Mock out all the battery stuff
-        mPowerUsageAdvanced.mHistPref = mHistPref;
-        mPowerUsageAdvanced.mStatsHelper = mBatteryStatsHelper;
-        doReturn(new ArrayList<PowerUsageData>())
-                .when(mPowerUsageAdvanced).parsePowerUsageData(any());
-        doReturn("").when(mPowerUsageAdvanced).getString(anyInt());
-        mPowerUsageAdvanced.mUsageListGroup = mUsageListGroup;
-
-        // refresh the ui and check that text was not updated when enhanced prediction disabled
-        when(mPowerUsageFeatureProvider.isEnhancedBatteryPredictionEnabled(any()))
-                .thenReturn(false);
-        mPowerUsageAdvanced.refreshUi();
-        verify(mHistPref, never()).setBottomSummary(any());
-
-        // refresh the ui and check that text was updated when enhanced prediction enabled
-        when(mPowerUsageFeatureProvider.isEnhancedBatteryPredictionEnabled(any())).thenReturn(true);
-        mPowerUsageAdvanced.refreshUi();
-        verify(mHistPref, atLeastOnce()).setBottomSummary(any());
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryLegacyTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryLegacyTest.java
deleted file mode 100644
index 0e6efbc..0000000
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryLegacyTest.java
+++ /dev/null
@@ -1,541 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.settings.fuelgauge;
-
-import static com.android.settings.fuelgauge.PowerUsageSummaryLegacy.MENU_HIGH_POWER_APPS;
-import static com.android.settings.fuelgauge.PowerUsageSummaryLegacy.MENU_TOGGLE_APPS;
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Matchers.anyLong;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.app.LoaderManager;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.v7.preference.PreferenceGroup;
-import android.support.v7.preference.PreferenceScreen;
-import android.text.TextUtils;
-import android.text.format.DateUtils;
-import android.util.SparseArray;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.widget.TextView;
-
-import com.android.internal.logging.nano.MetricsProto;
-import com.android.internal.os.BatterySipper;
-import com.android.internal.os.BatteryStatsHelper;
-import com.android.internal.os.BatteryStatsImpl;
-import com.android.settings.R;
-import com.android.settings.SettingsActivity;
-import com.android.settings.applications.LayoutPreference;
-import com.android.settings.fuelgauge.anomaly.Anomaly;
-import com.android.settings.fuelgauge.anomaly.AnomalyDetectionPolicy;
-import com.android.settings.testutils.FakeFeatureFactory;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
-import com.android.settings.testutils.XmlTestUtils;
-import com.android.settings.testutils.shadow.SettingsShadowResources;
-import com.android.settingslib.core.AbstractPreferenceController;
-import com.android.settingslib.utils.StringUtil;
-
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Answers;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-
-import java.util.ArrayList;
-import java.util.List;
-
-// TODO: Improve this test class so that it starts up the real activity and fragment.
-@RunWith(SettingsRobolectricTestRunner.class)
-@Config(shadows = {
-    SettingsShadowResources.class,
-    SettingsShadowResources.SettingsShadowTheme.class,
-})
-public class PowerUsageSummaryLegacyTest {
-
-    private static final String[] PACKAGE_NAMES = {"com.app1", "com.app2"};
-    private static final String STUB_STRING = "stub_string";
-    private static final int UID = 123;
-    private static final int UID_2 = 234;
-    private static final int POWER_MAH = 100;
-    private static final long TIME_SINCE_LAST_FULL_CHARGE_MS = 120 * 60 * 1000;
-    private static final long TIME_SINCE_LAST_FULL_CHARGE_US =
-            TIME_SINCE_LAST_FULL_CHARGE_MS * 1000;
-    private static final int DISCHARGE_AMOUNT = 100;
-    private static final long USAGE_TIME_MS = 65 * 60 * 1000;
-    private static final double TOTAL_POWER = 200;
-    private static final double PRECISION = 0.001;
-    private static final double POWER_USAGE_PERCENTAGE = 50;
-    private static final String NEW_ML_EST_SUFFIX = "(New ML est)";
-    private static final String OLD_EST_SUFFIX = "(Old est)";
-    private static Intent sAdditionalBatteryInfoIntent;
-
-    @BeforeClass
-    public static void beforeClass() {
-        sAdditionalBatteryInfoIntent =new Intent("com.example.app.ADDITIONAL_BATTERY_INFO");
-    }
-
-    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
-    private Menu mMenu;
-    @Mock
-    private MenuItem mToggleAppsMenu;
-    @Mock
-    private MenuItem mHighPowerMenu;
-    @Mock
-    private MenuInflater mMenuInflater;
-    @Mock
-    private BatterySipper mNormalBatterySipper;
-    @Mock
-    private BatterySipper mScreenBatterySipper;
-    @Mock
-    private BatterySipper mCellBatterySipper;
-    @Mock
-    private LayoutPreference mBatteryLayoutPref;
-    @Mock
-    private TextView mBatteryPercentText;
-    @Mock
-    private TextView mSummary1;
-    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
-    private BatteryStatsHelper mBatteryHelper;
-    @Mock
-    private SettingsActivity mSettingsActivity;
-    @Mock
-    private LoaderManager mLoaderManager;
-    @Mock
-    private PreferenceScreen mPreferenceScreen;
-    @Mock
-    private PreferenceGroup mAppListGroup;
-    @Mock
-    private AnomalyDetectionPolicy mAnomalyDetectionPolicy;
-    @Mock
-    private BatteryHeaderPreferenceController mBatteryHeaderPreferenceController;
-
-    private List<BatterySipper> mUsageList;
-    private Context mRealContext;
-    private TestFragment mFragment;
-    private FakeFeatureFactory mFeatureFactory;
-    private BatteryMeterView mBatteryMeterView;
-    private PowerGaugePreference mPreference;
-    private PowerGaugePreference mScreenUsagePref;
-    private PowerGaugePreference mLastFullChargePref;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mRealContext = RuntimeEnvironment.application;
-        mFeatureFactory = FakeFeatureFactory.setupForTest();
-
-        mPreference = new PowerGaugePreference(mRealContext);
-        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();
-        doReturn(mock(LoaderManager.class)).when(mFragment).getLoaderManager();
-
-        when(mFragment.getActivity()).thenReturn(mSettingsActivity);
-        when(mToggleAppsMenu.getItemId()).thenReturn(MENU_TOGGLE_APPS);
-        when(mHighPowerMenu.getItemId()).thenReturn(MENU_HIGH_POWER_APPS);
-        when(mFeatureFactory.powerUsageFeatureProvider.getAdditionalBatteryInfoIntent())
-            .thenReturn(sAdditionalBatteryInfoIntent);
-        when(mBatteryHelper.getTotalPower()).thenReturn(TOTAL_POWER);
-        when(mBatteryHelper.getStats().computeBatteryRealtime(anyLong(), anyInt()))
-            .thenReturn(TIME_SINCE_LAST_FULL_CHARGE_US);
-
-        when(mNormalBatterySipper.getPackages()).thenReturn(PACKAGE_NAMES);
-        when(mNormalBatterySipper.getUid()).thenReturn(UID);
-        mNormalBatterySipper.totalPowerMah = POWER_MAH;
-        mNormalBatterySipper.drainType = BatterySipper.DrainType.APP;
-
-        mCellBatterySipper.drainType = BatterySipper.DrainType.CELL;
-        mCellBatterySipper.totalPowerMah = POWER_MAH;
-
-        when(mBatteryLayoutPref.findViewById(R.id.summary1)).thenReturn(mSummary1);
-        when(mBatteryLayoutPref.findViewById(R.id.battery_percent)).thenReturn(mBatteryPercentText);
-        when(mBatteryLayoutPref.findViewById(R.id.battery_header_icon))
-                .thenReturn(mBatteryMeterView);
-        mFragment.setBatteryLayoutPreference(mBatteryLayoutPref);
-
-        mScreenBatterySipper.drainType = BatterySipper.DrainType.SCREEN;
-        mScreenBatterySipper.usageTimeMs = USAGE_TIME_MS;
-
-        mUsageList = new ArrayList<>();
-        mUsageList.add(mNormalBatterySipper);
-        mUsageList.add(mScreenBatterySipper);
-        mUsageList.add(mCellBatterySipper);
-
-        mFragment.mStatsHelper = mBatteryHelper;
-        when(mBatteryHelper.getUsageList()).thenReturn(mUsageList);
-        mFragment.mScreenUsagePref = mScreenUsagePref;
-        mFragment.mLastFullChargePref = mLastFullChargePref;
-        mFragment.mBatteryUtils = spy(new BatteryUtils(mRealContext));
-        mFragment.mAppListGroup = mAppListGroup;
-    }
-
-    @Test
-    public void testOptionsMenu_menuHighPower_metricEventInvoked() {
-        mFragment.onOptionsItemSelected(mHighPowerMenu);
-
-        verify(mFeatureFactory.metricsFeatureProvider).action(mRealContext,
-                MetricsProto.MetricsEvent.ACTION_SETTINGS_MENU_BATTERY_OPTIMIZATION);
-    }
-
-    @Test
-    public void testOptionsMenu_menuAppToggle_metricEventInvoked() {
-        mFragment.onOptionsItemSelected(mToggleAppsMenu);
-        mFragment.mShowAllApps = false;
-
-        verify(mFeatureFactory.metricsFeatureProvider).action(mRealContext,
-                MetricsProto.MetricsEvent.ACTION_SETTINGS_MENU_BATTERY_APPS_TOGGLE, true);
-    }
-
-    @Test
-    public void testOptionsMenu_toggleAppsEnabled() {
-        when(mFeatureFactory.powerUsageFeatureProvider.isPowerAccountingToggleEnabled())
-                .thenReturn(true);
-        mFragment.mShowAllApps = false;
-
-        mFragment.onCreateOptionsMenu(mMenu, mMenuInflater);
-
-        verify(mMenu).add(Menu.NONE, MENU_TOGGLE_APPS, Menu.NONE, R.string.show_all_apps);
-    }
-
-    @Test
-    public void testOptionsMenu_clickToggleAppsMenu_dataChanged() {
-        testToggleAllApps(true);
-        testToggleAllApps(false);
-    }
-
-    @Test
-    public void testExtractKeyFromSipper_typeAPPUidObjectNull_returnPackageNames() {
-        mNormalBatterySipper.uidObj = null;
-        mNormalBatterySipper.drainType = BatterySipper.DrainType.APP;
-
-        final String key = mFragment.extractKeyFromSipper(mNormalBatterySipper);
-        assertThat(key).isEqualTo(TextUtils.concat(mNormalBatterySipper.getPackages()).toString());
-    }
-
-    @Test
-    public void testExtractKeyFromSipper_typeOther_returnDrainType() {
-        mNormalBatterySipper.uidObj = null;
-        mNormalBatterySipper.drainType = BatterySipper.DrainType.BLUETOOTH;
-
-        final String key = mFragment.extractKeyFromSipper(mNormalBatterySipper);
-        assertThat(key).isEqualTo(mNormalBatterySipper.drainType.toString());
-    }
-
-    @Test
-    public void testExtractKeyFromSipper_typeUser_returnDrainTypeWithUserId() {
-        mNormalBatterySipper.uidObj = null;
-        mNormalBatterySipper.drainType = BatterySipper.DrainType.USER;
-        mNormalBatterySipper.userId = 2;
-
-        final String key = mFragment.extractKeyFromSipper(mNormalBatterySipper);
-        assertThat(key).isEqualTo("USER2");
-    }
-
-    @Test
-    public void testExtractKeyFromSipper_typeAPPUidObjectNotNull_returnUid() {
-        mNormalBatterySipper.uidObj = new BatteryStatsImpl.Uid(new BatteryStatsImpl(), UID);
-        mNormalBatterySipper.drainType = BatterySipper.DrainType.APP;
-
-        final String key = mFragment.extractKeyFromSipper(mNormalBatterySipper);
-        assertThat(key).isEqualTo(Integer.toString(mNormalBatterySipper.getUid()));
-    }
-
-    @Test
-    public void testSetUsageSummary_timeLessThanOneMinute_DoNotSetSummary() {
-        mNormalBatterySipper.usageTimeMs = 59 * DateUtils.SECOND_IN_MILLIS;
-
-        mFragment.setUsageSummary(mPreference, mNormalBatterySipper);
-        assertThat(mPreference.getSummary()).isNull();
-    }
-
-    @Test
-    public void testSetUsageSummary_timeMoreThanOneMinute_normalApp_setScreenSummary() {
-        mNormalBatterySipper.usageTimeMs = 2 * DateUtils.MINUTE_IN_MILLIS;
-        doReturn(mRealContext.getText(R.string.battery_used_for)).when(mFragment)
-            .getText(R.string.battery_used_for);
-        when(mFragment.getContext()).thenReturn(mRealContext);
-
-        mFragment.setUsageSummary(mPreference, mNormalBatterySipper);
-
-        assertThat(mPreference.getSummary().toString()).isEqualTo("Used for 2m");
-    }
-
-    @Test
-    public void testSetUsageSummary_timeMoreThanOneMinute_hiddenApp_setUsedSummary() {
-        mNormalBatterySipper.usageTimeMs = 2 * DateUtils.MINUTE_IN_MILLIS;
-        doReturn(true).when(mFragment.mBatteryUtils).shouldHideSipper(mNormalBatterySipper);
-        when(mFragment.getContext()).thenReturn(mRealContext);
-
-        mFragment.setUsageSummary(mPreference, mNormalBatterySipper);
-
-        assertThat(mPreference.getSummary().toString()).isEqualTo("2m");
-    }
-
-    @Test
-    public void testSetUsageSummary_timeMoreThanOneMinute_notApp_setUsedSummary() {
-        mNormalBatterySipper.usageTimeMs = 2 * DateUtils.MINUTE_IN_MILLIS;
-        mNormalBatterySipper.drainType = BatterySipper.DrainType.PHONE;
-        when(mFragment.getContext()).thenReturn(mRealContext);
-
-        mFragment.setUsageSummary(mPreference, mNormalBatterySipper);
-
-        assertThat(mPreference.getSummary().toString()).isEqualTo("2m");
-    }
-
-    private void testToggleAllApps(final boolean isShowApps) {
-        mFragment.mShowAllApps = isShowApps;
-
-        mFragment.onOptionsItemSelected(mToggleAppsMenu);
-        assertThat(mFragment.mShowAllApps).isEqualTo(!isShowApps);
-    }
-
-    @Test
-    public void testFindBatterySipperByType_findTypeScreen() {
-        BatterySipper sipper =
-            mFragment.findBatterySipperByType(mUsageList, BatterySipper.DrainType.SCREEN);
-
-        assertThat(sipper).isSameAs(mScreenBatterySipper);
-    }
-
-    @Test
-    public void testFindBatterySipperByType_findTypeApp() {
-        BatterySipper sipper =
-            mFragment.findBatterySipperByType(mUsageList, BatterySipper.DrainType.APP);
-
-        assertThat(sipper).isSameAs(mNormalBatterySipper);
-    }
-
-    @Test
-    public void testUpdateScreenPreference_showCorrectSummary() {
-        doReturn(mScreenBatterySipper).when(mFragment).findBatterySipperByType(any(), any());
-        when(mFragment.getContext()).thenReturn(mRealContext);
-        final CharSequence expectedSummary =
-            StringUtil.formatElapsedTime(mRealContext, USAGE_TIME_MS, false);
-
-        mFragment.updateScreenPreference();
-
-        assertThat(mScreenUsagePref.getSubtitle()).isEqualTo(expectedSummary);
-    }
-
-    @Test
-    public void testUpdateLastFullChargePreference_showCorrectSummary() {
-        when(mFragment.getContext()).thenReturn(mRealContext);
-
-        mFragment.updateLastFullChargePreference(TIME_SINCE_LAST_FULL_CHARGE_MS);
-
-        assertThat(mLastFullChargePref.getSubtitle()).isEqualTo("2 hours ago");
-    }
-
-    @Test
-    public void testUpdatePreference_usageListEmpty_shouldNotCrash() {
-        when(mBatteryHelper.getUsageList()).thenReturn(new ArrayList<>());
-        doReturn(STUB_STRING).when(mFragment).getString(anyInt(), any());
-        when(mFragment.getContext()).thenReturn(mRealContext);
-
-        // Should not crash when update
-        mFragment.updateScreenPreference();
-    }
-
-    @Test
-    public void testCalculatePercentage() {
-        final double percent = mFragment.calculatePercentage(POWER_MAH, DISCHARGE_AMOUNT);
-        assertThat(percent).isWithin(PRECISION).of(POWER_USAGE_PERCENTAGE);
-    }
-
-    @Test
-    public void testPreferenceControllers_getPreferenceKeys_existInPreferenceScreen() {
-        final Context context = RuntimeEnvironment.application;
-        final PowerUsageSummary fragment = new PowerUsageSummary();
-        final List<String> preferenceScreenKeys =
-            XmlTestUtils.getKeysFromPreferenceXml(context, fragment.getPreferenceScreenResId());
-        final List<String> preferenceKeys = new ArrayList<>();
-
-        for (AbstractPreferenceController controller : fragment.createPreferenceControllers(context)) {
-            preferenceKeys.add(controller.getPreferenceKey());
-        }
-
-        assertThat(preferenceScreenKeys).containsAllIn(preferenceKeys);
-    }
-
-    @Test
-    public void testUpdateAnomalySparseArray() {
-        mFragment.mAnomalySparseArray = new SparseArray<>();
-        final List<Anomaly> anomalies = new ArrayList<>();
-        final Anomaly anomaly1 = new Anomaly.Builder().setUid(UID).build();
-        final Anomaly anomaly2 = new Anomaly.Builder().setUid(UID).build();
-        final Anomaly anomaly3 = new Anomaly.Builder().setUid(UID_2).build();
-        anomalies.add(anomaly1);
-        anomalies.add(anomaly2);
-        anomalies.add(anomaly3);
-
-        mFragment.updateAnomalySparseArray(anomalies);
-
-        assertThat(mFragment.mAnomalySparseArray.get(UID)).containsExactly(anomaly1, anomaly2);
-        assertThat(mFragment.mAnomalySparseArray.get(UID_2)).containsExactly(anomaly3);
-    }
-
-    @Test
-    public void testInitAnomalyDetectionIfPossible_detectionEnabled_init() {
-        doReturn(mLoaderManager).when(mFragment).getLoaderManager();
-        doReturn(mAnomalyDetectionPolicy).when(mFragment).getAnomalyDetectionPolicy();
-        when(mAnomalyDetectionPolicy.isAnomalyDetectionEnabled()).thenReturn(true);
-
-        mFragment.restartAnomalyDetectionIfPossible();
-
-        verify(mLoaderManager)
-            .restartLoader(eq(PowerUsageSummaryLegacy.ANOMALY_LOADER), eq(Bundle.EMPTY), any());
-    }
-
-    @Test
-    public void testSaveInstanceState_showAllAppsRestored() {
-        Bundle bundle = new Bundle();
-        mFragment.mShowAllApps = true;
-        doReturn(mPreferenceScreen).when(mFragment).getPreferenceScreen();
-
-        mFragment.onSaveInstanceState(bundle);
-        mFragment.restoreSavedInstance(bundle);
-
-        assertThat(mFragment.mShowAllApps).isTrue();
-    }
-
-    @Test
-    public void testRefreshAnomalyIcon_containsAnomaly_showAnomalyIcon() {
-        PowerGaugePreference preference = new PowerGaugePreference(mRealContext);
-        final String key = mFragment.extractKeyFromUid(UID);
-        preference.setKey(key);
-        doReturn(preference).when(mAppListGroup).findPreference(key);
-        mFragment.mAnomalySparseArray = new SparseArray<>();
-        mFragment.mAnomalySparseArray.append(UID, null);
-
-        mFragment.refreshAnomalyIcon();
-
-        assertThat(preference.showAnomalyIcon()).isTrue();
-    }
-
-    @Test
-    public void testShouldHideSipper_typeOvercounted_returnTrue() {
-        mNormalBatterySipper.drainType = BatterySipper.DrainType.OVERCOUNTED;
-
-        assertThat(mFragment.shouldHideSipper(mNormalBatterySipper)).isTrue();
-    }
-
-    @Test
-    public void testShouldHideSipper_typeUnaccounted_returnTrue() {
-        mNormalBatterySipper.drainType = BatterySipper.DrainType.UNACCOUNTED;
-
-        assertThat(mFragment.shouldHideSipper(mNormalBatterySipper)).isTrue();
-    }
-
-    @Test
-    public void testShouldHideSipper_typeNormal_returnFalse() {
-        mNormalBatterySipper.drainType = BatterySipper.DrainType.APP;
-
-        assertThat(mFragment.shouldHideSipper(mNormalBatterySipper)).isFalse();
-    }
-
-    @Test
-    public void testDebugMode() {
-        doReturn(true).when(mFeatureFactory.powerUsageFeatureProvider).isEstimateDebugEnabled();
-        doReturn(new TextView(mRealContext)).when(mBatteryLayoutPref).findViewById(R.id.summary2);
-
-        mFragment.restartBatteryInfoLoader();
-        ArgumentCaptor<View.OnLongClickListener> listener = ArgumentCaptor.forClass(
-                View.OnLongClickListener.class);
-        verify(mSummary1).setOnLongClickListener(listener.capture());
-
-        // Calling the listener should disable it.
-        listener.getValue().onLongClick(mSummary1);
-        verify(mSummary1).setOnLongClickListener(null);
-
-        // Restarting the loader should reset the listener.
-        mFragment.restartBatteryInfoLoader();
-        verify(mSummary1, times(2)).setOnLongClickListener(any(View.OnLongClickListener.class));
-    }
-
-    @Test
-    public void testRestartBatteryStatsLoader_notClearHeader_quickUpdateNotInvoked() {
-        mFragment.mBatteryHeaderPreferenceController = mBatteryHeaderPreferenceController;
-
-        mFragment.restartBatteryStatsLoader(false /* clearHeader */);
-
-        verify(mBatteryHeaderPreferenceController, never()).quickUpdateHeaderPreference();
-    }
-
-    public static class TestFragment extends PowerUsageSummaryLegacy {
-
-        private Context mContext;
-
-        public TestFragment(Context context) {
-            mContext = context;
-        }
-
-        @Override
-        public Context getContext() {
-            return mContext;
-        }
-
-        @Override
-        public void startActivity(Intent intent) {
-        }
-
-        @Override
-        protected void refreshUi() {
-            // Leave it empty for toggle apps menu test
-        }
-
-        @Override
-        void showBothEstimates() {
-            List<BatteryInfo> fakeBatteryInfo = new ArrayList<>(2);
-            BatteryInfo info1 = new BatteryInfo();
-            info1.batteryLevel = 10;
-            info1.remainingTimeUs = 10000;
-            info1.discharging = true;
-
-            BatteryInfo info2 = new BatteryInfo();
-            info2.batteryLevel = 10;
-            info2.remainingTimeUs = 10000;
-            info2.discharging = true;
-
-            fakeBatteryInfo.add(info1);
-            fakeBatteryInfo.add(info2);
-            updateViews(fakeBatteryInfo);
-        }
-    }
-}