Add feature flag to control battery app list.

If feature flag is on, then display the app list. Otherwise disable
it.

Bug: 70234293
Test: RunSettingsRoboTests
Change-Id: I1663f925abf95e0e4c1a46d98ca165303a76e979
This commit is contained in:
jackqdyulei
2017-12-07 15:41:48 -08:00
parent 1240549591
commit 8f73968308
4 changed files with 25 additions and 3 deletions

View File

@@ -26,4 +26,5 @@ public class FeatureFlags {
public static final String APP_INFO_V2 = "settings_app_info_v2"; public static final String APP_INFO_V2 = "settings_app_info_v2";
public static final String CONNECTED_DEVICE_V2 = "settings_connected_device_v2"; public static final String CONNECTED_DEVICE_V2 = "settings_connected_device_v2";
public static final String BATTERY_SETTINGS_V2 = "settings_battery_v2"; public static final String BATTERY_SETTINGS_V2 = "settings_battery_v2";
public static final String BATTERY_DISPLAY_APP_LIST = "settings_battery_display_app_list";
} }

View File

@@ -36,6 +36,7 @@ import android.support.v7.preference.PreferenceScreen;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.format.DateUtils; import android.text.format.DateUtils;
import android.util.ArrayMap; import android.util.ArrayMap;
import android.util.FeatureFlagUtils;
import android.util.Log; import android.util.Log;
import android.util.SparseArray; import android.util.SparseArray;
@@ -45,6 +46,7 @@ import com.android.internal.os.BatteryStatsHelper;
import com.android.internal.os.PowerProfile; import com.android.internal.os.PowerProfile;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.core.FeatureFlags;
import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.core.instrumentation.MetricsFeatureProvider; import com.android.settings.core.instrumentation.MetricsFeatureProvider;
@@ -149,7 +151,7 @@ public class BatteryAppListPreferenceController extends AbstractPreferenceContro
@Override @Override
public boolean isAvailable() { public boolean isAvailable() {
return false; return FeatureFlagUtils.isEnabled(mContext, FeatureFlags.BATTERY_DISPLAY_APP_LIST);
} }
@Override @Override

View File

@@ -27,6 +27,7 @@ import android.support.v14.preference.PreferenceFragment;
import android.support.v7.preference.PreferenceGroup; import android.support.v7.preference.PreferenceGroup;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.format.DateUtils; import android.text.format.DateUtils;
import android.util.FeatureFlagUtils;
import android.util.SparseArray; import android.util.SparseArray;
import com.android.internal.os.BatterySipper; import com.android.internal.os.BatterySipper;
@@ -34,8 +35,10 @@ import com.android.internal.os.BatteryStatsImpl;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.core.FeatureFlags;
import com.android.settings.fuelgauge.anomaly.Anomaly; import com.android.settings.fuelgauge.anomaly.Anomaly;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.SettingsShadowSystemProperties;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -49,7 +52,8 @@ import org.robolectric.annotation.Config;
import java.util.List; import java.util.List;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION, shadows =
SettingsShadowSystemProperties.class)
public class BatteryAppListPreferenceControllerTest { public class BatteryAppListPreferenceControllerTest {
private static final String[] PACKAGE_NAMES = {"com.app1", "com.app2"}; private static final String[] PACKAGE_NAMES = {"com.app1", "com.app2"};
private static final String KEY_APP_LIST = "app_list"; private static final String KEY_APP_LIST = "app_list";
@@ -169,6 +173,7 @@ public class BatteryAppListPreferenceControllerTest {
@Test @Test
public void testRefreshAnomalyIcon_containsAnomaly_showAnomalyIcon() { public void testRefreshAnomalyIcon_containsAnomaly_showAnomalyIcon() {
FeatureFlagUtils.setEnabled(mContext, FeatureFlags.BATTERY_DISPLAY_APP_LIST, true);
PowerGaugePreference preference = new PowerGaugePreference(mContext); PowerGaugePreference preference = new PowerGaugePreference(mContext);
final String key = mPreferenceController.extractKeyFromUid(UID); final String key = mPreferenceController.extractKeyFromUid(UID);
final SparseArray<List<Anomaly>> anomalySparseArray = new SparseArray<>(); final SparseArray<List<Anomaly>> anomalySparseArray = new SparseArray<>();
@@ -201,4 +206,18 @@ public class BatteryAppListPreferenceControllerTest {
assertThat(mPreferenceController.shouldHideSipper(mNormalBatterySipper)).isFalse(); assertThat(mPreferenceController.shouldHideSipper(mNormalBatterySipper)).isFalse();
} }
@Test
public void testIsAvailable_featureOn_returnTrue() {
FeatureFlagUtils.setEnabled(mContext, FeatureFlags.BATTERY_DISPLAY_APP_LIST, true);
assertThat(mPreferenceController.isAvailable()).isTrue();
}
@Test
public void testIsAvailable_featureOff_returnFalse() {
FeatureFlagUtils.setEnabled(mContext, FeatureFlags.BATTERY_DISPLAY_APP_LIST, false);
assertThat(mPreferenceController.isAvailable()).isFalse();
}
} }

View File

@@ -83,7 +83,7 @@ import java.util.List;
// TODO: Improve this test class so that it starts up the real activity and fragment. // TODO: Improve this test class so that it starts up the real activity and fragment.
@RunWith(SettingsRobolectricTestRunner.class) @RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, @Config(manifest = TestConfig.MANIFEST_PATH,
sdk = TestConfig.SDK_VERSION_O, sdk = TestConfig.SDK_VERSION,
shadows = { shadows = {
SettingsShadowResources.class, SettingsShadowResources.class,
SettingsShadowResources.SettingsShadowTheme.class, SettingsShadowResources.SettingsShadowTheme.class,