diff --git a/res/xml/power_usage_detail.xml b/res/xml/power_usage_detail.xml
index 95c1038c8f1..4746625d692 100644
--- a/res/xml/power_usage_detail.xml
+++ b/res/xml/power_usage_detail.xml
@@ -30,6 +30,30 @@
android:key="action_buttons"
android:order="-9999"/>
+
+
+
+
+
+
+
+
+
+
diff --git a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
index f4bdfb3f899..79b547915b8 100644
--- a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
@@ -48,6 +48,7 @@ import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.utils.StringUtil;
import com.android.settingslib.widget.LayoutPreference;
+import com.android.settingslib.widget.RadioButtonPreference;
import java.util.ArrayList;
import java.util.List;
@@ -60,7 +61,7 @@ import java.util.List;
*/
public class AdvancedPowerUsageDetail extends DashboardFragment implements
ButtonActionDialogFragment.AppButtonsDialogListener,
- BatteryTipPreferenceController.BatteryTipListener {
+ BatteryTipPreferenceController.BatteryTipListener, RadioButtonPreference.OnClickListener {
public static final String TAG = "AdvancedPowerDetail";
public static final String EXTRA_UID = "extra_uid";
@@ -75,6 +76,9 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
private static final String KEY_PREF_FOREGROUND = "app_usage_foreground";
private static final String KEY_PREF_BACKGROUND = "app_usage_background";
private static final String KEY_PREF_HEADER = "header_view";
+ private static final String KEY_PREF_UNRESTRICTED = "unrestricted_pref";
+ private static final String KEY_PREF_OPTIMIZED = "optimized_pref";
+ private static final String KEY_PREF_RESTRICTED = "restricted_pref";
private static final int REQUEST_UNINSTALL = 0;
private static final int REQUEST_REMOVE_DEVICE_ADMIN = 1;
@@ -92,8 +96,17 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
Preference mForegroundPreference;
@VisibleForTesting
Preference mBackgroundPreference;
+ @VisibleForTesting
+ RadioButtonPreference mRestrictedPreference;
+ @VisibleForTesting
+ RadioButtonPreference mOptimizePreference;
+ @VisibleForTesting
+ RadioButtonPreference mUnrestrictedPreference;
private AppButtonsPreferenceController mAppButtonsPreferenceController;
private BackgroundActivityPreferenceController mBackgroundActivityPreferenceController;
+ private UnrestrictedPreferenceController mUnrestrictedPreferenceController;
+ private OptimizedPreferenceController mOptimizedPreferenceController;
+ private RestrictedPreferenceController mRestrictedPreferenceController;
private String mPackageName;
@@ -176,6 +189,13 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
mBackgroundPreference = findPreference(KEY_PREF_BACKGROUND);
mHeaderPreference = (LayoutPreference) findPreference(KEY_PREF_HEADER);
+ mUnrestrictedPreference = findPreference(KEY_PREF_UNRESTRICTED);
+ mOptimizePreference = findPreference(KEY_PREF_OPTIMIZED);
+ mRestrictedPreference = findPreference(KEY_PREF_RESTRICTED);
+ mUnrestrictedPreference.setOnClickListener(this);
+ mOptimizePreference.setOnClickListener(this);
+ mRestrictedPreference.setOnClickListener(this);
+
if (mPackageName != null) {
mAppEntry = mState.getEntry(mPackageName, UserHandle.myUserId());
}
@@ -274,6 +294,15 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
(SettingsActivity) getActivity(), this, getSettingsLifecycle(), packageName, mState,
REQUEST_UNINSTALL, REQUEST_REMOVE_DEVICE_ADMIN);
controllers.add(mAppButtonsPreferenceController);
+ mUnrestrictedPreferenceController =
+ new UnrestrictedPreferenceController(context, uid, packageName);
+ mOptimizedPreferenceController =
+ new OptimizedPreferenceController(context, uid, packageName);
+ mRestrictedPreferenceController =
+ new RestrictedPreferenceController(context, uid, packageName);
+ controllers.add(mUnrestrictedPreferenceController);
+ controllers.add(mOptimizedPreferenceController);
+ controllers.add(mRestrictedPreferenceController);
return controllers;
}
@@ -298,4 +327,15 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
mBackgroundActivityPreferenceController.updateSummary(
findPreference(mBackgroundActivityPreferenceController.getPreferenceKey()));
}
+
+ @Override
+ public void onRadioButtonClicked(RadioButtonPreference selected) {
+ updatePreferenceState(mUnrestrictedPreference, selected.getKey());
+ updatePreferenceState(mOptimizePreference, selected.getKey());
+ updatePreferenceState(mRestrictedPreference, selected.getKey());
+ }
+
+ private void updatePreferenceState(RadioButtonPreference preference, String selectedKey) {
+ preference.setChecked(selectedKey.equals(preference.getKey()));
+ }
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
index 7f76c7040ae..8eb7212e683 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
@@ -58,6 +58,7 @@ import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.applications.instantapps.InstantAppDataProvider;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.LayoutPreference;
+import com.android.settingslib.widget.RadioButtonPreference;
import org.junit.After;
import org.junit.Before;
@@ -96,6 +97,9 @@ public class AdvancedPowerUsageDetailTest {
private static final long PROCSTATE_TOP_TIME_US = PROCSTATE_TOP_TIME_MS * 1000;
private static final long PHONE_FOREGROUND_TIME_MS = 250 * 1000;
private static final long PHONE_BACKGROUND_TIME_MS = 0;
+ private static final String KEY_PREF_UNRESTRICTED = "unrestricted_pref";
+ private static final String KEY_PREF_OPTIMIZED = "optimized_pref";
+ private static final String KEY_PREF_RESTRICTED = "restricted_pref";
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private FragmentActivity mActivity;
@@ -124,6 +128,9 @@ public class AdvancedPowerUsageDetailTest {
private Context mContext;
private Preference mForegroundPreference;
private Preference mBackgroundPreference;
+ private RadioButtonPreference mRestrictedPreference;
+ private RadioButtonPreference mOptimizePreference;
+ private RadioButtonPreference mUnrestrictedPreference;
private AdvancedPowerUsageDetail mFragment;
private SettingsActivity mTestActivity;
@@ -194,8 +201,14 @@ public class AdvancedPowerUsageDetailTest {
mForegroundPreference = new Preference(mContext);
mBackgroundPreference = new Preference(mContext);
+ mRestrictedPreference = new RadioButtonPreference(mContext);
+ mOptimizePreference = new RadioButtonPreference(mContext);
+ mUnrestrictedPreference = new RadioButtonPreference(mContext);
mFragment.mForegroundPreference = mForegroundPreference;
mFragment.mBackgroundPreference = mBackgroundPreference;
+ mFragment.mRestrictedPreference = mRestrictedPreference;
+ mFragment.mOptimizePreference = mOptimizePreference;
+ mFragment.mUnrestrictedPreference = mUnrestrictedPreference;
}
@After
@@ -352,4 +365,16 @@ public class AdvancedPowerUsageDetailTest {
assertThat(mForegroundPreference.getSummary().toString()).isEqualTo("Used for 0 min");
assertThat(mBackgroundPreference.getSummary().toString()).isEqualTo("Active for 0 min");
}
+
+ @Test
+ public void testOnRadioButtonClicked_clickOptimizePref_optimizePreferenceChecked() {
+ mOptimizePreference.setKey(KEY_PREF_OPTIMIZED);
+ mRestrictedPreference.setKey(KEY_PREF_RESTRICTED);
+ mUnrestrictedPreference.setKey(KEY_PREF_UNRESTRICTED);
+ mFragment.onRadioButtonClicked(mOptimizePreference);
+
+ assertThat(mOptimizePreference.isChecked()).isTrue();
+ assertThat(mRestrictedPreference.isChecked()).isFalse();
+ assertThat(mUnrestrictedPreference.isChecked()).isFalse();
+ }
}