Merge "Fix NPE in LocationProviderManager" into sc-dev

This commit is contained in:
Soonil Nagarkar
2021-05-08 12:26:25 +00:00
committed by Android (Google) Code Review

View File

@@ -461,6 +461,12 @@ public class LocationProviderManager extends
return LocationProviderManager.this; return LocationProviderManager.this;
} }
@GuardedBy("mLock")
final boolean onProviderPropertiesChanged() {
onHighPowerUsageChanged();
return false;
}
@GuardedBy("mLock") @GuardedBy("mLock")
private void onHighPowerUsageChanged() { private void onHighPowerUsageChanged() {
boolean isUsingHighPower = isUsingHighPower(); boolean isUsingHighPower = isUsingHighPower();
@@ -485,9 +491,14 @@ public class LocationProviderManager extends
Preconditions.checkState(Thread.holdsLock(mLock)); Preconditions.checkState(Thread.holdsLock(mLock));
} }
ProviderProperties properties = getProperties();
if (properties == null) {
return false;
}
return isActive() return isActive()
&& getRequest().getIntervalMillis() < MAX_HIGH_POWER_INTERVAL_MS && getRequest().getIntervalMillis() < MAX_HIGH_POWER_INTERVAL_MS
&& getProperties().getPowerUsage() == ProviderProperties.POWER_USAGE_HIGH; && properties.getPowerUsage() == ProviderProperties.POWER_USAGE_HIGH;
} }
@GuardedBy("mLock") @GuardedBy("mLock")
@@ -2277,6 +2288,10 @@ public class LocationProviderManager extends
onEnabledChanged(UserHandle.USER_ALL); onEnabledChanged(UserHandle.USER_ALL);
} }
if (!Objects.equals(oldState.properties, newState.properties)) {
updateRegistrations(Registration::onProviderPropertiesChanged);
}
if (mOnLocationTagsChangeListener != null) { if (mOnLocationTagsChangeListener != null) {
if (!oldState.extraAttributionTags.equals(newState.extraAttributionTags) if (!oldState.extraAttributionTags.equals(newState.extraAttributionTags)
|| !Objects.equals(oldState.identity, newState.identity)) { || !Objects.equals(oldState.identity, newState.identity)) {