diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 272fbf86aeddc..7a83436493b83 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -2743,6 +2743,7 @@ public class ActivityManagerService extends IActivityManager.Stub @VisibleForTesting public ActivityManagerService(Injector injector) { mInjector = injector; + mContext = mInjector.getContext(); GL_ES_VERSION = 0; mActivityStarter = null; mAppErrors = null; @@ -23875,6 +23876,10 @@ public class ActivityManagerService extends IActivityManager.Stub public static class Injector { private NetworkManagementInternal mNmi; + public Context getContext() { + return null; + } + public AppOpsService getAppOpsService(File file, Handler handler) { return new AppOpsService(file, handler); } diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/am/ActivityManagerServiceTest.java index b12da34f43755..1e038dfaf1af2 100644 --- a/services/tests/servicestests/src/com/android/server/am/ActivityManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/am/ActivityManagerServiceTest.java @@ -51,7 +51,9 @@ import android.app.ActivityManager; import android.app.AppOpsManager; import android.app.IApplicationThread; import android.app.IUidObserver; +import android.content.Context; import android.content.pm.ApplicationInfo; +import android.content.pm.PackageManager; import android.os.Handler; import android.os.HandlerThread; import android.os.IBinder; @@ -116,7 +118,9 @@ public class ActivityManagerServiceTest { UidRecord.CHANGE_ACTIVE }; + @Mock private Context mContext; @Mock private AppOpsService mAppOpsService; + @Mock private PackageManager mPackageManager; private TestInjector mInjector; private ActivityManagerService mAms; @@ -133,6 +137,8 @@ public class ActivityManagerServiceTest { mInjector = new TestInjector(); mAms = new ActivityManagerService(mInjector); mAms.mWaitForNetworkTimeoutMs = 100; + + when(mContext.getPackageManager()).thenReturn(mPackageManager); } @After @@ -601,10 +607,12 @@ public class ActivityManagerServiceTest { uidRecord.pendingChange = changeItem; uidRecord.curProcStateSeq = TEST_PROC_STATE_SEQ2; verifyLastProcStateSeqUpdated(uidRecord, -1, TEST_PROC_STATE_SEQ2); + } + @Test + public void testEnqueueUidChangeLocked_nullUidRecord() { // Use "null" uidRecord to make sure there is no crash. - // TODO: currently it crashes, uncomment after fixing it. - // mAms.enqueueUidChangeLocked(null, TEST_UID, UidRecord.CHANGE_ACTIVE); + mAms.enqueueUidChangeLocked(null, TEST_UID, UidRecord.CHANGE_ACTIVE); } private void verifyLastProcStateSeqUpdated(UidRecord uidRecord, int uid, long curProcstateSeq) { @@ -769,6 +777,11 @@ public class ActivityManagerServiceTest { private class TestInjector extends Injector { private boolean mRestricted = true; + @Override + public Context getContext() { + return mContext; + } + @Override public AppOpsService getAppOpsService(File file, Handler handler) { return mAppOpsService;