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

Commit 2dc83f68 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Allow passing the permission group name to PermissionUsageFragment."

parents 1bd51802 618e0924
Loading
Loading
Loading
Loading
+22 −3
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import com.android.packageinstaller.permission.service.PermissionSearchIndexable
import com.android.packageinstaller.permission.ui.handheld.ManageStandardPermissionsFragment;
import com.android.packageinstaller.permission.ui.handheld.PermissionUsageFragment;
import com.android.packageinstaller.permission.ui.wear.AppPermissionsFragmentWear;
import com.android.packageinstaller.permission.utils.Utils;

public final class ManagePermissionsActivity extends FragmentActivity {
    private static final String LOG_TAG = ManagePermissionsActivity.class.getSimpleName();
@@ -65,10 +66,28 @@ public final class ManagePermissionsActivity extends FragmentActivity {
            case PermissionSearchIndexablesProvider.ACTION_REVIEW_PERMISSION_USAGE:
                verifyIntent(this, getIntent());
                // fall through
            case Intent.ACTION_REVIEW_PERMISSION_USAGE:
            case Intent.ACTION_REVIEW_PERMISSION_USAGE: {
                permissionName = getIntent().getStringExtra(Intent.EXTRA_PERMISSION_NAME);
                androidXFragment = PermissionUsageFragment.newInstance(permissionName);
                break;
                String groupName = getIntent().getStringExtra(Intent.EXTRA_PERMISSION_GROUP_NAME);

                if (permissionName != null) {
                    String permGroupName = Utils.getGroupOfPlatformPermission(permissionName);
                    if (permGroupName == null) {
                        Log.w(LOG_TAG, "Invalid platform permission: " + permissionName);
                    }
                    if (groupName != null && !groupName.equals(permGroupName)) {
                        Log.i(LOG_TAG,
                                "Inconsistent EXTRA_PERMISSION_NAME / EXTRA_PERMISSION_GROUP_NAME");
                        finish();
                        return;
                    }
                    if (groupName == null) {
                        groupName = permGroupName;
                    }
                }

                androidXFragment = PermissionUsageFragment.newInstance(groupName);
            } break;

            case Intent.ACTION_MANAGE_APP_PERMISSIONS: {
                String packageName = getIntent().getStringExtra(Intent.EXTRA_PACKAGE_NAME);
+18 −13
Original line number Diff line number Diff line
@@ -125,10 +125,10 @@ public class PermissionUsageFragment extends PermissionsFrameFragment implements
    private FilterSpinnerAdapter<SortItem> mSortAdapter;

    /**
     * Only used to restore group selection state after onCreate. Once the first list of groups
     * is reported, this becomes invalid.
     * Only used to restore permission selection state or use the passed permission after onCreate.
     * Once the first list of groups is reported, this becomes invalid.
     */
    private String mSavedGroup;
    private String mSavedGroupName;

    /**
     * Only used to restore time spinner state after onCreate. Once the list of times is reported,
@@ -145,11 +145,11 @@ public class PermissionUsageFragment extends PermissionsFrameFragment implements
    /**
     * @return A new fragment
     */
    public static @NonNull PermissionUsageFragment newInstance(@Nullable String permissionName) {
    public static @NonNull PermissionUsageFragment newInstance(@Nullable String groupName) {
        PermissionUsageFragment fragment = new PermissionUsageFragment();
        Bundle arguments = new Bundle();
        if (permissionName != null) {
            arguments.putString(Intent.EXTRA_PERMISSION_NAME, permissionName);
        if (groupName != null) {
            arguments.putString(Intent.EXTRA_PERMISSION_GROUP_NAME, groupName);
        }
        fragment.setArguments(arguments);
        return fragment;
@@ -167,7 +167,7 @@ public class PermissionUsageFragment extends PermissionsFrameFragment implements

        if (savedInstanceState != null) {
            mShowSystem = savedInstanceState.getBoolean(SHOW_SYSTEM_KEY);
            mSavedGroup = savedInstanceState.getString(PERMS_INDEX_KEY);
            mSavedGroupName = savedInstanceState.getString(PERMS_INDEX_KEY);
            mSavedTimeSpinnerIndex = savedInstanceState.getInt(SPINNER_TIME_INDEX_KEY);
            mSavedSortSpinnerIndex = savedInstanceState.getInt(SPINNER_SORT_INDEX_KEY);
        }
@@ -179,6 +179,10 @@ public class PermissionUsageFragment extends PermissionsFrameFragment implements
            ab.setDisplayHomeAsUpEnabled(true);
        }

        if (mSavedGroupName == null) {
            mSavedGroupName = getArguments().getString(Intent.EXTRA_PERMISSION_GROUP_NAME);
        }

        Context context = getPreferenceManager().getContext();
        mFilterGroup = null;
        mCollator = Collator.getInstance(
@@ -313,12 +317,13 @@ public class PermissionUsageFragment extends PermissionsFrameFragment implements
        }

        // Use the saved permission group or the one passed as an argument, if applicable.
        mFilterGroup = mSavedGroup;
        if (mFilterGroup == null) {
            String permName = getArguments().getString(Intent.EXTRA_PERMISSION_NAME);
            mFilterGroup = Utils.getGroupOfPlatformPermission(permName);
            if (mFilterGroup == null) {
                Log.w(LOG_TAG, "Invalid platform permission: " + permName);
        if (mSavedGroupName != null && mFilterGroup == null) {
            List<AppPermissionGroup> groups = getOSPermissionGroups();
            int numGroups = groups.size();
            for (int i = 0; i < numGroups; i++) {
                if (groups.get(i).getName().equals(mSavedGroupName)) {
                    mFilterGroup = mSavedGroupName;
                }
            }
        }