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

Commit 6ffc5a6e authored by Todd Kennedy's avatar Todd Kennedy
Browse files

Move add/remove permission

Bug: 135279435
Test: atest android.content.pm.cts.PackageManagerTest
Change-Id: I40a6d592031483a6dfe61906f6fa011c91910328
parent 1d29b4af
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -661,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();
        }
@@ -670,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();
        }
@@ -679,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();
        }
+9 −9
Original line number Diff line number Diff line
@@ -101,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);

@@ -614,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();
@@ -771,4 +762,13 @@ interface IPackageManager {

    @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);
}
+4 −0
Original line number Diff line number Diff line
@@ -35,4 +35,8 @@ interface IPermissionManager {
    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);
}
+31 −21
Original line number Diff line number Diff line
@@ -5695,37 +5695,36 @@ public class PackageManagerService extends IPackageManager.Stub
        }
    }
    private boolean addDynamicPermission(PermissionInfo info, final boolean async) {
        return mPermissionManager.addDynamicPermission(
                info, async, getCallingUid(), new PermissionCallback() {
                    @Override
                    public void onPermissionChanged() {
                        if (!async) {
                            mSettings.writeLPr();
                        } else {
                            scheduleWriteSettingsLocked();
                        }
                    }
                });
    }
    // NOTE: Can't remove due to unsupported app usage
    @Override
    public boolean addPermission(PermissionInfo info) {
        synchronized (mPackages) {
            return addDynamicPermission(info, false);
        }
        try {
            // Because this is accessed via the package manager service AIDL,
            // go through the permission manager service AIDL
            return mPermissionManagerService.addPermission(info, false);
        } catch (RemoteException ignore) { }
        return false;
    }
    // NOTE: Can't remove due to unsupported app usage
    @Override
    public boolean addPermissionAsync(PermissionInfo info) {
        synchronized (mPackages) {
            return addDynamicPermission(info, true);
        }
        try {
            // Because this is accessed via the package manager service AIDL,
            // go through the permission manager service AIDL
            return mPermissionManagerService.addPermission(info, true);
        } catch (RemoteException ignore) { }
        return false;
    }
    // NOTE: Can't remove due to unsupported app usage
    @Override
    public void removePermission(String permName) {
        mPermissionManager.removeDynamicPermission(permName, getCallingUid(), mPermissionCallback);
        try {
            // Because this is accessed via the package manager service AIDL,
            // go through the permission manager service AIDL
            mPermissionManagerService.removePermission(permName);
        } catch (RemoteException ignore) { }
    }
    @Override
@@ -25006,6 +25005,17 @@ public class PackageManagerService extends IPackageManager.Stub
                Slog.wtf(TAG, e);
            }
        }
        @Override
        public void writeSettings(boolean async) {
            synchronized (mPackages) {
                if (async) {
                    scheduleWriteSettingsLocked();
                } else {
                    mSettings.writeLPr();
                }
            }
        }
    }
    @GuardedBy("mPackages")
Loading