Loading src/com/android/packageinstaller/permission/model/AppPermissions.java +28 −30 Original line number Diff line number Diff line Loading @@ -19,16 +19,18 @@ package com.android.packageinstaller.permission.model; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.util.ArrayMap; import com.android.internal.util.ArrayUtils; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; public final class AppPermissions { private final ArrayList<AppPermissionGroup> mGroups = new ArrayList<>(); private final LinkedHashMap<String, AppPermissionGroup> mNameToGroupMap = new LinkedHashMap<>(); private final ArrayMap<String, AppPermissionGroup> mNameToGroupMap = new ArrayMap<>(); private final Context mContext; Loading Loading @@ -93,40 +95,36 @@ public final class AppPermissions { return; } if (mFilterPermissions != null) { for (String filterPermission : mFilterPermissions) { for (String requestedPerm : mPackageInfo.requestedPermissions) { if (!filterPermission.equals(requestedPerm)) { continue; } for (int i = 0; i < mPackageInfo.requestedPermissions.length; i++) { String requestedPerm = mPackageInfo.requestedPermissions[i]; if (hasGroupForPermission(requestedPerm)) { break; continue; } AppPermissionGroup group = AppPermissionGroup.create(mContext, mPackageInfo, requestedPerm); if (group == null) { break; continue; } mGroups.add(group); } if (!ArrayUtils.isEmpty(mFilterPermissions)) { final int groupCount = mGroups.size(); for (int i = groupCount - 1; i >= 0; i--) { AppPermissionGroup group = mGroups.get(i); boolean groupHasPermission = false; for (String filterPerm : mFilterPermissions) { if (group.hasPermission(filterPerm)) { groupHasPermission = true; break; } } } else { for (String requestedPerm : mPackageInfo.requestedPermissions) { if (hasGroupForPermission(requestedPerm)) { continue; if (!groupHasPermission) { mGroups.remove(i); } AppPermissionGroup group = AppPermissionGroup.create(mContext, mPackageInfo, requestedPerm); if (group == null) { continue; } mGroups.add(group); } } Loading src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java +8 −10 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.hardware.camera2.utils.ArrayUtils; import android.os.Bundle; import android.text.SpannableString; import android.text.style.ForegroundColorSpan; import android.util.ArrayMap; import android.util.Log; import android.view.KeyEvent; import android.view.MotionEvent; Loading @@ -46,7 +47,6 @@ import com.android.packageinstaller.permission.utils.SafetyNetLogger; import com.android.packageinstaller.permission.utils.Utils; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; public class GrantPermissionsActivity extends OverlayTouchActivity Loading @@ -57,7 +57,7 @@ public class GrantPermissionsActivity extends OverlayTouchActivity private String[] mRequestedPermissions; private int[] mGrantResults; private LinkedHashMap<String, GroupState> mRequestGrantPermissionGroups = new LinkedHashMap<>(); private ArrayMap<String, GroupState> mRequestGrantPermissionGroups = new ArrayMap<>(); private GrantPermissionsViewHandler mViewHandler; private AppPermissions mAppPermissions; Loading Loading @@ -187,8 +187,8 @@ public class GrantPermissionsActivity extends OverlayTouchActivity private boolean showNextPermissionGroupGrantRequest() { final int groupCount = mRequestGrantPermissionGroups.size(); int currentIndex = 0; for (GroupState groupState : mRequestGrantPermissionGroups.values()) { for (int i = 0; i < groupCount; i++) { GroupState groupState = mRequestGrantPermissionGroups.valueAt(i); if (groupState.mState == GroupState.STATE_UNKNOWN) { CharSequence appLabel = mAppPermissions.getAppLabel(); SpannableString message = new SpannableString(getString( Loading @@ -215,13 +215,11 @@ public class GrantPermissionsActivity extends OverlayTouchActivity } int icon = groupState.mGroup.getIconResId(); mViewHandler.updateUi(groupState.mGroup.getName(), groupCount, currentIndex, mViewHandler.updateUi(groupState.mGroup.getName(), groupCount, i, Icon.createWithResource(resources, icon), message, groupState.mGroup.isUserSet()); return true; } currentIndex++; } return false; Loading Loading @@ -361,8 +359,8 @@ public class GrantPermissionsActivity extends OverlayTouchActivity final int groupCount = mRequestGrantPermissionGroups.size(); List<AppPermissionGroup> groups = new ArrayList<>(groupCount); for (GroupState groupState : mRequestGrantPermissionGroups.values()) { groups.add(groupState.mGroup); for (int i = 0; i < groupCount; i++) { groups.add(mRequestGrantPermissionGroups.valueAt(i).mGroup); } SafetyNetLogger.logPermissionsRequested(mAppPermissions.getPackageInfo(), groups); Loading Loading
src/com/android/packageinstaller/permission/model/AppPermissions.java +28 −30 Original line number Diff line number Diff line Loading @@ -19,16 +19,18 @@ package com.android.packageinstaller.permission.model; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.util.ArrayMap; import com.android.internal.util.ArrayUtils; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; public final class AppPermissions { private final ArrayList<AppPermissionGroup> mGroups = new ArrayList<>(); private final LinkedHashMap<String, AppPermissionGroup> mNameToGroupMap = new LinkedHashMap<>(); private final ArrayMap<String, AppPermissionGroup> mNameToGroupMap = new ArrayMap<>(); private final Context mContext; Loading Loading @@ -93,40 +95,36 @@ public final class AppPermissions { return; } if (mFilterPermissions != null) { for (String filterPermission : mFilterPermissions) { for (String requestedPerm : mPackageInfo.requestedPermissions) { if (!filterPermission.equals(requestedPerm)) { continue; } for (int i = 0; i < mPackageInfo.requestedPermissions.length; i++) { String requestedPerm = mPackageInfo.requestedPermissions[i]; if (hasGroupForPermission(requestedPerm)) { break; continue; } AppPermissionGroup group = AppPermissionGroup.create(mContext, mPackageInfo, requestedPerm); if (group == null) { break; continue; } mGroups.add(group); } if (!ArrayUtils.isEmpty(mFilterPermissions)) { final int groupCount = mGroups.size(); for (int i = groupCount - 1; i >= 0; i--) { AppPermissionGroup group = mGroups.get(i); boolean groupHasPermission = false; for (String filterPerm : mFilterPermissions) { if (group.hasPermission(filterPerm)) { groupHasPermission = true; break; } } } else { for (String requestedPerm : mPackageInfo.requestedPermissions) { if (hasGroupForPermission(requestedPerm)) { continue; if (!groupHasPermission) { mGroups.remove(i); } AppPermissionGroup group = AppPermissionGroup.create(mContext, mPackageInfo, requestedPerm); if (group == null) { continue; } mGroups.add(group); } } Loading
src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java +8 −10 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.hardware.camera2.utils.ArrayUtils; import android.os.Bundle; import android.text.SpannableString; import android.text.style.ForegroundColorSpan; import android.util.ArrayMap; import android.util.Log; import android.view.KeyEvent; import android.view.MotionEvent; Loading @@ -46,7 +47,6 @@ import com.android.packageinstaller.permission.utils.SafetyNetLogger; import com.android.packageinstaller.permission.utils.Utils; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; public class GrantPermissionsActivity extends OverlayTouchActivity Loading @@ -57,7 +57,7 @@ public class GrantPermissionsActivity extends OverlayTouchActivity private String[] mRequestedPermissions; private int[] mGrantResults; private LinkedHashMap<String, GroupState> mRequestGrantPermissionGroups = new LinkedHashMap<>(); private ArrayMap<String, GroupState> mRequestGrantPermissionGroups = new ArrayMap<>(); private GrantPermissionsViewHandler mViewHandler; private AppPermissions mAppPermissions; Loading Loading @@ -187,8 +187,8 @@ public class GrantPermissionsActivity extends OverlayTouchActivity private boolean showNextPermissionGroupGrantRequest() { final int groupCount = mRequestGrantPermissionGroups.size(); int currentIndex = 0; for (GroupState groupState : mRequestGrantPermissionGroups.values()) { for (int i = 0; i < groupCount; i++) { GroupState groupState = mRequestGrantPermissionGroups.valueAt(i); if (groupState.mState == GroupState.STATE_UNKNOWN) { CharSequence appLabel = mAppPermissions.getAppLabel(); SpannableString message = new SpannableString(getString( Loading @@ -215,13 +215,11 @@ public class GrantPermissionsActivity extends OverlayTouchActivity } int icon = groupState.mGroup.getIconResId(); mViewHandler.updateUi(groupState.mGroup.getName(), groupCount, currentIndex, mViewHandler.updateUi(groupState.mGroup.getName(), groupCount, i, Icon.createWithResource(resources, icon), message, groupState.mGroup.isUserSet()); return true; } currentIndex++; } return false; Loading Loading @@ -361,8 +359,8 @@ public class GrantPermissionsActivity extends OverlayTouchActivity final int groupCount = mRequestGrantPermissionGroups.size(); List<AppPermissionGroup> groups = new ArrayList<>(groupCount); for (GroupState groupState : mRequestGrantPermissionGroups.values()) { groups.add(groupState.mGroup); for (int i = 0; i < groupCount; i++) { groups.add(mRequestGrantPermissionGroups.valueAt(i).mGroup); } SafetyNetLogger.logPermissionsRequested(mAppPermissions.getPackageInfo(), groups); Loading