Merge "Resume GNSS measurement reporting when location setting is back on."
diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java
index 29030fa..c173d66 100644
--- a/services/core/java/com/android/server/location/GnssLocationProvider.java
+++ b/services/core/java/com/android/server/location/GnssLocationProvider.java
@@ -67,6 +67,7 @@
import android.util.Log;
import android.util.StatsLog;
+import com.android.internal.annotations.GuardedBy;
import com.android.internal.app.IBatteryStats;
import com.android.internal.location.GpsNetInitiatedHandler;
import com.android.internal.location.GpsNetInitiatedHandler.GpsNiNotification;
@@ -890,12 +891,14 @@
return GPS_POSITION_MODE_STANDALONE;
}
- private boolean handleEnable() {
- if (DEBUG) Log.d(TAG, "handleEnable");
+ @GuardedBy("mLock")
+ private void handleEnableLocked() {
+ if (DEBUG) Log.d(TAG, "handleEnableLocked");
boolean inited = native_init();
if (inited) {
+ mEnabled = true;
mSupportsXtra = native_supports_xtra();
// TODO: remove the following native calls if we can make sure they are redundant.
@@ -912,15 +915,16 @@
mGnssNavigationMessageProvider.onGpsEnabledChanged();
mGnssBatchingProvider.enable();
} else {
+ mEnabled = false;
Log.w(TAG, "Failed to enable location provider");
}
-
- return inited;
}
- private void handleDisable() {
- if (DEBUG) Log.d(TAG, "handleDisable");
+ @GuardedBy("mLock")
+ private void handleDisableLocked() {
+ if (DEBUG) Log.d(TAG, "handleDisableLocked");
+ mEnabled = false;
updateClientUids(new WorkSource());
stopNavigating();
mAlarmManager.cancel(mWakeupIntent);
@@ -946,10 +950,9 @@
}
if (enabled) {
- mEnabled = handleEnable();
+ handleEnableLocked();
} else {
- mEnabled = false;
- handleDisable();
+ handleDisableLocked();
}
}
}