Give the wellbeing package a higher min balance.
The wellbeing app is pre-set on the device, not expected to be interacted with much by the user, but can be expected to do work in the background on behalf of the user. As such, it's a pseudo-headless system app, so treat it as a headless system app and give it a higher minimum satiated balance. Bug: 267655220 Test: atest FrameworksMockingServicesTests:AlarmManagerEconomicPolicyTest Test: atest FrameworksMockingServicesTests:CompleteEconomicPolicyTest Test: atest FrameworksMockingServicesTests:JobSchedulerEconomicPolicyTest Change-Id: I0c26a31e52c8b28b396781957b0fcecaef13020c
This commit is contained in:
@@ -38,6 +38,7 @@ import static android.app.tare.EconomyManager.DEFAULT_AM_MAX_CONSUMPTION_LIMIT_C
|
||||
import static android.app.tare.EconomyManager.DEFAULT_AM_MAX_SATIATED_BALANCE_CAKES;
|
||||
import static android.app.tare.EconomyManager.DEFAULT_AM_MIN_CONSUMPTION_LIMIT_CAKES;
|
||||
import static android.app.tare.EconomyManager.DEFAULT_AM_MIN_SATIATED_BALANCE_EXEMPTED_CAKES;
|
||||
import static android.app.tare.EconomyManager.DEFAULT_AM_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP_CAKES;
|
||||
import static android.app.tare.EconomyManager.DEFAULT_AM_MIN_SATIATED_BALANCE_OTHER_APP_CAKES;
|
||||
import static android.app.tare.EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_INTERACTION_INSTANT_CAKES;
|
||||
import static android.app.tare.EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_INTERACTION_MAX_CAKES;
|
||||
@@ -77,6 +78,7 @@ import static android.app.tare.EconomyManager.KEY_AM_MAX_CONSUMPTION_LIMIT;
|
||||
import static android.app.tare.EconomyManager.KEY_AM_MAX_SATIATED_BALANCE;
|
||||
import static android.app.tare.EconomyManager.KEY_AM_MIN_CONSUMPTION_LIMIT;
|
||||
import static android.app.tare.EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED;
|
||||
import static android.app.tare.EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP;
|
||||
import static android.app.tare.EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP;
|
||||
import static android.app.tare.EconomyManager.KEY_AM_REWARD_NOTIFICATION_INTERACTION_INSTANT;
|
||||
import static android.app.tare.EconomyManager.KEY_AM_REWARD_NOTIFICATION_INTERACTION_MAX;
|
||||
@@ -145,6 +147,7 @@ public class AlarmManagerEconomicPolicy extends EconomicPolicy {
|
||||
};
|
||||
|
||||
private long mMinSatiatedBalanceExempted;
|
||||
private long mMinSatiatedBalanceHeadlessSystemApp;
|
||||
private long mMinSatiatedBalanceOther;
|
||||
private long mMaxSatiatedBalance;
|
||||
private long mInitialSatiatedConsumptionLimit;
|
||||
@@ -179,6 +182,9 @@ public class AlarmManagerEconomicPolicy extends EconomicPolicy {
|
||||
if (mIrs.isPackageExempted(userId, pkgName)) {
|
||||
return mMinSatiatedBalanceExempted;
|
||||
}
|
||||
if (mIrs.isHeadlessSystemApp(pkgName)) {
|
||||
return mMinSatiatedBalanceHeadlessSystemApp;
|
||||
}
|
||||
// TODO: take other exemptions into account
|
||||
return mMinSatiatedBalanceOther;
|
||||
}
|
||||
@@ -242,9 +248,14 @@ public class AlarmManagerEconomicPolicy extends EconomicPolicy {
|
||||
|
||||
mMinSatiatedBalanceOther = getConstantAsCake(mParser, properties,
|
||||
KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP, DEFAULT_AM_MIN_SATIATED_BALANCE_OTHER_APP_CAKES);
|
||||
mMinSatiatedBalanceHeadlessSystemApp = getConstantAsCake(mParser, properties,
|
||||
KEY_AM_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
|
||||
DEFAULT_AM_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP_CAKES,
|
||||
mMinSatiatedBalanceOther);
|
||||
mMinSatiatedBalanceExempted = getConstantAsCake(mParser, properties,
|
||||
KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED, DEFAULT_AM_MIN_SATIATED_BALANCE_EXEMPTED_CAKES,
|
||||
mMinSatiatedBalanceOther);
|
||||
KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED,
|
||||
DEFAULT_AM_MIN_SATIATED_BALANCE_EXEMPTED_CAKES,
|
||||
mMinSatiatedBalanceHeadlessSystemApp);
|
||||
mMaxSatiatedBalance = getConstantAsCake(mParser, properties,
|
||||
KEY_AM_MAX_SATIATED_BALANCE, DEFAULT_AM_MAX_SATIATED_BALANCE_CAKES,
|
||||
Math.max(arcToCake(1), mMinSatiatedBalanceExempted));
|
||||
|
||||
@@ -205,6 +205,11 @@ public class InternalResourceService extends SystemService {
|
||||
@GuardedBy("mLock")
|
||||
private final SparseArrayMap<String, ArraySet<String>> mInstallers = new SparseArrayMap<>();
|
||||
|
||||
/** The package name of the wellbeing app. */
|
||||
@GuardedBy("mLock")
|
||||
@Nullable
|
||||
private String mWellbeingPackage;
|
||||
|
||||
private volatile boolean mHasBattery = true;
|
||||
@EconomyManager.EnabledMode
|
||||
private volatile int mEnabledMode;
|
||||
@@ -496,6 +501,20 @@ public class InternalResourceService extends SystemService {
|
||||
}
|
||||
}
|
||||
|
||||
boolean isHeadlessSystemApp(@NonNull String pkgName) {
|
||||
if (pkgName == null) {
|
||||
Slog.wtfStack(TAG, "isHeadlessSystemApp called with null package");
|
||||
return false;
|
||||
}
|
||||
synchronized (mLock) {
|
||||
// The wellbeing app is pre-set on the device, not expected to be interacted with
|
||||
// much by the user, but can be expected to do work in the background on behalf of
|
||||
// the user. As such, it's a pseudo-headless system app, so treat it as a headless
|
||||
// system app.
|
||||
return pkgName.equals(mWellbeingPackage);
|
||||
}
|
||||
}
|
||||
|
||||
boolean isPackageExempted(final int userId, @NonNull String pkgName) {
|
||||
synchronized (mLock) {
|
||||
return mExemptedApps.contains(pkgName);
|
||||
@@ -1097,6 +1116,9 @@ public class InternalResourceService extends SystemService {
|
||||
}
|
||||
synchronized (mLock) {
|
||||
registerListeners();
|
||||
// As of Android UDC, users can't change the wellbeing package, so load it once
|
||||
// as soon as possible and don't bother trying to update it afterwards.
|
||||
mWellbeingPackage = mPackageManager.getWellbeingPackageName();
|
||||
mCurrentBatteryLevel = getCurrentBatteryLevel();
|
||||
// Get the current battery presence, if available. This would succeed if TARE is
|
||||
// toggled long after boot.
|
||||
|
||||
@@ -43,6 +43,7 @@ import static android.app.tare.EconomyManager.DEFAULT_JS_MAX_CONSUMPTION_LIMIT_C
|
||||
import static android.app.tare.EconomyManager.DEFAULT_JS_MAX_SATIATED_BALANCE_CAKES;
|
||||
import static android.app.tare.EconomyManager.DEFAULT_JS_MIN_CONSUMPTION_LIMIT_CAKES;
|
||||
import static android.app.tare.EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_EXEMPTED_CAKES;
|
||||
import static android.app.tare.EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP_CAKES;
|
||||
import static android.app.tare.EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_INCREMENT_APP_UPDATER_CAKES;
|
||||
import static android.app.tare.EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_OTHER_APP_CAKES;
|
||||
import static android.app.tare.EconomyManager.DEFAULT_JS_REWARD_APP_INSTALL_INSTANT_CAKES;
|
||||
@@ -90,6 +91,7 @@ import static android.app.tare.EconomyManager.KEY_JS_MAX_CONSUMPTION_LIMIT;
|
||||
import static android.app.tare.EconomyManager.KEY_JS_MAX_SATIATED_BALANCE;
|
||||
import static android.app.tare.EconomyManager.KEY_JS_MIN_CONSUMPTION_LIMIT;
|
||||
import static android.app.tare.EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED;
|
||||
import static android.app.tare.EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP;
|
||||
import static android.app.tare.EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_INCREMENT_APP_UPDATER;
|
||||
import static android.app.tare.EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP;
|
||||
import static android.app.tare.EconomyManager.KEY_JS_REWARD_APP_INSTALL_INSTANT;
|
||||
@@ -158,6 +160,7 @@ public class JobSchedulerEconomicPolicy extends EconomicPolicy {
|
||||
};
|
||||
|
||||
private long mMinSatiatedBalanceExempted;
|
||||
private long mMinSatiatedBalanceHeadlessSystemApp;
|
||||
private long mMinSatiatedBalanceOther;
|
||||
private long mMinSatiatedBalanceIncrementalAppUpdater;
|
||||
private long mMaxSatiatedBalance;
|
||||
@@ -194,6 +197,8 @@ public class JobSchedulerEconomicPolicy extends EconomicPolicy {
|
||||
final long baseBalance;
|
||||
if (mIrs.isPackageExempted(userId, pkgName)) {
|
||||
baseBalance = mMinSatiatedBalanceExempted;
|
||||
} else if (mIrs.isHeadlessSystemApp(pkgName)) {
|
||||
baseBalance = mMinSatiatedBalanceHeadlessSystemApp;
|
||||
} else {
|
||||
baseBalance = mMinSatiatedBalanceOther;
|
||||
}
|
||||
@@ -276,9 +281,14 @@ public class JobSchedulerEconomicPolicy extends EconomicPolicy {
|
||||
|
||||
mMinSatiatedBalanceOther = getConstantAsCake(mParser, properties,
|
||||
KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP, DEFAULT_JS_MIN_SATIATED_BALANCE_OTHER_APP_CAKES);
|
||||
mMinSatiatedBalanceHeadlessSystemApp = getConstantAsCake(mParser, properties,
|
||||
KEY_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
|
||||
DEFAULT_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP_CAKES,
|
||||
mMinSatiatedBalanceOther);
|
||||
mMinSatiatedBalanceExempted = getConstantAsCake(mParser, properties,
|
||||
KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED, DEFAULT_JS_MIN_SATIATED_BALANCE_EXEMPTED_CAKES,
|
||||
mMinSatiatedBalanceOther);
|
||||
KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED,
|
||||
DEFAULT_JS_MIN_SATIATED_BALANCE_EXEMPTED_CAKES,
|
||||
mMinSatiatedBalanceHeadlessSystemApp);
|
||||
mMinSatiatedBalanceIncrementalAppUpdater = getConstantAsCake(mParser, properties,
|
||||
KEY_JS_MIN_SATIATED_BALANCE_INCREMENT_APP_UPDATER,
|
||||
DEFAULT_JS_MIN_SATIATED_BALANCE_INCREMENT_APP_UPDATER_CAKES);
|
||||
|
||||
@@ -136,17 +136,30 @@ public class AlarmManagerEconomicPolicyTest {
|
||||
mEconomicPolicy.getMinSatiatedConsumptionLimit());
|
||||
assertEquals(EconomyManager.DEFAULT_AM_MAX_CONSUMPTION_LIMIT_CAKES,
|
||||
mEconomicPolicy.getMaxSatiatedConsumptionLimit());
|
||||
|
||||
final String pkgRestricted = "com.pkg.restricted";
|
||||
when(mIrs.isPackageRestricted(anyInt(), eq(pkgRestricted))).thenReturn(true);
|
||||
assertEquals(0, mEconomicPolicy.getMinSatiatedBalance(0, pkgRestricted));
|
||||
assertEquals(0, mEconomicPolicy.getMaxSatiatedBalance(0, pkgRestricted));
|
||||
assertEquals(EconomyManager.DEFAULT_AM_MAX_SATIATED_BALANCE_CAKES,
|
||||
mEconomicPolicy.getMaxSatiatedBalance(0, "com.any.other.app"));
|
||||
|
||||
final String pkgExempted = "com.pkg.exempted";
|
||||
when(mIrs.isPackageExempted(anyInt(), eq(pkgExempted))).thenReturn(true);
|
||||
assertEquals(EconomyManager.DEFAULT_AM_MIN_SATIATED_BALANCE_EXEMPTED_CAKES,
|
||||
mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
||||
assertEquals(EconomyManager.DEFAULT_AM_MAX_SATIATED_BALANCE_CAKES,
|
||||
mEconomicPolicy.getMaxSatiatedBalance(0, pkgExempted));
|
||||
|
||||
final String pkgHeadlessSystemApp = "com.pkg.headless_system_app";
|
||||
when(mIrs.isHeadlessSystemApp(eq(pkgHeadlessSystemApp))).thenReturn(true);
|
||||
assertEquals(EconomyManager.DEFAULT_AM_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP_CAKES,
|
||||
mEconomicPolicy.getMinSatiatedBalance(0, pkgHeadlessSystemApp));
|
||||
assertEquals(EconomyManager.DEFAULT_AM_MAX_SATIATED_BALANCE_CAKES,
|
||||
mEconomicPolicy.getMaxSatiatedBalance(0, pkgHeadlessSystemApp));
|
||||
|
||||
assertEquals(EconomyManager.DEFAULT_AM_MIN_SATIATED_BALANCE_OTHER_APP_CAKES,
|
||||
mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
||||
assertEquals(EconomyManager.DEFAULT_AM_MAX_SATIATED_BALANCE_CAKES,
|
||||
mEconomicPolicy.getMaxSatiatedBalance(0, "com.any.other.app"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -156,6 +169,8 @@ public class AlarmManagerEconomicPolicyTest {
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_CONSUMPTION_LIMIT, arcToCake(25));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_SATIATED_BALANCE, arcToCake(10));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(9));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
|
||||
arcToCake(8));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(7));
|
||||
|
||||
assertEquals(arcToCake(5), mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
||||
@@ -168,6 +183,9 @@ public class AlarmManagerEconomicPolicyTest {
|
||||
final String pkgExempted = "com.pkg.exempted";
|
||||
when(mIrs.isPackageExempted(anyInt(), eq(pkgExempted))).thenReturn(true);
|
||||
assertEquals(arcToCake(9), mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
||||
final String pkgHeadlessSystemApp = "com.pkg.headless_system_app";
|
||||
when(mIrs.isHeadlessSystemApp(eq(pkgHeadlessSystemApp))).thenReturn(true);
|
||||
assertEquals(arcToCake(8), mEconomicPolicy.getMinSatiatedBalance(0, pkgHeadlessSystemApp));
|
||||
assertEquals(arcToCake(7), mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
||||
}
|
||||
|
||||
@@ -179,6 +197,8 @@ public class AlarmManagerEconomicPolicyTest {
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_CONSUMPTION_LIMIT, arcToCake(-5));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_SATIATED_BALANCE, arcToCake(-1));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(-2));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
|
||||
arcToCake(-3));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(-3));
|
||||
|
||||
assertEquals(arcToCake(1), mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
||||
@@ -191,6 +211,9 @@ public class AlarmManagerEconomicPolicyTest {
|
||||
final String pkgExempted = "com.pkg.exempted";
|
||||
when(mIrs.isPackageExempted(anyInt(), eq(pkgExempted))).thenReturn(true);
|
||||
assertEquals(arcToCake(0), mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
||||
final String pkgHeadlessSystemApp = "com.pkg.headless_system_app";
|
||||
when(mIrs.isHeadlessSystemApp(eq(pkgHeadlessSystemApp))).thenReturn(true);
|
||||
assertEquals(arcToCake(0), mEconomicPolicy.getMinSatiatedBalance(0, pkgHeadlessSystemApp));
|
||||
assertEquals(arcToCake(0), mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
||||
|
||||
// Test min+max reversed.
|
||||
@@ -199,6 +222,8 @@ public class AlarmManagerEconomicPolicyTest {
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_CONSUMPTION_LIMIT, arcToCake(3));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_SATIATED_BALANCE, arcToCake(10));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(11));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
|
||||
arcToCake(12));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(13));
|
||||
|
||||
assertEquals(arcToCake(5), mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
||||
@@ -207,6 +232,7 @@ public class AlarmManagerEconomicPolicyTest {
|
||||
assertEquals(arcToCake(0), mEconomicPolicy.getMaxSatiatedBalance(0, pkgRestricted));
|
||||
assertEquals(arcToCake(13), mEconomicPolicy.getMaxSatiatedBalance(0, "com.any.other.app"));
|
||||
assertEquals(arcToCake(13), mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
||||
assertEquals(arcToCake(13), mEconomicPolicy.getMinSatiatedBalance(0, pkgHeadlessSystemApp));
|
||||
assertEquals(arcToCake(13), mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -189,6 +189,10 @@ public class CompleteEconomicPolicyTest {
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_SATIATED_BALANCE, arcToCake(11));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(8));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(5));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
|
||||
arcToCake(6));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
|
||||
arcToCake(4));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(3));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(2));
|
||||
|
||||
@@ -202,6 +206,9 @@ public class CompleteEconomicPolicyTest {
|
||||
final String pkgExempted = "com.pkg.exempted";
|
||||
when(mIrs.isPackageExempted(anyInt(), eq(pkgExempted))).thenReturn(true);
|
||||
assertEquals(arcToCake(13), mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
||||
final String pkgHeadlessSystemApp = "com.pkg.headless_system_app";
|
||||
when(mIrs.isHeadlessSystemApp(eq(pkgHeadlessSystemApp))).thenReturn(true);
|
||||
assertEquals(arcToCake(10), mEconomicPolicy.getMinSatiatedBalance(0, pkgHeadlessSystemApp));
|
||||
assertEquals(arcToCake(5), mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
||||
}
|
||||
|
||||
|
||||
@@ -149,6 +149,13 @@ public class JobSchedulerEconomicPolicyTest {
|
||||
assertEquals(EconomyManager.DEFAULT_JS_MAX_SATIATED_BALANCE_CAKES,
|
||||
mEconomicPolicy.getMaxSatiatedBalance(0, pkgExempted));
|
||||
|
||||
final String pkgHeadlessSystemApp = "com.pkg.headless_system_app";
|
||||
when(mIrs.isHeadlessSystemApp(eq(pkgHeadlessSystemApp))).thenReturn(true);
|
||||
assertEquals(EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP_CAKES,
|
||||
mEconomicPolicy.getMinSatiatedBalance(0, pkgHeadlessSystemApp));
|
||||
assertEquals(EconomyManager.DEFAULT_JS_MAX_SATIATED_BALANCE_CAKES,
|
||||
mEconomicPolicy.getMaxSatiatedBalance(0, pkgHeadlessSystemApp));
|
||||
|
||||
final String pkgUpdater = "com.pkg.updater";
|
||||
when(mIrs.getAppUpdateResponsibilityCount(anyInt(), eq(pkgUpdater))).thenReturn(5);
|
||||
assertEquals(5 * EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_INCREMENT_APP_UPDATER_CAKES
|
||||
@@ -177,6 +184,8 @@ public class JobSchedulerEconomicPolicyTest {
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MAX_CONSUMPTION_LIMIT, arcToCake(25));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MAX_SATIATED_BALANCE, arcToCake(10));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(6));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
|
||||
arcToCake(5));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(4));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_INCREMENT_APP_UPDATER,
|
||||
arcToCake(1));
|
||||
@@ -191,6 +200,9 @@ public class JobSchedulerEconomicPolicyTest {
|
||||
final String pkgExempted = "com.pkg.exempted";
|
||||
when(mIrs.isPackageExempted(anyInt(), eq(pkgExempted))).thenReturn(true);
|
||||
assertEquals(arcToCake(6), mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
||||
final String pkgHeadlessSystemApp = "com.pkg.headless_system_app";
|
||||
when(mIrs.isHeadlessSystemApp(eq(pkgHeadlessSystemApp))).thenReturn(true);
|
||||
assertEquals(arcToCake(5), mEconomicPolicy.getMinSatiatedBalance(0, pkgHeadlessSystemApp));
|
||||
assertEquals(arcToCake(4), mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
||||
final String pkgUpdater = "com.pkg.updater";
|
||||
when(mIrs.getAppUpdateResponsibilityCount(anyInt(), eq(pkgUpdater))).thenReturn(3);
|
||||
@@ -206,6 +218,8 @@ public class JobSchedulerEconomicPolicyTest {
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MAX_CONSUMPTION_LIMIT, arcToCake(-5));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MAX_SATIATED_BALANCE, arcToCake(-1));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(-2));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
|
||||
arcToCake(-3));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(-3));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_INCREMENT_APP_UPDATER,
|
||||
arcToCake(-4));
|
||||
@@ -220,6 +234,9 @@ public class JobSchedulerEconomicPolicyTest {
|
||||
final String pkgExempted = "com.pkg.exempted";
|
||||
when(mIrs.isPackageExempted(anyInt(), eq(pkgExempted))).thenReturn(true);
|
||||
assertEquals(arcToCake(0), mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
||||
final String pkgHeadlessSystemApp = "com.pkg.headless_system_app";
|
||||
when(mIrs.isHeadlessSystemApp(eq(pkgHeadlessSystemApp))).thenReturn(true);
|
||||
assertEquals(arcToCake(0), mEconomicPolicy.getMinSatiatedBalance(0, pkgHeadlessSystemApp));
|
||||
assertEquals(arcToCake(0), mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
||||
final String pkgUpdater = "com.pkg.updater";
|
||||
when(mIrs.getAppUpdateResponsibilityCount(anyInt(), eq(pkgUpdater))).thenReturn(5);
|
||||
@@ -232,6 +249,8 @@ public class JobSchedulerEconomicPolicyTest {
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MAX_CONSUMPTION_LIMIT, arcToCake(3));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MAX_SATIATED_BALANCE, arcToCake(10));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(11));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
|
||||
arcToCake(12));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(13));
|
||||
|
||||
assertEquals(arcToCake(5), mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
||||
@@ -240,6 +259,7 @@ public class JobSchedulerEconomicPolicyTest {
|
||||
assertEquals(arcToCake(0), mEconomicPolicy.getMaxSatiatedBalance(0, pkgRestricted));
|
||||
assertEquals(arcToCake(13), mEconomicPolicy.getMaxSatiatedBalance(0, "com.any.other.app"));
|
||||
assertEquals(arcToCake(13), mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
||||
assertEquals(arcToCake(13), mEconomicPolicy.getMinSatiatedBalance(0, pkgHeadlessSystemApp));
|
||||
assertEquals(arcToCake(13), mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user