summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Hongyi Zhang <hongyiz@google.com> 2019-06-09 22:49:25 -0700
committer Hongyi Zhang <hongyiz@google.com> 2019-06-10 18:11:12 +0000
commit0e9ea750790b032f40f20c0302283b6f13d4cbb4 (patch)
treec3793baed5058555d17bbad951eea946e206f446
parent8a03eb7842cea71e2713b8d208e44de550d210db (diff)
Fix NPE in removeGeofence
Check if geofence is null before reading getRadius() Test: run cts-dev --module CtsLocationTestCases --test android.location.cts.LocationManagerTest ============================================ ================= Results ================== =============== Consumed Time ============== arm64-v8a CtsLocationTestCases: 1m 21s Total aggregated tests run time: 1m 21s ============== TOP 1 Slow Modules ============== arm64-v8a CtsLocationTestCases: 0.29 tests/sec [24 tests / 81579 msec] ============== Modules Preparation Times ============== arm64-v8a CtsLocationTestCases => prep = 4604 ms || clean = 750 ms Total preparation time: 4s || Total tear down time: 750 ms ======================================================= =============== Summary =============== Total Run time: 1m 28s 1/1 modules completed Total Tests : 24 PASSED : 24 FAILED : 0 ============== End of Results ============== ============================================ Bug: 134894083 Change-Id: I71f643688855394e14974170bd2380f66cd51308
-rw-r--r--services/core/java/com/android/server/LocationManagerService.java12
-rw-r--r--services/core/java/com/android/server/LocationUsageLogger.java11
2 files changed, 14 insertions, 9 deletions
diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java
index 78f0603c5359..8a639c543366 100644
--- a/services/core/java/com/android/server/LocationManagerService.java
+++ b/services/core/java/com/android/server/LocationManagerService.java
@@ -2361,7 +2361,7 @@ public class LocationManagerService extends ILocationManager.Stub {
mRealRequest,
mReceiver.isListener(),
mReceiver.isPendingIntent(),
- /* radius= */ 0,
+ /* geofence= */ null,
mActivityManager.getPackageImportance(packageName));
// remove from mRecordsByProvider
@@ -2541,7 +2541,7 @@ public class LocationManagerService extends ILocationManager.Stub {
LocationStatsEnums.USAGE_STARTED,
LocationStatsEnums.API_REQUEST_LOCATION_UPDATES,
packageName, request, listener != null, intent != null,
- /* radius= */ 0,
+ /* geofence= */ null,
mActivityManager.getPackageImportance(packageName));
Receiver receiver;
@@ -2844,7 +2844,7 @@ public class LocationManagerService extends ILocationManager.Stub {
request,
/* hasListener= */ false,
intent != null,
- geofence.getRadius(),
+ geofence,
mActivityManager.getPackageImportance(packageName));
}
@@ -2876,7 +2876,7 @@ public class LocationManagerService extends ILocationManager.Stub {
/* LocationRequest= */ null,
/* hasListener= */ false,
intent != null,
- geofence.getRadius(),
+ geofence,
mActivityManager.getPackageImportance(packageName));
}
mGeofenceManager.removeFence(geofence, intent);
@@ -2973,7 +2973,7 @@ public class LocationManagerService extends ILocationManager.Stub {
/* LocationRequest= */ null,
/* hasListener= */ true,
/* hasIntent= */ false,
- /* radius */ 0,
+ /* geofence= */ null,
mActivityManager.getPackageImportance(packageName));
}
if (isThrottlingExemptLocked(callerIdentity)
@@ -3014,7 +3014,7 @@ public class LocationManagerService extends ILocationManager.Stub {
/* LocationRequest= */ null,
/* hasListener= */ true,
/* hasIntent= */ false,
- /* radius= */ 0,
+ /* geofence= */ null,
mActivityManager.getPackageImportance(
linkedListener.mCallerIdentity.mPackageName));
}
diff --git a/services/core/java/com/android/server/LocationUsageLogger.java b/services/core/java/com/android/server/LocationUsageLogger.java
index c5030351f69d..4ca74bf3aa91 100644
--- a/services/core/java/com/android/server/LocationUsageLogger.java
+++ b/services/core/java/com/android/server/LocationUsageLogger.java
@@ -17,6 +17,7 @@
package com.android.server;
import android.app.ActivityManager;
+import android.location.Geofence;
import android.location.LocationManager;
import android.location.LocationRequest;
import android.os.SystemClock;
@@ -180,13 +181,14 @@ class LocationUsageLogger {
public void logLocationApiUsage(int usageType, int apiInUse,
String packageName, LocationRequest locationRequest,
boolean hasListener, boolean hasIntent,
- float radius, int activityImportance) {
+ Geofence geofence, int activityImportance) {
try {
if (!checkApiUsageLogCap()) {
return;
}
boolean isLocationRequestNull = locationRequest == null;
+ boolean isGeofenceNull = geofence == null;
if (D) {
Log.d(TAG, "log API Usage to statsd. usageType: " + usageType + ", apiInUse: "
+ apiInUse + ", packageName: " + (packageName == null ? "" : packageName)
@@ -194,7 +196,8 @@ class LocationUsageLogger {
+ (isLocationRequestNull ? "" : locationRequest.toString())
+ ", hasListener: " + hasListener
+ ", hasIntent: " + hasIntent
- + ", radius: " + radius
+ + ", geofence: "
+ + (isGeofenceNull ? "" : geofence.toString())
+ ", importance: " + activityImportance);
}
@@ -219,7 +222,9 @@ class LocationUsageLogger {
? LocationStatsEnums.EXPIRATION_UNKNOWN
: getBucketizedExpireIn(locationRequest.getExpireAt()),
getCallbackType(apiInUse, hasListener, hasIntent),
- bucketizeRadiusToStatsdEnum(radius),
+ isGeofenceNull
+ ? LocationStatsEnums.RADIUS_UNKNOWN
+ : bucketizeRadiusToStatsdEnum(geofence.getRadius()),
categorizeActivityImportance(activityImportance));
} catch (Exception e) {
// Swallow exceptions to avoid crashing LMS.