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

Commit 65a0e59d authored by Yuri Lin's avatar Yuri Lin
Browse files

Remove "force user set on upgrade" setting

This is now set to be true everywhere, so we can remove the plumbing that allows it to vary.

Bug: 231715786
Test: NotificationManagerServiceTest, PermissionHelperTest

Change-Id: I8ec9078f2bfacea67bf64e676af2f32417a393b6
parent af798227
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -2998,12 +2998,6 @@

    </string-array>

    <!-- When migrating notification settings into the permission framework, whether all existing
         apps should be marked as 'user-set' (true) or whether only the apps that have explicitly
         modified notification settings should be marked as 'user-set' (false). Users will not see
         system generated permission prompts for 'user-set' apps. -->
    <bool name="config_notificationForceUserSetOnUpgrade">true</bool>

    <!-- Default Gravity setting for the system Toast view. Equivalent to: Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM -->
    <integer name="config_toastDefaultGravity">0x00000051</integer>

+0 −1
Original line number Diff line number Diff line
@@ -4772,7 +4772,6 @@
  <java-symbol type="integer" name="config_bg_current_drain_exempted_types" />
  <java-symbol type="bool" name="config_bg_current_drain_high_threshold_by_bg_location" />
  <java-symbol type="drawable" name="ic_swap_horiz" />
  <java-symbol type="bool" name="config_notificationForceUserSetOnUpgrade" />
  <java-symbol type="array" name="config_deviceStatesAvailableForAppRequests" />

  <!-- For app language picker -->
+1 −7
Original line number Diff line number Diff line
@@ -656,7 +656,6 @@ public class NotificationManagerService extends SystemService {
    private int mWarnRemoteViewsSizeBytes;
    private int mStripRemoteViewsSizeBytes;
    private boolean mForceUserSetOnUpgrade;
    private MetricsLogger mMetricsLogger;
    private NotificationChannelLogger mNotificationChannelLogger;
@@ -2471,9 +2470,6 @@ public class NotificationManagerService extends SystemService {
        WorkerHandler handler = new WorkerHandler(Looper.myLooper());
        mForceUserSetOnUpgrade = getContext().getResources().getBoolean(
                R.bool.config_notificationForceUserSetOnUpgrade);
        init(handler, new RankingHandlerWorker(mRankingThread.getLooper()),
                AppGlobals.getPackageManager(), getContext().getPackageManager(),
                getLocalService(LightsManager.class),
@@ -2502,8 +2498,7 @@ public class NotificationManagerService extends SystemService {
                LocalServices.getService(ActivityManagerInternal.class),
                createToastRateLimiter(), new PermissionHelper(LocalServices.getService(
                        PermissionManagerServiceInternal.class), AppGlobals.getPackageManager(),
                        AppGlobals.getPermissionManager(),
                        mForceUserSetOnUpgrade),
                        AppGlobals.getPermissionManager()),
                LocalServices.getService(UsageStatsManagerInternal.class),
                getContext().getSystemService(TelecomManager.class),
                new NotificationChannelLoggerImpl());
@@ -6146,7 +6141,6 @@ public class NotificationManagerService extends SystemService {
                    pw.println("  mMaxPackageEnqueueRate=" + mMaxPackageEnqueueRate);
                    pw.println("  hideSilentStatusBar="
                            + mPreferencesHelper.shouldHideSilentStatusIcons());
                    pw.println("  mForceUserSetOnUpgrade=" + mForceUserSetOnUpgrade);
                }
                pw.println("  mArchive=" + mArchive.toString());
                mArchive.dumpImpl(pw, filter);
+2 −5
Original line number Diff line number Diff line
@@ -55,14 +55,12 @@ public final class PermissionHelper {
    private final PermissionManagerServiceInternal mPmi;
    private final IPackageManager mPackageManager;
    private final IPermissionManager mPermManager;
    private final boolean mForceUserSetOnUpgrade;

    public PermissionHelper(PermissionManagerServiceInternal pmi, IPackageManager packageManager,
            IPermissionManager permManager, boolean forceUserSetOnUpgrade) {
            IPermissionManager permManager) {
        mPmi = pmi;
        mPackageManager = packageManager;
        mPermManager = permManager;
        mForceUserSetOnUpgrade = forceUserSetOnUpgrade;
    }

    /**
@@ -212,9 +210,8 @@ public final class PermissionHelper {
            return;
        }
        if (!isPermissionFixed(pkgPerm.packageName, pkgPerm.userId)) {
            boolean userSet = mForceUserSetOnUpgrade ? true : pkgPerm.userModifiedSettings;
            setNotificationPermission(pkgPerm.packageName, pkgPerm.userId, pkgPerm.granted,
                    userSet, !userSet);
                    true /* userSet always true on upgrade */);
        }
    }

+1 −64
Original line number Diff line number Diff line
@@ -26,8 +26,6 @@ import static android.content.pm.PackageManager.PERMISSION_GRANTED;

import static com.google.common.truth.Truth.assertThat;

import static junit.framework.Assert.fail;

import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyLong;
@@ -54,7 +52,6 @@ import com.android.server.pm.permission.PermissionManagerServiceInternal;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;

import org.junit.Before;
import org.junit.Test;
@@ -62,14 +59,7 @@ import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.lang.reflect.Parameter;
import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;

@SmallTest
@@ -88,7 +78,7 @@ public class PermissionHelperTest extends UiServiceTestCase {
    @Before
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);
        mPermissionHelper = new PermissionHelper(mPmi, mPackageManager, mPermManager, false);
        mPermissionHelper = new PermissionHelper(mPmi, mPackageManager, mPermManager);
        PackageInfo testPkgInfo = new PackageInfo();
        testPkgInfo.requestedPermissions = new String[]{ Manifest.permission.POST_NOTIFICATIONS };
        when(mPackageManager.getPackageInfo(anyString(), anyLong(), anyInt()))
@@ -211,62 +201,9 @@ public class PermissionHelperTest extends UiServiceTestCase {
                FLAG_PERMISSION_REVIEW_REQUIRED, FLAG_PERMISSION_REVIEW_REQUIRED, true, 10);
    }

    @Test
    public void testSetNotificationPermission_pkgPerm_grantReviewRequired() throws Exception {
        when(mPmi.checkPermission(anyString(), anyString(), anyInt()))
                .thenReturn(PERMISSION_DENIED);

        PermissionHelper.PackagePermission pkgPerm = new PermissionHelper.PackagePermission(
                "pkg", 10, true, false);
        mPermissionHelper.setNotificationPermission(pkgPerm);

        verify(mPermManager, never()).revokeRuntimePermission(
                "pkg", Manifest.permission.POST_NOTIFICATIONS, 10, "PermissionHelper");
        verify(mPermManager).updatePermissionFlags("pkg", Manifest.permission.POST_NOTIFICATIONS,
                FLAG_PERMISSION_REVIEW_REQUIRED, FLAG_PERMISSION_REVIEW_REQUIRED, true, 10);
    }

    @Test
    public void testSetNotificationPermission_pkgPerm_notUserSet_grantedByDefaultPermNotSet()
            throws Exception {
        when(mPmi.checkPermission(anyString(), anyString(), anyInt()))
                .thenReturn(PERMISSION_DENIED);
        when(mPermManager.getPermissionFlags(anyString(),
                eq(Manifest.permission.POST_NOTIFICATIONS),
                anyInt())).thenReturn(FLAG_PERMISSION_GRANTED_BY_DEFAULT);
        PermissionHelper.PackagePermission pkgPerm = new PermissionHelper.PackagePermission(
                "pkg", 10, true, false);

        mPermissionHelper.setNotificationPermission(pkgPerm);
        verify(mPermManager, never()).revokeRuntimePermission(
                anyString(), anyString(), anyInt(), anyString());
        verify(mPermManager, never()).updatePermissionFlags(
                anyString(), anyString(), anyInt(), anyInt(), anyBoolean(), anyInt());
    }

    @Test
    public void testSetNotificationPermission_pkgPerm_userSet_grantedByDefaultPermSet()
            throws Exception {
        when(mPmi.checkPermission(anyString(), anyString(), anyInt()))
                .thenReturn(PERMISSION_DENIED);
        when(mPermManager.getPermissionFlags(anyString(),
                eq(Manifest.permission.POST_NOTIFICATIONS),
                anyInt())).thenReturn(FLAG_PERMISSION_GRANTED_BY_DEFAULT);
        PermissionHelper.PackagePermission pkgPerm = new PermissionHelper.PackagePermission(
                "pkg", 10, true, true);

        mPermissionHelper.setNotificationPermission(pkgPerm);
        verify(mPermManager).grantRuntimePermission(
                "pkg", Manifest.permission.POST_NOTIFICATIONS, 10);
        verify(mPermManager).updatePermissionFlags("pkg", Manifest.permission.POST_NOTIFICATIONS,
                FLAG_PERMISSION_USER_SET | FLAG_PERMISSION_REVIEW_REQUIRED,
                FLAG_PERMISSION_USER_SET, true, 10);
    }

    @Test
    public void testSetNotificationPermission_pkgPerm_grantedByDefaultPermSet_allUserSet()
            throws Exception {
        mPermissionHelper = new PermissionHelper(mPmi, mPackageManager, mPermManager, true);
        when(mPmi.checkPermission(anyString(), anyString(), anyInt()))
                .thenReturn(PERMISSION_DENIED);
        when(mPermManager.getPermissionFlags(anyString(),