Merge "Fix NotificationManagerServiceTest for AAOS." into sc-dev

This commit is contained in:
Abhijoy Saha
2021-06-25 17:25:05 +00:00
committed by Android (Google) Code Review
2 changed files with 33 additions and 7 deletions

View File

@@ -16,9 +16,11 @@
package com.android.server.notification; package com.android.server.notification;
import android.app.ActivityManager;
import android.net.Uri; import android.net.Uri;
import android.os.IBinder; import android.os.IBinder;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager;
import android.util.ArraySet; import android.util.ArraySet;
/** /**
@@ -74,7 +76,9 @@ public final class InlineReplyUriRecord {
*/ */
public int getUserId() { public int getUserId() {
int userId = mUser.getIdentifier(); int userId = mUser.getIdentifier();
if (userId == UserHandle.USER_ALL) { if (UserManager.isHeadlessSystemUserMode() && userId == UserHandle.USER_ALL) {
return ActivityManager.getCurrentUser();
} else if (userId == UserHandle.USER_ALL) {
return UserHandle.USER_SYSTEM; return UserHandle.USER_SYSTEM;
} else { } else {
return userId; return userId;

View File

@@ -233,6 +233,7 @@ import java.util.function.Consumer;
@RunWithLooper @RunWithLooper
public class NotificationManagerServiceTest extends UiServiceTestCase { public class NotificationManagerServiceTest extends UiServiceTestCase {
private static final String TEST_CHANNEL_ID = "NotificationManagerServiceTestChannelId"; private static final String TEST_CHANNEL_ID = "NotificationManagerServiceTestChannelId";
private static final int UID_HEADLESS = 1000000;
private final int mUid = Binder.getCallingUid(); private final int mUid = Binder.getCallingUid();
private TestableNotificationManagerService mService; private TestableNotificationManagerService mService;
@@ -6758,7 +6759,11 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
@Test @Test
public void testGrantInlineReplyUriPermission_recordExists() throws Exception { public void testGrantInlineReplyUriPermission_recordExists() throws Exception {
NotificationRecord nr = generateNotificationRecord(mTestNotificationChannel, 0); int userId = UserManager.isHeadlessSystemUserMode()
? UserHandle.getUserId(UID_HEADLESS)
: USER_SYSTEM;
NotificationRecord nr = generateNotificationRecord(mTestNotificationChannel, userId);
mBinderService.enqueueNotificationWithTag(PKG, PKG, "tag", mBinderService.enqueueNotificationWithTag(PKG, PKG, "tag",
nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId()); nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
waitForIdle(); waitForIdle();
@@ -6783,7 +6788,11 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
@Test @Test
public void testGrantInlineReplyUriPermission_noRecordExists() throws Exception { public void testGrantInlineReplyUriPermission_noRecordExists() throws Exception {
NotificationRecord nr = generateNotificationRecord(mTestNotificationChannel, 0); int userId = UserManager.isHeadlessSystemUserMode()
? UserHandle.getUserId(UID_HEADLESS)
: USER_SYSTEM;
NotificationRecord nr = generateNotificationRecord(mTestNotificationChannel, userId);
waitForIdle(); waitForIdle();
// No notifications exist for the given record // No notifications exist for the given record
@@ -6827,7 +6836,9 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
// Target user for the grant is USER_ALL instead of USER_SYSTEM // Target user for the grant is USER_ALL instead of USER_SYSTEM
verify(mUgm, times(1)).grantUriPermissionFromOwner(any(), verify(mUgm, times(1)).grantUriPermissionFromOwner(any(),
eq(nr.getSbn().getUid()), eq(nr.getSbn().getPackageName()), eq(uri), anyInt(), eq(nr.getSbn().getUid()), eq(nr.getSbn().getPackageName()), eq(uri), anyInt(),
anyInt(), eq(UserHandle.USER_SYSTEM)); anyInt(), UserManager.isHeadlessSystemUserMode()
? eq(UserHandle.getUserId(UID_HEADLESS))
: eq(USER_SYSTEM));
} }
@Test @Test
@@ -6870,7 +6881,11 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
@Test @Test
public void testClearInlineReplyUriPermission_uriRecordExists() throws Exception { public void testClearInlineReplyUriPermission_uriRecordExists() throws Exception {
NotificationRecord nr = generateNotificationRecord(mTestNotificationChannel, 0); int userId = UserManager.isHeadlessSystemUserMode()
? UserHandle.getUserId(UID_HEADLESS)
: USER_SYSTEM;
NotificationRecord nr = generateNotificationRecord(mTestNotificationChannel, userId);
reset(mPackageManager); reset(mPackageManager);
Uri uri1 = ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 1); Uri uri1 = ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 1);
@@ -6932,7 +6947,10 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
// permissionOwner destroyed for USER_SYSTEM, not USER_ALL // permissionOwner destroyed for USER_SYSTEM, not USER_ALL
verify(mUgmInternal, times(1)).revokeUriPermissionFromOwner( verify(mUgmInternal, times(1)).revokeUriPermissionFromOwner(
eq(record.getPermissionOwner()), eq(null), eq(~0), eq(USER_SYSTEM)); eq(record.getPermissionOwner()), eq(null), eq(~0),
UserManager.isHeadlessSystemUserMode()
? eq(UserHandle.getUserId(UID_HEADLESS))
: eq(USER_SYSTEM));
} }
@Test @Test
@@ -7425,6 +7443,10 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
@Test @Test
public void createConversationNotificationChannel() throws Exception { public void createConversationNotificationChannel() throws Exception {
int userId = UserManager.isHeadlessSystemUserMode()
? UserHandle.getUserId(UID_HEADLESS)
: USER_SYSTEM;
NotificationChannel original = new NotificationChannel("a", "a", IMPORTANCE_HIGH); NotificationChannel original = new NotificationChannel("a", "a", IMPORTANCE_HIGH);
original.setAllowBubbles(!original.canBubble()); original.setAllowBubbles(!original.canBubble());
original.setShowBadge(!original.canShowBadge()); original.setShowBadge(!original.canShowBadge());
@@ -7443,7 +7465,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
PKG, mUid, orig, "friend"); PKG, mUid, orig, "friend");
NotificationChannel friendChannel = mBinderService.getConversationNotificationChannel( NotificationChannel friendChannel = mBinderService.getConversationNotificationChannel(
PKG, 0, PKG, original.getId(), false, "friend"); PKG, userId, PKG, original.getId(), false, "friend");
assertEquals(original.getName(), friendChannel.getName()); assertEquals(original.getName(), friendChannel.getName());
assertEquals(original.getId(), friendChannel.getParentChannelId()); assertEquals(original.getId(), friendChannel.getParentChannelId());