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

Commit 88cbf438 authored by Hai Zhang's avatar Hai Zhang Committed by Automerger Merge Worker
Browse files

Merge "Fix multi-user handling in PermissionPolicyService." into udc-dev am: f210b1bc

parents 2ffd329a f210b1bc
Loading
Loading
Loading
Loading
+24 −13
Original line number Diff line number Diff line
@@ -194,29 +194,40 @@ public final class PermissionPolicyService extends SystemService {

        mPackageManagerInternal.getPackageList(new PackageListObserver() {
            @Override
            public void onPackageAdded(String packageName, int uid) {
                final int userId = UserHandle.getUserId(uid);
            public void onPackageAdded(String packageName, int appId) {
                final int[] userIds = LocalServices.getService(UserManagerInternal.class)
                        .getUserIds();
                for (final int userId : userIds) {
                    if (isStarted(userId)) {
                        synchronizePackagePermissionsAndAppOpsForUser(packageName, userId);
                    }
                }
            }

            @Override
            public void onPackageChanged(String packageName, int uid) {
                final int userId = UserHandle.getUserId(uid);
            public void onPackageChanged(String packageName, int appId) {
                final int[] userIds = LocalServices.getService(UserManagerInternal.class)
                        .getUserIds();
                for (final int userId : userIds) {
                    if (isStarted(userId)) {
                        synchronizePackagePermissionsAndAppOpsForUser(packageName, userId);
                        final int uid = UserHandle.getUid(userId, appId);
                        resetAppOpPermissionsIfNotRequestedForUid(uid);
                    }
                }
            }

            @Override
            public void onPackageRemoved(String packageName, int uid) {
                final int userId = UserHandle.getUserId(uid);
            public void onPackageRemoved(String packageName, int appId) {
                final int[] userIds = LocalServices.getService(UserManagerInternal.class)
                        .getUserIds();
                for (final int userId : userIds) {
                    if (isStarted(userId)) {
                        final int uid = UserHandle.getUid(userId, appId);
                        resetAppOpPermissionsIfNotRequestedForUid(uid);
                    }
                }
            }
        });

        mPermissionManagerInternal.addOnRuntimePermissionStateChangedListener(