From d9df33d1c0e9db71f108e6935f3e2b267bd58059 Mon Sep 17 00:00:00 2001 From: Soonil Nagarkar Date: Wed, 15 Jul 2020 11:28:58 -0700 Subject: DO NOT MERGE: Always return non null from getGpsStatus Even though getGpsStatus is marked Nullable, some applications expect it to always return non-null. Bug: 161311411 Test: presubmits Change-Id: I8d58621588253af1dc917711e230cfd176afec37 --- location/java/android/location/GpsStatus.java | 9 +++++++++ location/java/android/location/LocationManager.java | 5 +++++ 2 files changed, 14 insertions(+) (limited to 'location') diff --git a/location/java/android/location/GpsStatus.java b/location/java/android/location/GpsStatus.java index 496885cd1f37..6a689756a1c0 100644 --- a/location/java/android/location/GpsStatus.java +++ b/location/java/android/location/GpsStatus.java @@ -151,6 +151,15 @@ public final class GpsStatus { return status; } + /** + * Builds an empty GpsStatus. + * + * @hide + */ + static GpsStatus createEmpty() { + return new GpsStatus(); + } + private GpsStatus() { } diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java index 241e9399be0a..2a2aaea035ff 100644 --- a/location/java/android/location/LocationManager.java +++ b/location/java/android/location/LocationManager.java @@ -1922,12 +1922,17 @@ public class LocationManager { GnssStatus gnssStatus = mGnssStatusListenerManager.getGnssStatus(); int ttff = mGnssStatusListenerManager.getTtff(); + + // even though this method is marked nullable, there are legacy applications that expect + // this to never return null, so avoid breaking those apps if (gnssStatus != null) { if (status == null) { status = GpsStatus.create(gnssStatus, ttff); } else { status.setStatus(gnssStatus, ttff); } + } else if (status == null) { + status = GpsStatus.createEmpty(); } return status; } -- cgit v1.2.3