Make app predicates singleton

1. AppLabelPredicate
2. AppRestrictionPredicate

Change-Id: I1fd8611c5dd7ffa6318bcb23de7a973c111910b6
Fixes: 111323520
Test: RunSettingsRoboTests
This commit is contained in:
jackqdyulei
2018-07-18 13:06:11 -07:00
parent d3e18dcf0a
commit 341ad63da7
10 changed files with 70 additions and 11 deletions

View File

@@ -28,9 +28,13 @@ import android.os.PowerManager;
import com.android.internal.os.BatteryStatsHelper;
import com.android.settings.fuelgauge.BatteryInfo;
import com.android.settings.fuelgauge.BatteryUtils;
import com.android.settings.fuelgauge.batterytip.tips.AppLabelPredicate;
import com.android.settings.fuelgauge.batterytip.tips.AppRestrictionPredicate;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.testutils.BatteryTestUtils;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -77,6 +81,12 @@ public class BatteryTipLoaderTest {
mBatteryTipLoader.mBatteryUtils = mBatteryUtils;
}
@After
public void tearDown() {
BatteryTestUtils.clearStaticInstance(AppLabelPredicate.class, "sInstance");
BatteryTestUtils.clearStaticInstance(AppRestrictionPredicate.class, "sInstance");
}
@Test
public void testLoadBackground_containsAllTipsWithOrder() {
final List<BatteryTip> batteryTips = mBatteryTipLoader.loadInBackground();

View File

@@ -17,6 +17,7 @@
package com.android.settings.fuelgauge.batterytip;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;

View File

@@ -34,8 +34,11 @@ import com.android.settings.fuelgauge.batterytip.AnomalyDatabaseHelper;
import com.android.settings.fuelgauge.batterytip.AppInfo;
import com.android.settings.fuelgauge.batterytip.BatteryDatabaseManager;
import com.android.settings.fuelgauge.batterytip.BatteryTipPolicy;
import com.android.settings.fuelgauge.batterytip.tips.AppLabelPredicate;
import com.android.settings.fuelgauge.batterytip.tips.AppRestrictionPredicate;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.fuelgauge.batterytip.tips.RestrictAppTip;
import com.android.settings.testutils.BatteryTestUtils;
import com.android.settings.testutils.DatabaseTestUtils;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
@@ -86,6 +89,7 @@ public class RestrictAppDetectorTest {
mContext = spy(RuntimeEnvironment.application);
mPolicy = spy(new BatteryTipPolicy(mContext));
doReturn(mContext).when(mContext).getApplicationContext();
doReturn(mAppOpsManager).when(mContext).getSystemService(AppOpsManager.class);
doReturn(AppOpsManager.MODE_IGNORED).when(mAppOpsManager).checkOpNoThrow(
AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, RESTRICTED_UID, RESTRICTED_PACKAGE_NAME);
@@ -103,7 +107,12 @@ public class RestrictAppDetectorTest {
mRestrictAppDetector = new RestrictAppDetector(mContext, mPolicy);
mRestrictAppDetector.mBatteryDatabaseManager = mBatteryDatabaseManager;
}
@After
public void tearDown() {
BatteryTestUtils.clearStaticInstance(AppLabelPredicate.class, "sInstance");
BatteryTestUtils.clearStaticInstance(AppRestrictionPredicate.class, "sInstance");
}
@After

View File

@@ -34,9 +34,11 @@ import android.util.Pair;
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
import com.android.settings.fuelgauge.batterytip.AppInfo;
import com.android.settings.testutils.BatteryTestUtils;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -74,6 +76,7 @@ public class RestrictAppTipTest {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
doReturn(mContext).when(mContext).getApplicationContext();
doReturn(mPackageManager).when(mContext).getPackageManager();
doReturn(mApplicationInfo).when(mPackageManager).getApplicationInfo(PACKAGE_NAME,
PackageManager.MATCH_DISABLED_COMPONENTS | PackageManager.MATCH_ANY_USER);
@@ -98,6 +101,12 @@ public class RestrictAppTipTest {
mInvisibleBatteryTip = new RestrictAppTip(BatteryTip.StateType.INVISIBLE, new ArrayList<>());
}
@After
public void tearDown() {
BatteryTestUtils.clearStaticInstance(AppLabelPredicate.class, "sInstance");
BatteryTestUtils.clearStaticInstance(AppRestrictionPredicate.class, "sInstance");
}
@Test
public void parcelable() {
Parcel parcel = Parcel.obtain();

View File

@@ -19,6 +19,8 @@ package com.android.settings.testutils;
import android.content.Intent;
import android.os.BatteryManager;
import java.lang.reflect.Field;
public class BatteryTestUtils {
public static Intent getChargingIntent() {
@@ -47,4 +49,15 @@ public class BatteryTestUtils {
return intent;
}
public static void clearStaticInstance(Class clazz, String fieldName) {
Field instance;
try {
instance = clazz.getDeclaredField(fieldName);
instance.setAccessible(true);
instance.set(null, null);
} catch (Exception e) {
throw new RuntimeException();
}
}
}