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

Commit cf32c763 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 5663715 from ded7a130 to qt-qpr1-release

Change-Id: Id103cd6b53188631429d039773a36ed8082780a9
parents 106111b3 ded7a130
Loading
Loading
Loading
Loading
+27 −1
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ package com.android.packageinstaller.permission.ui.handheld;

import static android.content.pm.PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED;

import static com.android.packageinstaller.PermissionControllerStatsLog.REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED;

import android.app.Activity;
import android.content.Intent;
import android.content.IntentSender;
@@ -30,6 +32,7 @@ import android.os.UserHandle;
import android.text.Html;
import android.text.Spanned;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
@@ -42,6 +45,7 @@ import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceGroup;
import androidx.preference.PreferenceScreen;

import com.android.packageinstaller.PermissionControllerStatsLog;
import com.android.packageinstaller.permission.model.AppPermissionGroup;
import com.android.packageinstaller.permission.model.AppPermissions;
import com.android.packageinstaller.permission.model.Permission;
@@ -52,6 +56,7 @@ import com.android.permissioncontroller.R;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * If an app does not support runtime permissions the user is prompted via this fragment to select
@@ -63,6 +68,7 @@ public final class ReviewPermissionsFragment extends PreferenceFragmentCompat

    private static final String EXTRA_PACKAGE_INFO =
            "com.android.packageinstaller.permission.ui.extra.PACKAGE_INFO";
    private static final String LOG_TAG = ReviewPermissionsFragment.class.getSimpleName();

    private AppPermissions mAppPermissions;

@@ -186,6 +192,8 @@ public final class ReviewPermissionsFragment extends PreferenceFragmentCompat
        }

        final int preferenceGroupCount = preferenceGroups.size();
        long changeIdForLogging = new Random().nextLong();

        for (int groupNum = 0; groupNum < preferenceGroupCount; groupNum++) {
            final PreferenceGroup preferenceGroup = preferenceGroups.get(groupNum);

@@ -201,6 +209,7 @@ public final class ReviewPermissionsFragment extends PreferenceFragmentCompat
                    if (group.isReviewRequired() && !permPreference.wasChanged()) {
                        grantReviewedPermission(group);
                    }
                    logReviewPermissionsFragmentResult(changeIdForLogging, group);

                    AppPermissionGroup backgroundGroup = group.getBackgroundPermissions();
                    if (backgroundGroup != null) {
@@ -208,11 +217,11 @@ public final class ReviewPermissionsFragment extends PreferenceFragmentCompat
                        if (backgroundGroup.isReviewRequired() && !permPreference.wasChanged()) {
                            grantReviewedPermission(backgroundGroup);
                        }
                        logReviewPermissionsFragmentResult(changeIdForLogging, backgroundGroup);
                    }
                }
            }
        }

        mAppPermissions.persistChanges(true);

        // Some permission might be restricted and hence there is no AppPermissionGroup for it.
@@ -227,6 +236,23 @@ public final class ReviewPermissionsFragment extends PreferenceFragmentCompat
        }
    }

    private void logReviewPermissionsFragmentResult(long changeId, AppPermissionGroup group) {
        ArrayList<Permission> permissions = group.getPermissions();

        int numPermissions = permissions.size();
        for (int i = 0; i < numPermissions; i++) {
            Permission permission = permissions.get(i);

            PermissionControllerStatsLog.write(REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED,
                    changeId, group.getApp().applicationInfo.uid, group.getApp().packageName,
                    permission.getName(), permission.isGrantedIncludingAppOp());
            Log.v(LOG_TAG, "Permission grant via permission review changeId=" + changeId + " uid="
                    + group.getApp().applicationInfo.uid + " packageName="
                    + group.getApp().packageName + " permission="
                    + permission.getName() + " granted=" + permission.isGrantedIncludingAppOp());
        }
    }

    private void bindUi() {
        Activity activity = getActivity();
        if (activity == null) {