Merge "Guard against a NPE when using ParceledSliceList" into nyc-dev

This commit is contained in:
Svetoslav Ganov
2016-03-25 01:33:37 +00:00
committed by Android (Google) Code Review

View File

@@ -272,12 +272,17 @@ public class ApplicationPackageManager extends PackageManager {
} }
@Override @Override
@SuppressWarnings("unchecked")
public List<PermissionInfo> queryPermissionsByGroup(String group, int flags) public List<PermissionInfo> queryPermissionsByGroup(String group, int flags)
throws NameNotFoundException { throws NameNotFoundException {
try { try {
List<PermissionInfo> pi = mPM.queryPermissionsByGroup(group, flags).getList(); ParceledListSlice<PermissionInfo> parceledList =
if (pi != null) { mPM.queryPermissionsByGroup(group, flags);
return pi; if (parceledList != null) {
List<PermissionInfo> pi = parceledList.getList();
if (pi != null) {
return pi;
}
} }
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
@@ -288,7 +293,7 @@ public class ApplicationPackageManager extends PackageManager {
@Override @Override
public PermissionGroupInfo getPermissionGroupInfo(String name, public PermissionGroupInfo getPermissionGroupInfo(String name,
int flags) throws NameNotFoundException { int flags) throws NameNotFoundException {
try { try {
PermissionGroupInfo pgi = mPM.getPermissionGroupInfo(name, flags); PermissionGroupInfo pgi = mPM.getPermissionGroupInfo(name, flags);
if (pgi != null) { if (pgi != null) {
@@ -302,9 +307,15 @@ public class ApplicationPackageManager extends PackageManager {
} }
@Override @Override
@SuppressWarnings("unchecked")
public List<PermissionGroupInfo> getAllPermissionGroups(int flags) { public List<PermissionGroupInfo> getAllPermissionGroups(int flags) {
try { try {
return mPM.getAllPermissionGroups(flags).getList(); ParceledListSlice<PermissionGroupInfo> parceledList =
mPM.getAllPermissionGroups(flags);
if (parceledList == null) {
return Collections.emptyList();
}
return parceledList.getList();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
@@ -439,9 +450,15 @@ public class ApplicationPackageManager extends PackageManager {
} }
@Override @Override
@SuppressWarnings("unchecked")
public FeatureInfo[] getSystemAvailableFeatures() { public FeatureInfo[] getSystemAvailableFeatures() {
try { try {
final List<FeatureInfo> list = mPM.getSystemAvailableFeatures().getList(); ParceledListSlice<FeatureInfo> parceledList =
mPM.getSystemAvailableFeatures();
if (parceledList == null) {
return new FeatureInfo[0];
}
final List<FeatureInfo> list = parceledList.getList();
final FeatureInfo[] res = new FeatureInfo[list.size()]; final FeatureInfo[] res = new FeatureInfo[list.size()];
for (int i = 0; i < res.length; i++) { for (int i = 0; i < res.length; i++) {
res[i] = list.get(i); res[i] = list.get(i);
@@ -636,10 +653,15 @@ public class ApplicationPackageManager extends PackageManager {
/** @hide */ /** @hide */
@Override @Override
@SuppressWarnings("unchecked")
public List<PackageInfo> getInstalledPackagesAsUser(int flags, int userId) { public List<PackageInfo> getInstalledPackagesAsUser(int flags, int userId) {
try { try {
ParceledListSlice<PackageInfo> slice = mPM.getInstalledPackages(flags, userId); ParceledListSlice<PackageInfo> parceledList =
return slice.getList(); mPM.getInstalledPackages(flags, userId);
if (parceledList == null) {
return Collections.emptyList();
}
return parceledList.getList();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
@@ -651,9 +673,12 @@ public class ApplicationPackageManager extends PackageManager {
String[] permissions, int flags) { String[] permissions, int flags) {
final int userId = mContext.getUserId(); final int userId = mContext.getUserId();
try { try {
ParceledListSlice<PackageInfo> slice = mPM.getPackagesHoldingPermissions( ParceledListSlice<PackageInfo> parceledList =
permissions, flags, userId); mPM.getPackagesHoldingPermissions(permissions, flags, userId);
return slice.getList(); if (parceledList == null) {
return Collections.emptyList();
}
return parceledList.getList();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
@@ -664,8 +689,12 @@ public class ApplicationPackageManager extends PackageManager {
public List<ApplicationInfo> getInstalledApplications(int flags) { public List<ApplicationInfo> getInstalledApplications(int flags) {
final int userId = mContext.getUserId(); final int userId = mContext.getUserId();
try { try {
ParceledListSlice<ApplicationInfo> slice = mPM.getInstalledApplications(flags, userId); ParceledListSlice<ApplicationInfo> parceledList =
return slice.getList(); mPM.getInstalledApplications(flags, userId);
if (parceledList == null) {
return Collections.emptyList();
}
return parceledList.getList();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
@@ -770,20 +799,25 @@ public class ApplicationPackageManager extends PackageManager {
/** @hide Same as above but for a specific user */ /** @hide Same as above but for a specific user */
@Override @Override
@SuppressWarnings("unchecked")
public List<ResolveInfo> queryIntentActivitiesAsUser(Intent intent, public List<ResolveInfo> queryIntentActivitiesAsUser(Intent intent,
int flags, int userId) { int flags, int userId) {
try { try {
return mPM.queryIntentActivities( ParceledListSlice<ResolveInfo> parceledList =
intent, mPM.queryIntentActivities(intent,
intent.resolveTypeIfNeeded(mContext.getContentResolver()), intent.resolveTypeIfNeeded(mContext.getContentResolver()),
flags, flags, userId);
userId).getList(); if (parceledList == null) {
return Collections.emptyList();
}
return parceledList.getList();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
} }
@Override @Override
@SuppressWarnings("unchecked")
public List<ResolveInfo> queryIntentActivityOptions( public List<ResolveInfo> queryIntentActivityOptions(
ComponentName caller, Intent[] specifics, Intent intent, ComponentName caller, Intent[] specifics, Intent intent,
int flags) { int flags) {
@@ -807,10 +841,13 @@ public class ApplicationPackageManager extends PackageManager {
} }
try { try {
return mPM ParceledListSlice<ResolveInfo> parceledList =
.queryIntentActivityOptions(caller, specifics, specificTypes, intent, mPM.queryIntentActivityOptions(caller, specifics, specificTypes, intent,
intent.resolveTypeIfNeeded(resolver), flags, mContext.getUserId()) intent.resolveTypeIfNeeded(resolver), flags, mContext.getUserId());
.getList(); if (parceledList == null) {
return Collections.emptyList();
}
return parceledList.getList();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
@@ -820,13 +857,17 @@ public class ApplicationPackageManager extends PackageManager {
* @hide * @hide
*/ */
@Override @Override
@SuppressWarnings("unchecked")
public List<ResolveInfo> queryBroadcastReceiversAsUser(Intent intent, int flags, int userId) { public List<ResolveInfo> queryBroadcastReceiversAsUser(Intent intent, int flags, int userId) {
try { try {
return mPM.queryIntentReceivers( ParceledListSlice<ResolveInfo> parceledList =
intent, mPM.queryIntentReceivers(intent,
intent.resolveTypeIfNeeded(mContext.getContentResolver()), intent.resolveTypeIfNeeded(mContext.getContentResolver()),
flags, flags, userId);
userId).getList(); if (parceledList == null) {
return Collections.emptyList();
}
return parceledList.getList();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
@@ -851,13 +892,17 @@ public class ApplicationPackageManager extends PackageManager {
} }
@Override @Override
@SuppressWarnings("unchecked")
public List<ResolveInfo> queryIntentServicesAsUser(Intent intent, int flags, int userId) { public List<ResolveInfo> queryIntentServicesAsUser(Intent intent, int flags, int userId) {
try { try {
return mPM.queryIntentServices( ParceledListSlice<ResolveInfo> parceledList =
intent, mPM.queryIntentServices(intent,
intent.resolveTypeIfNeeded(mContext.getContentResolver()), intent.resolveTypeIfNeeded(mContext.getContentResolver()),
flags, flags, userId);
userId).getList(); if (parceledList == null) {
return Collections.emptyList();
}
return parceledList.getList();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
@@ -869,12 +914,18 @@ public class ApplicationPackageManager extends PackageManager {
} }
@Override @Override
@SuppressWarnings("unchecked")
public List<ResolveInfo> queryIntentContentProvidersAsUser( public List<ResolveInfo> queryIntentContentProvidersAsUser(
Intent intent, int flags, int userId) { Intent intent, int flags, int userId) {
try { try {
return mPM.queryIntentContentProviders(intent, ParceledListSlice<ResolveInfo> parceledList =
intent.resolveTypeIfNeeded(mContext.getContentResolver()), flags, userId) mPM.queryIntentContentProviders(intent,
.getList(); intent.resolveTypeIfNeeded(mContext.getContentResolver()),
flags, userId);
if (parceledList == null) {
return Collections.emptyList();
}
return parceledList.getList();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
@@ -901,12 +952,13 @@ public class ApplicationPackageManager extends PackageManager {
} }
@Override @Override
@SuppressWarnings("unchecked")
public List<ProviderInfo> queryContentProviders(String processName, public List<ProviderInfo> queryContentProviders(String processName,
int uid, int flags) { int uid, int flags) {
try { try {
ParceledListSlice<ProviderInfo> slice ParceledListSlice<ProviderInfo> slice =
= mPM.queryContentProviders(processName, uid, flags); mPM.queryContentProviders(processName, uid, flags);
return slice != null ? slice.getList() : null; return slice != null ? slice.getList() : Collections.<ProviderInfo>emptyList();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
@@ -930,10 +982,16 @@ public class ApplicationPackageManager extends PackageManager {
} }
@Override @Override
@SuppressWarnings("unchecked")
public List<InstrumentationInfo> queryInstrumentation( public List<InstrumentationInfo> queryInstrumentation(
String targetPackage, int flags) { String targetPackage, int flags) {
try { try {
return mPM.queryInstrumentation(targetPackage, flags).getList(); ParceledListSlice<InstrumentationInfo> parceledList =
mPM.queryInstrumentation(targetPackage, flags);
if (parceledList == null) {
return Collections.emptyList();
}
return parceledList.getList();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
@@ -1575,18 +1633,30 @@ public class ApplicationPackageManager extends PackageManager {
} }
@Override @Override
@SuppressWarnings("unchecked")
public List<IntentFilterVerificationInfo> getIntentFilterVerifications(String packageName) { public List<IntentFilterVerificationInfo> getIntentFilterVerifications(String packageName) {
try { try {
return mPM.getIntentFilterVerifications(packageName).getList(); ParceledListSlice<IntentFilterVerificationInfo> parceledList =
mPM.getIntentFilterVerifications(packageName);
if (parceledList == null) {
return Collections.emptyList();
}
return parceledList.getList();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
} }
@Override @Override
@SuppressWarnings("unchecked")
public List<IntentFilter> getAllIntentFilters(String packageName) { public List<IntentFilter> getAllIntentFilters(String packageName) {
try { try {
return mPM.getAllIntentFilters(packageName).getList(); ParceledListSlice<IntentFilter> parceledList =
mPM.getAllIntentFilters(packageName);
if (parceledList == null) {
return Collections.emptyList();
}
return parceledList.getList();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }