Hook up the new page to PowerUsageSummary
Add a menu to point to the new page Bug: 73300636 Test: RunSettingsRoboTests Change-Id: I9956e349cdbbe2cd752bdf65020a540a329bdee3 Merged-In: I9956e349cdbbe2cd752bdf65020a540a329bdee3
This commit is contained in:
@@ -22,6 +22,7 @@ import android.content.Context;
|
|||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.BatteryStats;
|
import android.os.BatteryStats;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
import android.os.Process;
|
import android.os.Process;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
@@ -81,7 +82,7 @@ public class BatteryAppListPreferenceController extends AbstractPreferenceContro
|
|||||||
private Context mPrefContext;
|
private Context mPrefContext;
|
||||||
SparseArray<List<Anomaly>> mAnomalySparseArray;
|
SparseArray<List<Anomaly>> mAnomalySparseArray;
|
||||||
|
|
||||||
private Handler mHandler = new Handler() {
|
private Handler mHandler = new Handler(Looper.getMainLooper()) {
|
||||||
@Override
|
@Override
|
||||||
public void handleMessage(Message msg) {
|
public void handleMessage(Message msg) {
|
||||||
switch (msg.what) {
|
switch (msg.what) {
|
||||||
|
@@ -171,6 +171,16 @@ public class PowerUsageAdvanced extends PowerUsageBase {
|
|||||||
sir.xmlResId = R.xml.power_usage_advanced;
|
sir.xmlResId = R.xml.power_usage_advanced;
|
||||||
return Arrays.asList(sir);
|
return Arrays.asList(sir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<AbstractPreferenceController> createPreferenceControllers(
|
||||||
|
Context context) {
|
||||||
|
final List<AbstractPreferenceController> controllers = new ArrayList<>();
|
||||||
|
controllers.add(new BatteryAppListPreferenceController(context,
|
||||||
|
KEY_APP_LIST, null /* lifecycle */, null /* activity */,
|
||||||
|
null /* fragment */));
|
||||||
|
return controllers;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -39,6 +39,7 @@ import com.android.settings.R;
|
|||||||
import com.android.settings.SettingsActivity;
|
import com.android.settings.SettingsActivity;
|
||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.applications.LayoutPreference;
|
import com.android.settings.applications.LayoutPreference;
|
||||||
|
import com.android.settings.core.SubSettingLauncher;
|
||||||
import com.android.settings.dashboard.SummaryLoader;
|
import com.android.settings.dashboard.SummaryLoader;
|
||||||
import com.android.settings.display.BatteryPercentagePreferenceController;
|
import com.android.settings.display.BatteryPercentagePreferenceController;
|
||||||
import com.android.settings.fuelgauge.anomaly.Anomaly;
|
import com.android.settings.fuelgauge.anomaly.Anomaly;
|
||||||
@@ -49,7 +50,6 @@ import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
|
|||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.search.BaseSearchIndexProvider;
|
import com.android.settings.search.BaseSearchIndexProvider;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
import com.android.settingslib.utils.PowerUtil;
|
import com.android.settingslib.utils.PowerUtil;
|
||||||
import com.android.settingslib.utils.StringUtil;
|
import com.android.settingslib.utils.StringUtil;
|
||||||
@@ -68,7 +68,6 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
|
|||||||
static final String TAG = "PowerUsageSummary";
|
static final String TAG = "PowerUsageSummary";
|
||||||
|
|
||||||
private static final boolean DEBUG = false;
|
private static final boolean DEBUG = false;
|
||||||
private static final String KEY_APP_LIST = "app_list";
|
|
||||||
private static final String KEY_BATTERY_HEADER = "battery_header";
|
private static final String KEY_BATTERY_HEADER = "battery_header";
|
||||||
private static final String KEY_BATTERY_TIP = "battery_tip";
|
private static final String KEY_BATTERY_TIP = "battery_tip";
|
||||||
|
|
||||||
@@ -80,7 +79,10 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
|
|||||||
static final int BATTERY_INFO_LOADER = 1;
|
static final int BATTERY_INFO_LOADER = 1;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
static final int BATTERY_TIP_LOADER = 2;
|
static final int BATTERY_TIP_LOADER = 2;
|
||||||
private static final int MENU_STATS_TYPE = Menu.FIRST;
|
@VisibleForTesting
|
||||||
|
static final int MENU_STATS_TYPE = Menu.FIRST;
|
||||||
|
@VisibleForTesting
|
||||||
|
static final int MENU_ADVANCED_BATTERY = Menu.FIRST + 1;
|
||||||
public static final int DEBUG_INFO_LOADER = 3;
|
public static final int DEBUG_INFO_LOADER = 3;
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@@ -246,6 +248,8 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
|
|||||||
.setAlphabeticShortcut('t');
|
.setAlphabeticShortcut('t');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
menu.add(Menu.NONE, MENU_ADVANCED_BATTERY, Menu.NONE, R.string.advanced_battery_title);
|
||||||
|
|
||||||
super.onCreateOptionsMenu(menu, inflater);
|
super.onCreateOptionsMenu(menu, inflater);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -256,11 +260,6 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(MenuItem item) {
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
final SettingsActivity sa = (SettingsActivity) getActivity();
|
|
||||||
final Context context = getContext();
|
|
||||||
final MetricsFeatureProvider metricsFeatureProvider =
|
|
||||||
FeatureFactory.getFactory(context).getMetricsFeatureProvider();
|
|
||||||
|
|
||||||
switch (item.getItemId()) {
|
switch (item.getItemId()) {
|
||||||
case MENU_STATS_TYPE:
|
case MENU_STATS_TYPE:
|
||||||
if (mStatsType == BatteryStats.STATS_SINCE_CHARGED) {
|
if (mStatsType == BatteryStats.STATS_SINCE_CHARGED) {
|
||||||
@@ -270,6 +269,13 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
|
|||||||
}
|
}
|
||||||
refreshUi();
|
refreshUi();
|
||||||
return true;
|
return true;
|
||||||
|
case MENU_ADVANCED_BATTERY:
|
||||||
|
new SubSettingLauncher(getContext())
|
||||||
|
.setDestination(PowerUsageAdvanced.class.getName())
|
||||||
|
.setSourceMetricsCategory(getMetricsCategory())
|
||||||
|
.setTitle(R.string.advanced_battery_title)
|
||||||
|
.launch();
|
||||||
|
return true;
|
||||||
default:
|
default:
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
@@ -49,6 +49,7 @@ import com.android.settings.display.NightDisplaySettings;
|
|||||||
import com.android.settings.display.ScreenZoomSettings;
|
import com.android.settings.display.ScreenZoomSettings;
|
||||||
import com.android.settings.dream.DreamSettings;
|
import com.android.settings.dream.DreamSettings;
|
||||||
import com.android.settings.enterprise.EnterprisePrivacySettings;
|
import com.android.settings.enterprise.EnterprisePrivacySettings;
|
||||||
|
import com.android.settings.fuelgauge.PowerUsageAdvanced;
|
||||||
import com.android.settings.fuelgauge.PowerUsageAdvancedLegacy;
|
import com.android.settings.fuelgauge.PowerUsageAdvancedLegacy;
|
||||||
import com.android.settings.fuelgauge.batterysaver.BatterySaverSettings;
|
import com.android.settings.fuelgauge.batterysaver.BatterySaverSettings;
|
||||||
import com.android.settings.fuelgauge.PowerUsageSummary;
|
import com.android.settings.fuelgauge.PowerUsageSummary;
|
||||||
@@ -121,6 +122,7 @@ public class SearchIndexableResourcesImpl implements SearchIndexableResources {
|
|||||||
addIndex(SoundSettings.class);
|
addIndex(SoundSettings.class);
|
||||||
addIndex(ZenModeSettings.class);
|
addIndex(ZenModeSettings.class);
|
||||||
addIndex(StorageSettings.class);
|
addIndex(StorageSettings.class);
|
||||||
|
addIndex(PowerUsageAdvanced.class);
|
||||||
addIndex(PowerUsageAdvancedLegacy.class);
|
addIndex(PowerUsageAdvancedLegacy.class);
|
||||||
addIndex(DefaultAppSettings.class);
|
addIndex(DefaultAppSettings.class);
|
||||||
addIndex(ManageAssist.class);
|
addIndex(ManageAssist.class);
|
||||||
|
@@ -34,7 +34,6 @@ import android.view.MenuItem;
|
|||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.TestConfig;
|
|
||||||
import com.android.settings.testutils.FakeFeatureFactory;
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
|
|
||||||
@@ -45,10 +44,8 @@ import org.mockito.Answers;
|
|||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.annotation.Config;
|
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
|
||||||
public class PowerUsageAdvancedTest {
|
public class PowerUsageAdvancedTest {
|
||||||
@Mock
|
@Mock
|
||||||
private PreferenceScreen mPreferenceScreen;
|
private PreferenceScreen mPreferenceScreen;
|
||||||
|
@@ -15,6 +15,8 @@
|
|||||||
*/
|
*/
|
||||||
package com.android.settings.fuelgauge;
|
package com.android.settings.fuelgauge;
|
||||||
|
|
||||||
|
import static com.android.settings.fuelgauge.PowerUsageSummary.MENU_ADVANCED_BATTERY;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static org.mockito.Matchers.any;
|
import static org.mockito.Matchers.any;
|
||||||
import static org.mockito.Matchers.anyInt;
|
import static org.mockito.Matchers.anyInt;
|
||||||
@@ -35,6 +37,8 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.SparseArray;
|
import android.util.SparseArray;
|
||||||
|
import android.view.Menu;
|
||||||
|
import android.view.MenuInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
@@ -53,7 +57,6 @@ import com.android.settingslib.core.AbstractPreferenceController;
|
|||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Ignore;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.Answers;
|
import org.mockito.Answers;
|
||||||
@@ -114,6 +117,12 @@ public class PowerUsageSummaryTest {
|
|||||||
private LoaderManager mLoaderManager;
|
private LoaderManager mLoaderManager;
|
||||||
@Mock
|
@Mock
|
||||||
private BatteryHeaderPreferenceController mBatteryHeaderPreferenceController;
|
private BatteryHeaderPreferenceController mBatteryHeaderPreferenceController;
|
||||||
|
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
||||||
|
private Menu mMenu;
|
||||||
|
@Mock
|
||||||
|
private MenuInflater mMenuInflater;
|
||||||
|
@Mock
|
||||||
|
private MenuItem mAdvancedPageMenu;
|
||||||
|
|
||||||
private List<BatterySipper> mUsageList;
|
private List<BatterySipper> mUsageList;
|
||||||
private Context mRealContext;
|
private Context mRealContext;
|
||||||
@@ -122,12 +131,13 @@ public class PowerUsageSummaryTest {
|
|||||||
private BatteryMeterView mBatteryMeterView;
|
private BatteryMeterView mBatteryMeterView;
|
||||||
private PowerGaugePreference mScreenUsagePref;
|
private PowerGaugePreference mScreenUsagePref;
|
||||||
private PowerGaugePreference mLastFullChargePref;
|
private PowerGaugePreference mLastFullChargePref;
|
||||||
|
private Intent mIntent;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
|
|
||||||
mRealContext = RuntimeEnvironment.application;
|
mRealContext = spy(RuntimeEnvironment.application);
|
||||||
mFeatureFactory = FakeFeatureFactory.setupForTest();
|
mFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||||
mScreenUsagePref = new PowerGaugePreference(mRealContext);
|
mScreenUsagePref = new PowerGaugePreference(mRealContext);
|
||||||
mLastFullChargePref = new PowerGaugePreference(mRealContext);
|
mLastFullChargePref = new PowerGaugePreference(mRealContext);
|
||||||
@@ -137,6 +147,7 @@ public class PowerUsageSummaryTest {
|
|||||||
mBatteryMeterView.mDrawable = new BatteryMeterView.BatteryMeterDrawable(mRealContext, 0);
|
mBatteryMeterView.mDrawable = new BatteryMeterView.BatteryMeterDrawable(mRealContext, 0);
|
||||||
doNothing().when(mFragment).restartBatteryStatsLoader();
|
doNothing().when(mFragment).restartBatteryStatsLoader();
|
||||||
doReturn(mock(LoaderManager.class)).when(mFragment).getLoaderManager();
|
doReturn(mock(LoaderManager.class)).when(mFragment).getLoaderManager();
|
||||||
|
doReturn(MENU_ADVANCED_BATTERY).when(mAdvancedPageMenu).getItemId();
|
||||||
|
|
||||||
when(mFragment.getActivity()).thenReturn(mSettingsActivity);
|
when(mFragment.getActivity()).thenReturn(mSettingsActivity);
|
||||||
when(mFeatureFactory.powerUsageFeatureProvider.getAdditionalBatteryInfoIntent())
|
when(mFeatureFactory.powerUsageFeatureProvider.getAdditionalBatteryInfoIntent())
|
||||||
@@ -294,6 +305,35 @@ public class PowerUsageSummaryTest {
|
|||||||
verify(mBatteryHeaderPreferenceController, never()).quickUpdateHeaderPreference();
|
verify(mBatteryHeaderPreferenceController, never()).quickUpdateHeaderPreference();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testOptionsMenu_advancedPageEnabled() {
|
||||||
|
when(mFeatureFactory.powerUsageFeatureProvider.isPowerAccountingToggleEnabled())
|
||||||
|
.thenReturn(true);
|
||||||
|
|
||||||
|
mFragment.onCreateOptionsMenu(mMenu, mMenuInflater);
|
||||||
|
|
||||||
|
verify(mMenu).add(Menu.NONE, MENU_ADVANCED_BATTERY, Menu.NONE,
|
||||||
|
R.string.advanced_battery_title);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testOptionsMenu_clickAdvancedPage_fireIntent() {
|
||||||
|
final ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
|
||||||
|
doAnswer(invocation -> {
|
||||||
|
// Get the intent in which it has the app info bundle
|
||||||
|
mIntent = captor.getValue();
|
||||||
|
return true;
|
||||||
|
}).when(mRealContext).startActivity(captor.capture());
|
||||||
|
|
||||||
|
mFragment.onOptionsItemSelected(mAdvancedPageMenu);
|
||||||
|
|
||||||
|
assertThat(mIntent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT)).isEqualTo(
|
||||||
|
PowerUsageAdvanced.class.getName());
|
||||||
|
assertThat(
|
||||||
|
mIntent.getIntExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, 0)).isEqualTo(
|
||||||
|
R.string.advanced_battery_title);
|
||||||
|
}
|
||||||
|
|
||||||
public static class TestFragment extends PowerUsageSummary {
|
public static class TestFragment extends PowerUsageSummary {
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user