Merge "Guard against a NPE when using ParceledSliceList" into nyc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
d61a57fdd0
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user