Loading services/core/java/com/android/server/pm/PackageMonitorCallbackHelper.java +1 −1 Original line number Diff line number Diff line Loading @@ -244,7 +244,7 @@ class PackageMonitorCallbackHelper { return; } int registerUid = registerUser.getUid(); if (allowUids != null && registerUid != Process.SYSTEM_UID if (allowUids != null && !UserHandle.isSameApp(registerUid, Process.SYSTEM_UID) && !ArrayUtils.contains(allowUids, registerUid)) { if (DEBUG) { Slog.w(TAG, "Skip invoke PackageMonitorCallback for " + intent.getAction() Loading services/tests/mockingservicestests/src/com/android/server/pm/PackageMonitorCallbackHelperTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.os.Handler; import android.os.IRemoteCallback; import android.os.Looper; import android.os.Process; import android.os.UserHandle; import android.util.SparseArray; import org.junit.After; Loading Loading @@ -340,6 +341,24 @@ public class PackageMonitorCallbackHelperTest { verify(callback, after(WAIT_CALLBACK_CALLED_IN_MS).times(1)).sendResult(any()); } @Test public void registerPackageMonitor_callbackNotInAllowListSystemUidSecondUser_callbackIsCalled() throws Exception { IRemoteCallback callback = createMockPackageMonitorCallback(); int userId = 10; int fakeAppId = 12345; SparseArray<int[]> broadcastAllowList = new SparseArray<>(); broadcastAllowList.put(userId, new int[]{UserHandle.getUid(userId, fakeAppId)}); mPackageMonitorCallbackHelper.registerPackageMonitorCallback(callback, userId, UserHandle.getUid(userId, Process.SYSTEM_UID)); mPackageMonitorCallbackHelper.notifyPackageMonitor(Intent.ACTION_PACKAGE_ADDED, FAKE_PACKAGE_NAME, createFakeBundle(), new int[]{userId}, null /* instantUserIds */, broadcastAllowList, mHandler, null /* filterExtras */); verify(callback, after(WAIT_CALLBACK_CALLED_IN_MS).times(1)).sendResult(any()); } private IRemoteCallback createMockPackageMonitorCallback() { return spy(new IRemoteCallback.Stub() { @Override Loading Loading
services/core/java/com/android/server/pm/PackageMonitorCallbackHelper.java +1 −1 Original line number Diff line number Diff line Loading @@ -244,7 +244,7 @@ class PackageMonitorCallbackHelper { return; } int registerUid = registerUser.getUid(); if (allowUids != null && registerUid != Process.SYSTEM_UID if (allowUids != null && !UserHandle.isSameApp(registerUid, Process.SYSTEM_UID) && !ArrayUtils.contains(allowUids, registerUid)) { if (DEBUG) { Slog.w(TAG, "Skip invoke PackageMonitorCallback for " + intent.getAction() Loading
services/tests/mockingservicestests/src/com/android/server/pm/PackageMonitorCallbackHelperTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.os.Handler; import android.os.IRemoteCallback; import android.os.Looper; import android.os.Process; import android.os.UserHandle; import android.util.SparseArray; import org.junit.After; Loading Loading @@ -340,6 +341,24 @@ public class PackageMonitorCallbackHelperTest { verify(callback, after(WAIT_CALLBACK_CALLED_IN_MS).times(1)).sendResult(any()); } @Test public void registerPackageMonitor_callbackNotInAllowListSystemUidSecondUser_callbackIsCalled() throws Exception { IRemoteCallback callback = createMockPackageMonitorCallback(); int userId = 10; int fakeAppId = 12345; SparseArray<int[]> broadcastAllowList = new SparseArray<>(); broadcastAllowList.put(userId, new int[]{UserHandle.getUid(userId, fakeAppId)}); mPackageMonitorCallbackHelper.registerPackageMonitorCallback(callback, userId, UserHandle.getUid(userId, Process.SYSTEM_UID)); mPackageMonitorCallbackHelper.notifyPackageMonitor(Intent.ACTION_PACKAGE_ADDED, FAKE_PACKAGE_NAME, createFakeBundle(), new int[]{userId}, null /* instantUserIds */, broadcastAllowList, mHandler, null /* filterExtras */); verify(callback, after(WAIT_CALLBACK_CALLED_IN_MS).times(1)).sendResult(any()); } private IRemoteCallback createMockPackageMonitorCallback() { return spy(new IRemoteCallback.Stub() { @Override Loading