Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 85ee3333 authored by Abhijoy Saha's avatar Abhijoy Saha
Browse files

Fix NotificationManagerServiceTest for AAOS.

* Use uid 1000000 when system is using headless system user
* InlineReplyUriRecord should return current user when assigned USER_ALL
and system is using headless system user

Fixes: 190515128
Test: atest -c NotificationManagerServiceTest
Change-Id: I58f1991328b94996146982d8bc1949ce07dc8f69
parent 39e1e04a
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -16,9 +16,11 @@

package com.android.server.notification;

import android.app.ActivityManager;
import android.net.Uri;
import android.os.IBinder;
import android.os.UserHandle;
import android.os.UserManager;
import android.util.ArraySet;

/**
@@ -74,7 +76,9 @@ public final class InlineReplyUriRecord {
     */
    public int getUserId() {
        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;
        } else {
            return userId;
+28 −6
Original line number Diff line number Diff line
@@ -232,6 +232,7 @@ import java.util.function.Consumer;
@RunWithLooper
public class NotificationManagerServiceTest extends UiServiceTestCase {
    private static final String TEST_CHANNEL_ID = "NotificationManagerServiceTestChannelId";
    private static final int UID_HEADLESS = 1000000;

    private final int mUid = Binder.getCallingUid();
    private TestableNotificationManagerService mService;
@@ -6739,7 +6740,11 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {

    @Test
    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",
                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
        waitForIdle();
@@ -6764,7 +6769,11 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {

    @Test
    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();

        // No notifications exist for the given record
@@ -6808,7 +6817,9 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
        // Target user for the grant is USER_ALL instead of USER_SYSTEM
        verify(mUgm, times(1)).grantUriPermissionFromOwner(any(),
                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
@@ -6851,7 +6862,11 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {

    @Test
    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);

        Uri uri1 = ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 1);
@@ -6913,7 +6928,10 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {

        // permissionOwner destroyed for USER_SYSTEM, not USER_ALL
        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
@@ -7406,6 +7424,10 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {

    @Test
    public void createConversationNotificationChannel() throws Exception {
        int userId = UserManager.isHeadlessSystemUserMode()
                ? UserHandle.getUserId(UID_HEADLESS)
                : USER_SYSTEM;

        NotificationChannel original = new NotificationChannel("a", "a", IMPORTANCE_HIGH);
        original.setAllowBubbles(!original.canBubble());
        original.setShowBadge(!original.canShowBadge());
@@ -7424,7 +7446,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
                PKG, mUid, orig, "friend");

        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.getId(), friendChannel.getParentChannelId());