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

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

Merge changes from topic "perm_query"

* changes:
  Move add/remove permission
  Move permission info queries
parents 6930cc7e 6ffc5a6e
Loading
Loading
Loading
Loading
+43 −44
Original line number Diff line number Diff line
@@ -321,30 +321,60 @@ public class ApplicationPackageManager extends PackageManager {
    }

    @Override
    public PermissionInfo getPermissionInfo(String name, int flags)
    @SuppressWarnings("unchecked")
    public List<PermissionGroupInfo> getAllPermissionGroups(int flags) {
        try {
            final ParceledListSlice<PermissionGroupInfo> parceledList =
                    mPermissionManager.getAllPermissionGroups(flags);
            if (parceledList == null) {
                return Collections.emptyList();
            }
            return parceledList.getList();
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    @Override
    public PermissionGroupInfo getPermissionGroupInfo(String groupName, int flags)
            throws NameNotFoundException {
        try {
            PermissionInfo pi = mPM.getPermissionInfo(name,
                    mContext.getOpPackageName(), flags);
            final PermissionGroupInfo pgi =
                    mPermissionManager.getPermissionGroupInfo(groupName, flags);
            if (pgi != null) {
                return pgi;
            }
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
        throw new NameNotFoundException(groupName);
    }

    @Override
    public PermissionInfo getPermissionInfo(String permName, int flags)
            throws NameNotFoundException {
        try {
            final String packageName = mContext.getOpPackageName();
            final PermissionInfo pi =
                    mPermissionManager.getPermissionInfo(permName, packageName, flags);
            if (pi != null) {
                return pi;
            }
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }

        throw new NameNotFoundException(name);
        throw new NameNotFoundException(permName);
    }

    @Override
    @SuppressWarnings("unchecked")
    public List<PermissionInfo> queryPermissionsByGroup(String group, int flags)
    public List<PermissionInfo> queryPermissionsByGroup(String groupName, int flags)
            throws NameNotFoundException {
        try {
            ParceledListSlice<PermissionInfo> parceledList =
                    mPM.queryPermissionsByGroup(group, flags);
            final ParceledListSlice<PermissionInfo> parceledList =
                    mPermissionManager.queryPermissionsByGroup(groupName, flags);
            if (parceledList != null) {
                List<PermissionInfo> pi = parceledList.getList();
                final List<PermissionInfo> pi = parceledList.getList();
                if (pi != null) {
                    return pi;
                }
@@ -352,8 +382,7 @@ public class ApplicationPackageManager extends PackageManager {
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }

        throw new NameNotFoundException(group);
        throw new NameNotFoundException(groupName);
    }

    @Override
@@ -368,36 +397,6 @@ public class ApplicationPackageManager extends PackageManager {
                com.android.internal.R.bool.config_wirelessConsentRequired);
    }

    @Override
    public PermissionGroupInfo getPermissionGroupInfo(String name,
            int flags) throws NameNotFoundException {
        try {
            PermissionGroupInfo pgi = mPM.getPermissionGroupInfo(name, flags);
            if (pgi != null) {
                return pgi;
            }
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }

        throw new NameNotFoundException(name);
    }

    @Override
    @SuppressWarnings("unchecked")
    public List<PermissionGroupInfo> getAllPermissionGroups(int flags) {
        try {
            ParceledListSlice<PermissionGroupInfo> parceledList =
                    mPM.getAllPermissionGroups(flags);
            if (parceledList == null) {
                return Collections.emptyList();
            }
            return parceledList.getList();
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    @Override
    public ApplicationInfo getApplicationInfo(String packageName, int flags)
            throws NameNotFoundException {
@@ -662,7 +661,7 @@ public class ApplicationPackageManager extends PackageManager {
    @Override
    public boolean addPermission(PermissionInfo info) {
        try {
            return mPM.addPermission(info);
            return mPermissionManager.addPermission(info, false);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
@@ -671,7 +670,7 @@ public class ApplicationPackageManager extends PackageManager {
    @Override
    public boolean addPermissionAsync(PermissionInfo info) {
        try {
            return mPM.addPermissionAsync(info);
            return mPermissionManager.addPermission(info, true);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
@@ -680,7 +679,7 @@ public class ApplicationPackageManager extends PackageManager {
    @Override
    public void removePermission(String name) {
        try {
            mPM.removePermission(name);
            mPermissionManager.removePermission(name);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
+12 −18
Original line number Diff line number Diff line
@@ -78,15 +78,6 @@ interface IPackageManager {
    @UnsupportedAppUsage
    String[] canonicalToCurrentPackageNames(in String[] names);

    PermissionInfo getPermissionInfo(String name, String packageName, int flags);

    ParceledListSlice queryPermissionsByGroup(String group, int flags);

    @UnsupportedAppUsage
    PermissionGroupInfo getPermissionGroupInfo(String name, int flags);

    ParceledListSlice getAllPermissionGroups(int flags);

    @UnsupportedAppUsage
    ApplicationInfo getApplicationInfo(String packageName, int flags ,int userId);

@@ -110,12 +101,6 @@ interface IPackageManager {

    int checkUidPermission(String permName, int uid);

    @UnsupportedAppUsage
    boolean addPermission(in PermissionInfo info);

    @UnsupportedAppUsage
    void removePermission(String name);

    @UnsupportedAppUsage
    void grantRuntimePermission(String packageName, String permissionName, int userId);

@@ -623,9 +608,6 @@ interface IPackageManager {
    int movePackage(in String packageName, in String volumeUuid);
    int movePrimaryStorage(in String volumeUuid);

    @UnsupportedAppUsage
    boolean addPermissionAsync(in PermissionInfo info);

    boolean setInstallLocation(int loc);
    @UnsupportedAppUsage
    int getInstallLocation();
@@ -777,4 +759,16 @@ interface IPackageManager {
    //------------------------------------------------------------------------
    @UnsupportedAppUsage
    String[] getAppOpPermissionPackages(String permissionName);

    @UnsupportedAppUsage
    PermissionGroupInfo getPermissionGroupInfo(String name, int flags);

    @UnsupportedAppUsage
    boolean addPermission(in PermissionInfo info);

    @UnsupportedAppUsage
    boolean addPermissionAsync(in PermissionInfo info);

    @UnsupportedAppUsage
    void removePermission(String name);
}
+7 −0
Original line number Diff line number Diff line
@@ -999,4 +999,11 @@ public abstract class PackageManagerInternal {
     * Migrates legacy obb data to its new location.
     */
    public abstract void migrateLegacyObbData();

    /**
     * Writes all package manager settings to disk. If {@code async} is {@code true}, the
     * settings are written at some point in the future. Otherwise, the call blocks until
     * the settings have been written.
     */
    public abstract void writeSettings(boolean async);
}
+16 −0
Original line number Diff line number Diff line
@@ -16,6 +16,10 @@

package android.permission;

import android.content.pm.ParceledListSlice;
import android.content.pm.PermissionGroupInfo;
import android.content.pm.PermissionInfo;

/**
 * Interface to communicate directly with the permission manager service.
 * @see PermissionManager
@@ -23,4 +27,16 @@ package android.permission;
 */
interface IPermissionManager {
    String[] getAppOpPermissionPackages(String permName);

    ParceledListSlice getAllPermissionGroups(int flags);

    PermissionGroupInfo getPermissionGroupInfo(String groupName, int flags);

    PermissionInfo getPermissionInfo(String permName, String packageName, int flags);

    ParceledListSlice queryPermissionsByGroup(String groupName, int flags);

    boolean addPermission(in PermissionInfo info, boolean async);

    void removePermission(String name);
}
+2 −2
Original line number Diff line number Diff line
@@ -30,7 +30,6 @@ import android.content.IIntentSender;
import android.content.Intent;
import android.content.IntentSender;
import android.content.pm.ActivityInfo;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.content.pm.PermissionInfo;
import android.content.pm.ResolveInfo;
@@ -44,6 +43,7 @@ import android.os.RemoteException;
import android.os.SystemClock;
import android.os.Trace;
import android.os.UserHandle;
import android.permission.IPermissionManager;
import android.util.EventLog;
import android.util.Slog;
import android.util.SparseIntArray;
@@ -921,7 +921,7 @@ public final class BroadcastQueue {
        if (perms == null) {
            return false;
        }
        IPackageManager pm = AppGlobals.getPackageManager();
        IPermissionManager pm = AppGlobals.getPermissionManager();
        for (int i = perms.length-1; i >= 0; i--) {
            try {
                PermissionInfo pi = pm.getPermissionInfo(perms[i], "android", 0);
Loading