Fix NPE in LocationProviderManager

Bug: 187449017
Test: presubmits
Change-Id: Ieb722a2247f2db2a13c7f526c0de5f6e503fa246
diff --git a/services/core/java/com/android/server/location/provider/LocationProviderManager.java b/services/core/java/com/android/server/location/provider/LocationProviderManager.java
index 4b772f2..1461712f 100644
--- a/services/core/java/com/android/server/location/provider/LocationProviderManager.java
+++ b/services/core/java/com/android/server/location/provider/LocationProviderManager.java
@@ -462,6 +462,12 @@
         }
 
         @GuardedBy("mLock")
+        final boolean onProviderPropertiesChanged() {
+            onHighPowerUsageChanged();
+            return false;
+        }
+
+        @GuardedBy("mLock")
         private void onHighPowerUsageChanged() {
             boolean isUsingHighPower = isUsingHighPower();
             if (isUsingHighPower != mIsUsingHighPower) {
@@ -485,9 +491,14 @@
                 Preconditions.checkState(Thread.holdsLock(mLock));
             }
 
+            ProviderProperties properties = getProperties();
+            if (properties == null) {
+                return false;
+            }
+
             return isActive()
                     && getRequest().getIntervalMillis() < MAX_HIGH_POWER_INTERVAL_MS
-                    && getProperties().getPowerUsage() == ProviderProperties.POWER_USAGE_HIGH;
+                    && properties.getPowerUsage() == ProviderProperties.POWER_USAGE_HIGH;
         }
 
         @GuardedBy("mLock")
@@ -2270,6 +2281,10 @@
             onEnabledChanged(UserHandle.USER_ALL);
         }
 
+        if (!Objects.equals(oldState.properties, newState.properties)) {
+            updateRegistrations(Registration::onProviderPropertiesChanged);
+        }
+
         if (mOnLocationTagsChangeListener != null) {
             if (!oldState.extraAttributionTags.equals(newState.extraAttributionTags)
                     || !Objects.equals(oldState.identity, newState.identity)) {