Merge "Fix bug unregistering stationary listener" into sc-qpr1-dev

This commit is contained in:
TreeHugger Robot
2021-10-06 03:17:04 +00:00
committed by Android (Google) Code Review
2 changed files with 25 additions and 1 deletions

View File

@@ -154,6 +154,7 @@ public final class StationaryThrottlingLocationProvider extends DelegateLocation
mDeviceStationaryHelper.removeListener(this); mDeviceStationaryHelper.removeListener(this);
mDeviceStationary = false; mDeviceStationary = false;
mDeviceStationaryRealtimeMs = Long.MIN_VALUE; mDeviceStationaryRealtimeMs = Long.MIN_VALUE;
onThrottlingChangedLocked(false);
} }
} }
} }

View File

@@ -90,7 +90,7 @@ public class StationaryThrottlingLocationProviderTest {
} }
@Test @Test
public void testThrottle() { public void testThrottle_stationaryExit() {
ProviderRequest request = new ProviderRequest.Builder().setIntervalMillis(50).build(); ProviderRequest request = new ProviderRequest.Builder().setIntervalMillis(50).build();
mProvider.getController().setRequest(request); mProvider.getController().setRequest(request);
@@ -112,6 +112,29 @@ public class StationaryThrottlingLocationProviderTest {
verify(mListener, after(75).times(3)).onReportLocation(any(LocationResult.class)); verify(mListener, after(75).times(3)).onReportLocation(any(LocationResult.class));
} }
@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 @Test
public void testThrottle_NoInitialLocation() { public void testThrottle_NoInitialLocation() {
ProviderRequest request = new ProviderRequest.Builder().setIntervalMillis(50).build(); ProviderRequest request = new ProviderRequest.Builder().setIntervalMillis(50).build();