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

Commit ab936c22 authored by Shijian Li's avatar Shijian Li Committed by android-build-merger
Browse files

Partial cherry-pick changes on permission model change.

am: b8e4193e

Change-Id: I7c041014a0804c18cb2e26d07b4b1454b86d4cf8
parents f2c2bcf2 b8e4193e
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -353,7 +353,7 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
                    // no longer has it fixed in a denied state.
                    if (permission.isUserFixed() || permission.isUserSet()) {
                        permission.setUserFixed(false);
                        permission.setUserSet(true);
                        permission.setUserSet(false);
                        mPackageManager.updatePermissionFlags(permission.getName(),
                                mPackageInfo.packageName,
                                PackageManager.FLAG_PERMISSION_USER_FIXED
@@ -538,11 +538,11 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
        final int permissionCount = mPermissions.size();
        for (int i = 0; i < permissionCount; i++) {
            Permission permission = mPermissions.valueAt(i);
            if (!permission.isUserFixed()) {
                return false;
            if (permission.isUserFixed()) {
                return true;
            }
        }
        return true;
        return false;
    }

    public boolean isPolicyFixed() {
@@ -560,11 +560,11 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
        final int permissionCount = mPermissions.size();
        for (int i = 0; i < permissionCount; i++) {
            Permission permission = mPermissions.valueAt(i);
            if (!permission.isUserSet()) {
                return false;
            if (permission.isUserSet()) {
                return true;
            }
        }
        return true;
        return false;
    }

    public boolean isSystemFixed() {
+18 −25
Original line number Diff line number Diff line
@@ -48,11 +48,11 @@ public final class AppPermissions {

    private PackageInfo mPackageInfo;

    public AppPermissions(Context context, PackageInfo packageInfo, String[] permissions,
    public AppPermissions(Context context, PackageInfo packageInfo, String[] filterPermissions,
            boolean sortGroups, Runnable onErrorCallback) {
        mContext = context;
        mPackageInfo = packageInfo;
        mFilterPermissions = permissions;
        mFilterPermissions = filterPermissions;
        mAppLabel = BidiFormatter.getInstance().unicodeWrap(
                packageInfo.applicationInfo.loadSafeLabel(
                context.getPackageManager()).toString());
@@ -122,34 +122,13 @@ public final class AppPermissions {
                    if (!filterPermission.equals(requestedPerm)) {
                        continue;
                    }

                    if (hasGroupForPermission(requestedPerm)) {
                        break;
                    }

                    AppPermissionGroup group = AppPermissionGroup.create(mContext,
                            mPackageInfo, requestedPerm);
                    if (group == null) {
                        break;
                    }

                    mGroups.add(group);
                    addPermissionGroupIfNeeded(requestedPerm);
                    break;
                }
            }
        } else {
            for (String requestedPerm : mPackageInfo.requestedPermissions) {
                if (hasGroupForPermission(requestedPerm)) {
                    continue;
                }

                AppPermissionGroup group = AppPermissionGroup.create(mContext,
                        mPackageInfo, requestedPerm);
                if (group == null) {
                    continue;
                }

                mGroups.add(group);
                addPermissionGroupIfNeeded(requestedPerm);
            }
        }

@@ -163,6 +142,20 @@ public final class AppPermissions {
        }
    }

    private void addPermissionGroupIfNeeded(String permission) {
        if (hasGroupForPermission(permission)) {
            return;
        }

        AppPermissionGroup group = AppPermissionGroup.create(mContext,
                mPackageInfo, permission);
        if (group == null) {
            return;
        }

        mGroups.add(group);
    }

    private boolean hasGroupForPermission(String permission) {
        for (AppPermissionGroup group : mGroups) {
            if (group.hasPermission(permission)) {
+1 −1
Original line number Diff line number Diff line
@@ -210,7 +210,7 @@ public final class AppPermissionsFragmentWear extends PreferenceFragment {
            if((Boolean) newVal) {
                group.grantRuntimePermissions(false, new String[]{ perm.name });
            } else {
                group.revokeRuntimePermissions(false, new String[]{ perm.name });
                group.revokeRuntimePermissions(true, new String[]{ perm.name });
            }
            return true;
        });