From 69d87137be73ab9ec69bba5d4dc56546ee463937 Mon Sep 17 00:00:00 2001 From: Soonil Nagarkar Date: Mon, 21 Sep 2020 09:22:57 -0700 Subject: [PATCH] Improve LocationRequest appcompat Fix a bug where we were overstrict in validating legacy location requests, and didn't cover all possible legacy inputs. Specifically, clients that pass in Long.MAX_VALUE as the interval - unclear why any client would want to do this, but nevertheless, it was allowed. Bug: 168927418 Test: presubmit Change-Id: Iaa604da6dee9e860f13abe0a74853579f757e249 --- .../android/location/LocationManager.java | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java index d7ef24170c249..5523196f9b073 100644 --- a/location/java/android/location/LocationManager.java +++ b/location/java/android/location/LocationManager.java @@ -20,6 +20,8 @@ import static android.Manifest.permission.ACCESS_COARSE_LOCATION; import static android.Manifest.permission.ACCESS_FINE_LOCATION; import static android.Manifest.permission.LOCATION_HARDWARE; import static android.Manifest.permission.WRITE_SECURE_SETTINGS; +import static android.location.LocationRequest.createFromDeprecatedCriteria; +import static android.location.LocationRequest.createFromDeprecatedProvider; import static com.android.internal.util.ConcurrentUtils.DIRECT_EXECUTOR; @@ -1024,9 +1026,7 @@ public class LocationManager { requestLocationUpdates( provider, - new LocationRequest.Builder(minTimeMs) - .setMinUpdateDistanceMeters(minDistanceM) - .build(), + createFromDeprecatedProvider(provider, minTimeMs, minDistanceM, false), executor, listener); } @@ -1085,10 +1085,7 @@ public class LocationManager { requestLocationUpdates( FUSED_PROVIDER, - new LocationRequest.Builder(minTimeMs) - .setQuality(criteria) - .setMinUpdateDistanceMeters(minDistanceM) - .build(), + createFromDeprecatedCriteria(criteria, minTimeMs, minDistanceM, false), executor, listener); } @@ -1116,9 +1113,7 @@ public class LocationManager { requestLocationUpdates( provider, - new LocationRequest.Builder(minTimeMs) - .setMinUpdateDistanceMeters(minDistanceM) - .build(), + createFromDeprecatedProvider(provider, minTimeMs, minDistanceM, false), pendingIntent); } @@ -1144,10 +1139,7 @@ public class LocationManager { Preconditions.checkArgument(criteria != null, "invalid null criteria"); requestLocationUpdates( FUSED_PROVIDER, - new LocationRequest.Builder(minTimeMs) - .setQuality(criteria) - .setMinUpdateDistanceMeters(minDistanceM) - .build(), + createFromDeprecatedCriteria(criteria, minTimeMs, minDistanceM, false), pendingIntent); }