diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java index 869d564b43296..312b83c56dea2 100644 --- a/services/core/java/com/android/server/LocationManagerService.java +++ b/services/core/java/com/android/server/LocationManagerService.java @@ -1041,12 +1041,13 @@ public class LocationManagerService extends ILocationManager.Stub { @Override public void onSetProperties(ProviderProperties properties) { - // move calls coming from below LMS onto a different thread to avoid deadlock - runInternal(() -> { - synchronized (mLock) { - mProperties = properties; - } - }); + // because this does not invoke any other methods which might result in calling back + // into the location provider, it is safe to run this on the calling thread. it is also + // currently necessary to run this on the calling thread to ensure that property changes + // are publicly visibly immediately, ie for mock providers which are created. + synchronized (mLock) { + mProperties = properties; + } } @GuardedBy("mLock") diff --git a/services/core/java/com/android/server/location/MockProvider.java b/services/core/java/com/android/server/location/MockProvider.java index 86bc9f3135514..fe91c63e712bb 100644 --- a/services/core/java/com/android/server/location/MockProvider.java +++ b/services/core/java/com/android/server/location/MockProvider.java @@ -52,7 +52,6 @@ public class MockProvider extends AbstractLocationProvider { mExtras = null; setProperties(properties); - setEnabled(true); } /** Sets the enabled state of this mock provider. */