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

Commit 3ff3e75f authored by Todd Kennedy's avatar Todd Kennedy Committed by android-build-merger
Browse files

Merge "Add native bindings for getNamesForUids" into oc-mr1-dev

am: 8c18e1fa

Change-Id: If0d1dc60455c961215454a5b2edcb59c0097add4
parents b208d5c4 8c18e1fa
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -172,6 +172,7 @@ LOCAL_SRC_FILES += \
	core/java/android/content/pm/IPackageInstallerCallback.aidl \
	core/java/android/content/pm/IPackageInstallerSession.aidl \
	core/java/android/content/pm/IPackageManager.aidl \
	../native/libs/binder/aidl/android/content/pm/IPackageManagerNative.aidl \
	core/java/android/content/pm/IPackageMoveObserver.aidl \
	core/java/android/content/pm/IPackageStatsObserver.aidl \
	core/java/android/content/pm/IPinItemRequest.aidl \
+1 −6
Original line number Diff line number Diff line
@@ -61,12 +61,6 @@ import android.content.IntentSender;
 *  {@hide}
 */
interface IPackageManager {
    // Since these transactions are also called from native code, these must be kept in sync with
    // the ones in frameworks/native/include/binder/IPackageManager.h
    // =============== Beginning of transactions used on native side as well ======================
    String[] getNamesForUids(in int[] uids);
    // =============== End of transactions used on native side as well ============================

    void checkPackageStartable(String packageName, int userId);
    boolean isPackageAvailable(String packageName, int userId);
    PackageInfo getPackageInfo(String packageName, int flags, int userId);
@@ -134,6 +128,7 @@ interface IPackageManager {
    String[] getPackagesForUid(int uid);

    String getNameForUid(int uid);
    String[] getNamesForUids(in int[] uids);

    int getUidForSharedUser(String sharedUserName);

+43 −17
Original line number Diff line number Diff line
@@ -143,6 +143,7 @@ import android.content.pm.IPackageDeleteObserver2;
import android.content.pm.IPackageInstallObserver2;
import android.content.pm.IPackageInstaller;
import android.content.pm.IPackageManager;
import android.content.pm.IPackageManagerNative;
import android.content.pm.IPackageMoveObserver;
import android.content.pm.IPackageStatsObserver;
import android.content.pm.InstantAppInfo;
@@ -2304,6 +2305,8 @@ public class PackageManagerService extends IPackageManager.Stub
                factoryTest, onlyCore);
        m.enableSystemUserPackages();
        ServiceManager.addService("package", m);
        final PackageManagerNative pmn = m.new PackageManagerNative();
        ServiceManager.addService("package_native", pmn);
        return m;
    }
@@ -6409,7 +6412,18 @@ public class PackageManagerService extends IPackageManager.Stub
            return null;
        }
        synchronized (mPackages) {
            return getNameForUidLocked(callingUid, uid);
            Object obj = mSettings.getUserIdLPr(UserHandle.getAppId(uid));
            if (obj instanceof SharedUserSetting) {
                final SharedUserSetting sus = (SharedUserSetting) obj;
                return sus.name + ":" + sus.userId;
            } else if (obj instanceof PackageSetting) {
                final PackageSetting ps = (PackageSetting) obj;
                if (filterAppAccessLPr(ps, callingUid, UserHandle.getUserId(callingUid))) {
                    return null;
                }
                return ps.name;
            }
            return null;
        }
    }
@@ -6426,25 +6440,23 @@ public class PackageManagerService extends IPackageManager.Stub
        synchronized (mPackages) {
            for (int i = uids.length - 1; i >= 0; i--) {
                final int uid = uids[i];
                names[i] = getNameForUidLocked(callingUid, uid);
            }
        }
        return names;
    }
    private String getNameForUidLocked(int callingUid, int uid) {
                Object obj = mSettings.getUserIdLPr(UserHandle.getAppId(uid));
                if (obj instanceof SharedUserSetting) {
                    final SharedUserSetting sus = (SharedUserSetting) obj;
            return sus.name + ":" + sus.userId;
                    names[i] = "shared:" + sus.name;
                } else if (obj instanceof PackageSetting) {
                    final PackageSetting ps = (PackageSetting) obj;
                    if (filterAppAccessLPr(ps, callingUid, UserHandle.getUserId(callingUid))) {
                return null;
                        names[i] = null;
                    } else {
                        names[i] = ps.name;
                    }
            return ps.name;
                } else {
                    names[i] = null;
                }
        return null;
            }
        }
        return names;
    }
    @Override
@@ -24789,6 +24801,20 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
        }
    }
    private class PackageManagerNative extends IPackageManagerNative.Stub {
        @Override
        public String[] getNamesForUids(int[] uids) throws RemoteException {
            final String[] results = PackageManagerService.this.getNamesForUids(uids);
            // massage results so they can be parsed by the native binder
            for (int i = results.length - 1; i >= 0; --i) {
                if (results[i] == null) {
                    results[i] = "";
                }
            }
            return results;
        }
    }
    private class PackageManagerInternalImpl extends PackageManagerInternal {
        @Override
        public void setLocationPackagesProvider(PackagesProvider provider) {