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

Commit d23cca99 authored by Evan Severson's avatar Evan Severson Committed by Automerger Merge Worker
Browse files

DO NOT MERGE Use permission group definintion if defined in PermissionController am: f454ed41

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/PackageInstaller/+/11987443

Change-Id: Iebec5ddbaa103d146aab395f26f796161512debf
parents a999ad3c f454ed41
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -268,6 +268,8 @@ public class GrantPermissionsActivity extends Activity
        // Cache this as this can only read on onCreate, not later.
        mCallingPackage = getCallingPackage();

        SafetyNetLogger.logIfHasUndefinedPermissionGroup(getPackageManager(), mCallingPackage);

        setFinishOnTouchOutside(false);

        setTitle(R.string.permission_request_title);
+29 −0
Original line number Diff line number Diff line
@@ -16,10 +16,15 @@

package com.android.packageinstaller.permission.utils;

import android.Manifest;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PermissionInfo;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.EventLog;
import android.util.Log;

import com.android.packageinstaller.permission.model.AppPermissionGroup;
import com.android.packageinstaller.permission.model.Permission;
@@ -37,6 +42,7 @@ public final class SafetyNetLogger {

    // Log tag for the result of permissions toggling.
    private static final String PERMISSIONS_TOGGLED = "individual_permissions_toggled";
    public static final String LOG_TAG = SafetyNetLogger.class.getSimpleName();

    private SafetyNetLogger() {
        /* do nothing */
@@ -129,4 +135,27 @@ public final class SafetyNetLogger {

        return builder.toString();
    }

    /**
     * Log if the given package has defined a permission in the undefined group.
     *
     * @param pm A PackageManager to look up the package.
     * @param packageName The name of the package to check.
     */
    public static void logIfHasUndefinedPermissionGroup(PackageManager pm, String packageName) {
        try { //Avoid crashing for any reason
            PermissionInfo[] permissions =
                    pm.getPackageInfo(packageName, PackageManager.GET_PERMISSIONS).permissions;
            if (permissions == null) {
                return;
            }
            for (PermissionInfo permission : permissions) {
                if (TextUtils.equals(permission.group, Manifest.permission_group.UNDEFINED)) {
                    EventLog.writeEvent(SNET_NET_EVENT_LOG_TAG, "153879813");
                }
            }
        } catch (Throwable e) {
            Log.e(LOG_TAG, "Unable to log undefined permission event for " + packageName + ".", e);
        }
    }
}
+7 −1
Original line number Diff line number Diff line
@@ -316,7 +316,13 @@ public final class Utils {
    public static @NonNull List<PermissionInfo> getPermissionInfosForGroup(
            @NonNull PackageManager pm, @NonNull String group)
            throws PackageManager.NameNotFoundException {
        List<PermissionInfo> permissions = pm.queryPermissionsByGroup(group, 0);
        List<PermissionInfo> permissions = new ArrayList<>();
        for (PermissionInfo permission : pm.queryPermissionsByGroup(group, 0)) {
            // PermissionController's mapping takes precedence
            if (getGroupOfPermission(permission).equals(group)) {
                permissions.add(permission);
            }
        }
        permissions.addAll(getPlatformPermissionsOfGroup(pm, group));

        return permissions;