Loading Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -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 \ Loading core/java/android/content/pm/IPackageManager.aidl +1 −6 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -134,6 +128,7 @@ interface IPackageManager { String[] getPackagesForUid(int uid); String getNameForUid(int uid); String[] getNamesForUids(in int[] uids); int getUidForSharedUser(String sharedUserName); Loading services/core/java/com/android/server/pm/PackageManagerService.java +43 −17 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; } Loading Loading @@ -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; } } Loading @@ -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 Loading Loading @@ -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) { Loading
Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -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 \ Loading
core/java/android/content/pm/IPackageManager.aidl +1 −6 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -134,6 +128,7 @@ interface IPackageManager { String[] getPackagesForUid(int uid); String getNameForUid(int uid); String[] getNamesForUids(in int[] uids); int getUidForSharedUser(String sharedUserName); Loading
services/core/java/com/android/server/pm/PackageManagerService.java +43 −17 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; } Loading Loading @@ -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; } } Loading @@ -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 Loading Loading @@ -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) {