summaryrefslogtreecommitdiff
path: root/location/java/android
diff options
context:
space:
mode:
author Soonil Nagarkar <sooniln@google.com> 2019-10-31 16:19:45 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-10-31 16:19:45 +0000
commit8beb64d0189eba9e12c81056f738c1b83b0d7282 (patch)
tree30ff445fb8552f084a7f0375f8af42df156dd2e1 /location/java/android
parent2a5a322eea8ee533ef57a0309b3e598be7805ff9 (diff)
parentc4a4833708e01065627501c37f02084974470eaa (diff)
Merge "Prevent crash when invoking GNSS apis"
Diffstat (limited to 'location/java/android')
-rw-r--r--location/java/android/location/LocationManager.java46
1 files changed, 32 insertions, 14 deletions
diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java
index 87b3be9cc26d..ca9d4d3e8812 100644
--- a/location/java/android/location/LocationManager.java
+++ b/location/java/android/location/LocationManager.java
@@ -2757,9 +2757,14 @@ public class LocationManager {
protected boolean registerService() throws RemoteException {
Preconditions.checkState(mListenerTransport == null);
- mListenerTransport = new GnssStatusListener();
- return mService.registerGnssStatusCallback(mListenerTransport,
- mContext.getPackageName(), mContext.getFeatureId());
+ GnssStatusListener transport = new GnssStatusListener();
+ if (mService.registerGnssStatusCallback(transport, mContext.getPackageName(),
+ mContext.getFeatureId())) {
+ mListenerTransport = transport;
+ return true;
+ } else {
+ return false;
+ }
}
@Override
@@ -2817,10 +2822,14 @@ public class LocationManager {
protected boolean registerService() throws RemoteException {
Preconditions.checkState(mListenerTransport == null);
- mListenerTransport = new GnssMeasurementsListener();
- return mService.addGnssMeasurementsListener(mListenerTransport,
- mContext.getPackageName(), mContext.getFeatureId(),
- "gnss measurement callback");
+ GnssMeasurementsListener transport = new GnssMeasurementsListener();
+ if (mService.addGnssMeasurementsListener(transport, mContext.getPackageName(),
+ mContext.getFeatureId(), "gnss measurement callback")) {
+ mListenerTransport = transport;
+ return true;
+ } else {
+ return false;
+ }
}
@Override
@@ -2854,10 +2863,14 @@ public class LocationManager {
protected boolean registerService() throws RemoteException {
Preconditions.checkState(mListenerTransport == null);
- mListenerTransport = new GnssNavigationMessageListener();
- return mService.addGnssNavigationMessageListener(mListenerTransport,
- mContext.getPackageName(), mContext.getFeatureId(),
- "gnss navigation callback");
+ GnssNavigationMessageListener transport = new GnssNavigationMessageListener();
+ if (mService.addGnssNavigationMessageListener(transport, mContext.getPackageName(),
+ mContext.getFeatureId(), "gnss navigation callback")) {
+ mListenerTransport = transport;
+ return true;
+ } else {
+ return false;
+ }
}
@Override
@@ -2891,9 +2904,14 @@ public class LocationManager {
protected boolean registerService() throws RemoteException {
Preconditions.checkState(mListenerTransport == null);
- mListenerTransport = new BatchedLocationCallback();
- return mService.addGnssBatchingCallback(mListenerTransport, mContext.getPackageName(),
- mContext.getFeatureId(), "batched location callback");
+ BatchedLocationCallback transport = new BatchedLocationCallback();
+ if (mService.addGnssBatchingCallback(transport, mContext.getPackageName(),
+ mContext.getFeatureId(), "batched location callback")) {
+ mListenerTransport = transport;
+ return true;
+ } else {
+ return false;
+ }
}
@Override