Merge "Use the correct UID for proc state evaluation."
This commit is contained in:
@@ -237,7 +237,7 @@ public final class FlexibilityController extends StateController {
|
||||
@GuardedBy("mLock")
|
||||
boolean isFlexibilitySatisfiedLocked(JobStatus js) {
|
||||
return !mFlexibilityEnabled
|
||||
|| mService.getUidBias(js.getUid()) == JobInfo.BIAS_TOP_APP
|
||||
|| mService.getUidBias(js.getSourceUid()) == JobInfo.BIAS_TOP_APP
|
||||
|| mService.isCurrentlyRunningLocked(js)
|
||||
|| getNumSatisfiedRequiredConstraintsLocked(js)
|
||||
>= js.getNumRequiredFlexibleConstraints();
|
||||
@@ -587,7 +587,7 @@ public final class FlexibilityController extends StateController {
|
||||
}
|
||||
if (latest - nowElapsed < mDeadlineProximityLimitMs) {
|
||||
if (DEBUG) {
|
||||
Slog.d(TAG, "deadline proximity met: " + js.getUid());
|
||||
Slog.d(TAG, "deadline proximity met: " + js);
|
||||
}
|
||||
mFlexibilityTracker.adjustJobsRequiredConstraints(js,
|
||||
-js.getNumRequiredFlexibleConstraints(), nowElapsed);
|
||||
@@ -600,7 +600,7 @@ public final class FlexibilityController extends StateController {
|
||||
}
|
||||
if (latest - nextTimeElapsed <= mDeadlineProximityLimitMs) {
|
||||
if (DEBUG) {
|
||||
Slog.d(TAG, "last alarm set: " + js.getUid());
|
||||
Slog.d(TAG, "last alarm set: " + js);
|
||||
}
|
||||
addAlarm(js, latest - mDeadlineProximityLimitMs);
|
||||
return;
|
||||
|
||||
@@ -48,6 +48,7 @@ import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.app.AlarmManager;
|
||||
import android.app.AppGlobals;
|
||||
import android.app.job.JobInfo;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
@@ -80,11 +81,13 @@ public class FlexibilityControllerTest {
|
||||
private static final String SOURCE_PACKAGE = "com.android.frameworks.mockingservicestests";
|
||||
private static final int SOURCE_USER_ID = 0;
|
||||
private static final long FROZEN_TIME = 100L;
|
||||
|
||||
private MockitoSession mMockingSession;
|
||||
private FlexibilityController mFlexibilityController;
|
||||
private DeviceConfig.Properties.Builder mDeviceConfigPropertiesBuilder;
|
||||
private JobStore mJobStore;
|
||||
private FlexibilityController.FcConfig mFcConfig;
|
||||
private int mSourceUid;
|
||||
|
||||
@Mock
|
||||
private AlarmManager mAlarmManager;
|
||||
@@ -98,7 +101,7 @@ public class FlexibilityControllerTest {
|
||||
private PackageManager mPackageManager;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
public void setup() throws Exception {
|
||||
mMockingSession = mockitoSession()
|
||||
.initMocks(this)
|
||||
.strictness(Strictness.LENIENT)
|
||||
@@ -144,6 +147,8 @@ public class FlexibilityControllerTest {
|
||||
mPrefetchController);
|
||||
mFcConfig = mFlexibilityController.getFcConfig();
|
||||
|
||||
mSourceUid = AppGlobals.getPackageManager().getPackageUid(SOURCE_PACKAGE, 0, 0);
|
||||
|
||||
setDeviceConfigString(KEY_PERCENTS_TO_DROP_NUM_FLEXIBLE_CONSTRAINTS, "50,60,70,80");
|
||||
setDeviceConfigLong(KEY_DEADLINE_PROXIMITY_LIMIT, 0L);
|
||||
setDeviceConfigBoolean(KEY_FLEXIBILITY_ENABLED, true);
|
||||
@@ -648,20 +653,22 @@ public class FlexibilityControllerTest {
|
||||
public void testTopAppBypass() {
|
||||
JobInfo.Builder jb = createJob(0);
|
||||
JobStatus js = createJobStatus("testTopAppBypass", jb);
|
||||
js.adjustNumRequiredFlexibleConstraints(100);
|
||||
mJobStore.add(js);
|
||||
|
||||
// Needed because if before and after Uid bias is the same, nothing happens.
|
||||
when(mJobSchedulerService.getUidBias(js.getUid()))
|
||||
when(mJobSchedulerService.getUidBias(mSourceUid))
|
||||
.thenReturn(JobInfo.BIAS_FOREGROUND_SERVICE);
|
||||
|
||||
synchronized (mFlexibilityController.mLock) {
|
||||
setUidBias(js.getUid(), JobInfo.BIAS_TOP_APP);
|
||||
mFlexibilityController.maybeStartTrackingJobLocked(js, null);
|
||||
assertFalse(mFlexibilityController.isFlexibilitySatisfiedLocked(js));
|
||||
|
||||
setUidBias(mSourceUid, JobInfo.BIAS_TOP_APP);
|
||||
|
||||
assertTrue(mFlexibilityController.isFlexibilitySatisfiedLocked(js));
|
||||
assertTrue(js.isConstraintSatisfied(CONSTRAINT_FLEXIBLE));
|
||||
|
||||
setUidBias(js.getUid(), JobInfo.BIAS_FOREGROUND_SERVICE);
|
||||
setUidBias(mSourceUid, JobInfo.BIAS_FOREGROUND_SERVICE);
|
||||
|
||||
assertFalse(mFlexibilityController.isFlexibilitySatisfiedLocked(js));
|
||||
assertFalse(js.isConstraintSatisfied(CONSTRAINT_FLEXIBLE));
|
||||
@@ -858,18 +865,18 @@ public class FlexibilityControllerTest {
|
||||
|
||||
final ArraySet<String> pkgs = new ArraySet<>();
|
||||
pkgs.add(js.getSourcePackageName());
|
||||
when(mJobSchedulerService.getPackagesForUidLocked(js.getUid())).thenReturn(pkgs);
|
||||
when(mJobSchedulerService.getPackagesForUidLocked(mSourceUid)).thenReturn(pkgs);
|
||||
|
||||
setUidBias(js.getUid(), BIAS_TOP_APP);
|
||||
setUidBias(js.getUid(), BIAS_FOREGROUND_SERVICE);
|
||||
setUidBias(mSourceUid, BIAS_TOP_APP);
|
||||
setUidBias(mSourceUid, BIAS_FOREGROUND_SERVICE);
|
||||
assertEquals(100L, (long) mFlexibilityController.mPrefetchLifeCycleStart
|
||||
.getOrDefault(js.getSourceUserId(), js.getSourcePackageName(), 0L));
|
||||
|
||||
JobSchedulerService.sElapsedRealtimeClock =
|
||||
Clock.fixed(Instant.ofEpochMilli(50L), ZoneOffset.UTC);
|
||||
|
||||
setUidBias(js.getUid(), BIAS_TOP_APP);
|
||||
setUidBias(js.getUid(), BIAS_FOREGROUND_SERVICE);
|
||||
setUidBias(mSourceUid, BIAS_TOP_APP);
|
||||
setUidBias(mSourceUid, BIAS_FOREGROUND_SERVICE);
|
||||
assertEquals(100L, (long) mFlexibilityController
|
||||
.mPrefetchLifeCycleStart.get(js.getSourceUserId(), js.getSourcePackageName()));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user