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

Commit 4e881aec authored by Nate Myren's avatar Nate Myren Committed by Automerger Merge Worker
Browse files

Merge "Do not launch legacy notification dialog if permission is granted" into...

Merge "Do not launch legacy notification dialog if permission is granted" into tm-dev am: c5026d42

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17263317

Change-Id: I481d98754c36785b3c5d7fbf6ecb9079cefb7b45
parents 840bf0ab c5026d42
Loading
Loading
Loading
Loading
+10 −7
Original line number Original line Diff line number Diff line
@@ -153,9 +153,10 @@ public final class PermissionPolicyService extends SystemService {


    private List<String> mAppOpPermissions;
    private List<String> mAppOpPermissions;


    private Context mContext;
    private final Context mContext;
    private Handler mHandler;
    private final Handler mHandler;
    private PackageManagerInternal mPackageManagerInternal;
    private PackageManagerInternal mPackageManagerInternal;
    private PermissionManagerServiceInternal mPermissionManagerInternal;
    private NotificationManagerInternal mNotificationManager;
    private NotificationManagerInternal mNotificationManager;
    private final KeyguardManager mKeyguardManager;
    private final KeyguardManager mKeyguardManager;
    private final PackageManager mPackageManager;
    private final PackageManager mPackageManager;
@@ -174,7 +175,7 @@ public final class PermissionPolicyService extends SystemService {
    public void onStart() {
    public void onStart() {
        mPackageManagerInternal = LocalServices.getService(
        mPackageManagerInternal = LocalServices.getService(
                PackageManagerInternal.class);
                PackageManagerInternal.class);
        PermissionManagerServiceInternal permissionManagerInternal = LocalServices.getService(
        mPermissionManagerInternal = LocalServices.getService(
                PermissionManagerServiceInternal.class);
                PermissionManagerServiceInternal.class);
        final IAppOpsService appOpsService = IAppOpsService.Stub.asInterface(
        final IAppOpsService appOpsService = IAppOpsService.Stub.asInterface(
                ServiceManager.getService(Context.APP_OPS_SERVICE));
                ServiceManager.getService(Context.APP_OPS_SERVICE));
@@ -206,7 +207,7 @@ public final class PermissionPolicyService extends SystemService {
            }
            }
        });
        });


        permissionManagerInternal.addOnRuntimePermissionStateChangedListener(
        mPermissionManagerInternal.addOnRuntimePermissionStateChangedListener(
                this::synchronizePackagePermissionsAndAppOpsAsyncForUser);
                this::synchronizePackagePermissionsAndAppOpsAsyncForUser);


        mAppOpsCallback = new IAppOpsCallback.Stub() {
        mAppOpsCallback = new IAppOpsCallback.Stub() {
@@ -218,7 +219,7 @@ public final class PermissionPolicyService extends SystemService {
        };
        };


        final ArrayList<PermissionInfo> dangerousPerms =
        final ArrayList<PermissionInfo> dangerousPerms =
                permissionManagerInternal.getAllPermissionsWithProtection(
                mPermissionManagerInternal.getAllPermissionsWithProtection(
                        PermissionInfo.PROTECTION_DANGEROUS);
                        PermissionInfo.PROTECTION_DANGEROUS);
        try {
        try {
            int numDangerousPerms = dangerousPerms.size();
            int numDangerousPerms = dangerousPerms.size();
@@ -243,7 +244,7 @@ public final class PermissionPolicyService extends SystemService {
        }
        }


        final List<PermissionInfo> appOpPermissionInfos =
        final List<PermissionInfo> appOpPermissionInfos =
                permissionManagerInternal.getAllPermissionsWithProtectionFlags(
                mPermissionManagerInternal.getAllPermissionsWithProtectionFlags(
                        PermissionInfo.PROTECTION_FLAG_APPOP);
                        PermissionInfo.PROTECTION_FLAG_APPOP);
        mAppOpPermissions = new ArrayList<>();
        mAppOpPermissions = new ArrayList<>();
        final int appOpPermissionInfosSize = appOpPermissionInfos.size();
        final int appOpPermissionInfosSize = appOpPermissionInfos.size();
@@ -1283,10 +1284,12 @@ public final class PermissionPolicyService extends SystemService {
            }
            }
            boolean hasCreatedNotificationChannels = mNotificationManager
            boolean hasCreatedNotificationChannels = mNotificationManager
                    .getNumNotificationChannelsForPackage(pkgName, uid, true) > 0;
                    .getNumNotificationChannelsForPackage(pkgName, uid, true) > 0;
            boolean granted = mPermissionManagerInternal.checkUidPermission(uid, POST_NOTIFICATIONS)
                    == PackageManager.PERMISSION_GRANTED;
            int flags = mPackageManager.getPermissionFlags(POST_NOTIFICATIONS, pkgName, user);
            int flags = mPackageManager.getPermissionFlags(POST_NOTIFICATIONS, pkgName, user);
            boolean explicitlySet = (flags & PermissionManager.EXPLICIT_SET_FLAGS) != 0;
            boolean explicitlySet = (flags & PermissionManager.EXPLICIT_SET_FLAGS) != 0;
            boolean needsReview = (flags & FLAG_PERMISSION_REVIEW_REQUIRED) != 0;
            boolean needsReview = (flags & FLAG_PERMISSION_REVIEW_REQUIRED) != 0;
            return hasCreatedNotificationChannels && (needsReview || !explicitlySet);
            return !granted && hasCreatedNotificationChannels && (needsReview || !explicitlySet);
        }
        }
    }
    }
}
}