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

Commit bcb47eb6 authored by Yuri Lin's avatar Yuri Lin Committed by Android (Google) Code Review
Browse files

Merge "Remove "force user set on upgrade" setting" into tm-dev

parents ae05ae14 65a0e59d
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
@@ -4776,7 +4776,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" />
  <java-symbol type="array" name="config_serviceStateLocationAllowedPackages" />

+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;
@@ -2472,9 +2471,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),
@@ -2503,8 +2499,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());
@@ -6153,7 +6148,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(),