From e31c06b3a97ecab3225040fb68c1ee1bfbe59bd3 Mon Sep 17 00:00:00 2001 From: Joanne Chung Date: Tue, 11 Jul 2023 12:55:00 +0000 Subject: [PATCH] Add test for package visibility rule in PackageMonitorCallbackHelper callback Bug: 289567218 Test: atest PackageMonitorCallbackHelperTest --iterations 100 Change-Id: I78d88412d4fb4344d87946f5c2c0f3f6fdb4691d --- .../pm/PackageMonitorCallbackHelperTest.java | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/PackageMonitorCallbackHelperTest.java b/services/tests/mockingservicestests/src/com/android/server/pm/PackageMonitorCallbackHelperTest.java index 3ac59e9f0efea..f20633342759e 100644 --- a/services/tests/mockingservicestests/src/com/android/server/pm/PackageMonitorCallbackHelperTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/pm/PackageMonitorCallbackHelperTest.java @@ -33,6 +33,8 @@ import android.os.Bundle; import android.os.Handler; import android.os.IRemoteCallback; import android.os.Looper; +import android.os.Process; +import android.util.SparseArray; import org.junit.After; import org.junit.Before; @@ -244,6 +246,54 @@ public class PackageMonitorCallbackHelperTest { verify(callback, after(WAIT_CALLBACK_CALLED_IN_MS).never()).sendResult(any()); } + @Test + public void testRegisterPackageMonitorCallbackInAllowList_callbackShouldCalled() + throws Exception { + IRemoteCallback callback = createMockPackageMonitorCallback(); + SparseArray broadcastAllowList = new SparseArray<>(); + broadcastAllowList.put(0, new int[] {Binder.getCallingUid()}); + + mPackageMonitorCallbackHelper.registerPackageMonitorCallback(callback, 0 /* userId */, + Binder.getCallingUid()); + mPackageMonitorCallbackHelper.notifyPackageMonitor(Intent.ACTION_PACKAGE_ADDED, + FAKE_PACKAGE_NAME, createFakeBundle(), new int[]{0} /* userIds */, + null /* instantUserIds */, broadcastAllowList); + + verify(callback, after(WAIT_CALLBACK_CALLED_IN_MS).times(1)).sendResult(any()); + } + + @Test + public void testRegisterPackageMonitorCallbackNotInAllowList_callbackShouldNotCalled() + throws Exception { + IRemoteCallback callback = createMockPackageMonitorCallback(); + SparseArray broadcastAllowList = new SparseArray<>(); + broadcastAllowList.put(0, new int[] {12345}); + + mPackageMonitorCallbackHelper.registerPackageMonitorCallback(callback, 0 /* userId */, + Binder.getCallingUid()); + mPackageMonitorCallbackHelper.notifyPackageMonitor(Intent.ACTION_PACKAGE_ADDED, + FAKE_PACKAGE_NAME, createFakeBundle(), new int[]{0} /* userIds */, + null /* instantUserIds */, broadcastAllowList); + + verify(callback, after(WAIT_CALLBACK_CALLED_IN_MS).never()).sendResult(any()); + } + + @Test + public void testRegisterPackageMonitorCallbackNotInAllowListSystemUid_callbackShouldCalled() + throws Exception { + IRemoteCallback callback = createMockPackageMonitorCallback(); + SparseArray broadcastAllowList = new SparseArray<>(); + broadcastAllowList.put(0, new int[] {12345}); + + mPackageMonitorCallbackHelper.registerPackageMonitorCallback(callback, 0 /* userId */, + Process.SYSTEM_UID); + mPackageMonitorCallbackHelper.notifyPackageMonitor(Intent.ACTION_PACKAGE_ADDED, + FAKE_PACKAGE_NAME, createFakeBundle(), new int[]{0} /* userIds */, + null /* instantUserIds */, broadcastAllowList); + + verify(callback, after(WAIT_CALLBACK_CALLED_IN_MS).times(1)).sendResult(any()); + } + private IRemoteCallback createMockPackageMonitorCallback() { return spy(new IRemoteCallback.Stub() { @Override