Merge "Remove indoorProbability from NLP extras before delivering to clients"

This commit is contained in:
TreeHugger Robot
2021-01-13 19:57:55 +00:00
committed by Android (Google) Code Review

View File

@@ -94,6 +94,10 @@ public abstract class LocationProviderBase {
*/
public static final String FUSED_PROVIDER = LocationManager.FUSED_PROVIDER;
private static final String EXTRA_KEY_COARSE_LOCATION = "coarseLocation";
private static final String EXTRA_KEY_NO_GPS_LOCATION = "noGPSLocation";
private static final String EXTRA_KEY_INDOOR_PROB = "indoorProbability";
final String mTag;
@Nullable final String mPackageName;
@Nullable final String mAttributionTag;
@@ -260,21 +264,7 @@ public abstract class LocationProviderBase {
public void reportLocation(LocationResult locationResult) {
ILocationProviderManager manager = mManager;
if (manager != null) {
locationResult = locationResult.map(location -> {
// remove deprecated extras to save on serialization costs
Bundle extras = location.getExtras();
if (extras != null && (extras.containsKey("noGPSLocation")
|| extras.containsKey("coarseLocation"))) {
location = new Location(location);
extras = location.getExtras();
extras.remove("noGPSLocation");
extras.remove("coarseLocation");
if (extras.isEmpty()) {
location.setExtras(null);
}
}
return location;
});
locationResult = locationResult.map(this::cleanUpExtras);
try {
manager.onReportLocation(locationResult);
@@ -286,6 +276,33 @@ public abstract class LocationProviderBase {
}
}
/**
* Remove deprecated/unnecessary extras to save on serialization costs.
*
* {@link #EXTRA_KEY_NO_GPS_LOCATION} and {@link #EXTRA_KEY_COARSE_LOCATION} are deprecated.
*
* {@link #EXTRA_KEY_INDOOR_PROB} should only be used in the framework.
*/
private Location cleanUpExtras(Location location) {
Bundle extras = location.getExtras();
if (extras == null) {
return location;
}
if (extras.containsKey(EXTRA_KEY_NO_GPS_LOCATION)
|| extras.containsKey(EXTRA_KEY_COARSE_LOCATION)
|| extras.containsKey(EXTRA_KEY_INDOOR_PROB)) {
location = new Location(location);
extras = location.getExtras();
extras.remove(EXTRA_KEY_NO_GPS_LOCATION);
extras.remove(EXTRA_KEY_COARSE_LOCATION);
extras.remove(EXTRA_KEY_INDOOR_PROB);
if (extras.isEmpty()) {
location.setExtras(null);
}
}
return location;
}
protected void onInit() {
// call once so that providers designed for APIs pre-Q are not broken
onEnable();