diff options
| author | 2021-10-05 11:31:13 -0700 | |
|---|---|---|
| committer | 2021-10-05 11:32:38 -0700 | |
| commit | 08f91a61d094f424c03266d6049ffe4a3f6f2a1b (patch) | |
| tree | ff0946d7d3d07af678725bf34570a54493fc7e1d | |
| parent | f9883800a34e51de2cfbc2666c635071fd8676de (diff) | |
Fix bug unregistering stationary listener
Bug: 196997374
Test: manual + presubmit
Change-Id: I1b2a9c7d36c23db0814d5d8a69726c7763facf5d
2 files changed, 25 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/location/provider/StationaryThrottlingLocationProvider.java b/services/core/java/com/android/server/location/provider/StationaryThrottlingLocationProvider.java index ad87c45308f8..cc51cea05160 100644 --- a/services/core/java/com/android/server/location/provider/StationaryThrottlingLocationProvider.java +++ b/services/core/java/com/android/server/location/provider/StationaryThrottlingLocationProvider.java @@ -154,6 +154,7 @@ public final class StationaryThrottlingLocationProvider extends DelegateLocation mDeviceStationaryHelper.removeListener(this); mDeviceStationary = false; mDeviceStationaryRealtimeMs = Long.MIN_VALUE; + onThrottlingChangedLocked(false); } } } diff --git a/services/tests/mockingservicestests/src/com/android/server/location/provider/StationaryThrottlingLocationProviderTest.java b/services/tests/mockingservicestests/src/com/android/server/location/provider/StationaryThrottlingLocationProviderTest.java index 63996f0e021c..4d6f49e5d223 100644 --- a/services/tests/mockingservicestests/src/com/android/server/location/provider/StationaryThrottlingLocationProviderTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/location/provider/StationaryThrottlingLocationProviderTest.java @@ -90,7 +90,7 @@ public class StationaryThrottlingLocationProviderTest { } @Test - public void testThrottle() { + public void testThrottle_stationaryExit() { ProviderRequest request = new ProviderRequest.Builder().setIntervalMillis(50).build(); mProvider.getController().setRequest(request); @@ -113,6 +113,29 @@ public class StationaryThrottlingLocationProviderTest { } @Test + public void testThrottle_idleExit() { + ProviderRequest request = new ProviderRequest.Builder().setIntervalMillis(50).build(); + + mProvider.getController().setRequest(request); + verify(mDelegate).onSetRequest(request); + + mDelegateProvider.reportLocation(createLocationResult("test_provider", mRandom)); + verify(mListener, times(1)).onReportLocation(any(LocationResult.class)); + + mInjector.getDeviceIdleHelper().setIdle(true); + verify(mDelegate, never()).onSetRequest(ProviderRequest.EMPTY_REQUEST); + + mInjector.getDeviceStationaryHelper().setStationary(true); + verify(mDelegate).onSetRequest(ProviderRequest.EMPTY_REQUEST); + verify(mListener, timeout(75).times(2)).onReportLocation(any(LocationResult.class)); + verify(mListener, timeout(75).times(3)).onReportLocation(any(LocationResult.class)); + + mInjector.getDeviceIdleHelper().setIdle(false); + verify(mDelegate, times(2)).onSetRequest(request); + verify(mListener, after(75).times(3)).onReportLocation(any(LocationResult.class)); + } + + @Test public void testThrottle_NoInitialLocation() { ProviderRequest request = new ProviderRequest.Builder().setIntervalMillis(50).build(); |