DO NOT MERGE: Revert "DO NOT MERGE: Revert "DO NOT MERGE: Lower bound throttling interval""
This reverts commit db71562964.
Reason for revert: Real root cause found, reverting to original code.
Change-Id: I69df43954a37bb935479cbcb8eae81e8d75c7714
This commit is contained in:
@@ -23,6 +23,8 @@ import static com.android.server.location.LocationManagerService.D;
|
||||
import static com.android.server.location.LocationManagerService.TAG;
|
||||
import static com.android.server.location.eventlog.LocationEventLog.EVENT_LOG;
|
||||
|
||||
import static java.lang.Math.max;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
import android.location.Location;
|
||||
import android.location.LocationResult;
|
||||
@@ -53,6 +55,7 @@ public final class StationaryThrottlingLocationProvider extends DelegateLocation
|
||||
implements DeviceIdleHelper.DeviceIdleListener, DeviceIdleInternal.StationaryListener {
|
||||
|
||||
private static final long MAX_STATIONARY_LOCATION_AGE_MS = 30000;
|
||||
private static final long MIN_INTERVAL_MS = 1000;
|
||||
|
||||
final Object mLock = new Object();
|
||||
|
||||
@@ -179,7 +182,7 @@ public final class StationaryThrottlingLocationProvider extends DelegateLocation
|
||||
&& mLastLocation != null
|
||||
&& mLastLocation.getElapsedRealtimeAgeMillis(mDeviceStationaryRealtimeMs)
|
||||
<= MAX_STATIONARY_LOCATION_AGE_MS) {
|
||||
throttlingIntervalMs = mIncomingRequest.getIntervalMillis();
|
||||
throttlingIntervalMs = max(mIncomingRequest.getIntervalMillis(), MIN_INTERVAL_MS);
|
||||
}
|
||||
|
||||
ProviderRequest newRequest;
|
||||
|
||||
@@ -89,6 +89,19 @@ public class StationaryThrottlingLocationProviderTest {
|
||||
mProvider.getController().stop();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testThrottle_lowInterval() {
|
||||
ProviderRequest request = new ProviderRequest.Builder().setIntervalMillis(0).build();
|
||||
|
||||
mProvider.getController().setRequest(request);
|
||||
mDelegateProvider.reportLocation(createLocationResult("test_provider", mRandom));
|
||||
verify(mListener, times(1)).onReportLocation(any(LocationResult.class));
|
||||
|
||||
mInjector.getDeviceStationaryHelper().setStationary(true);
|
||||
mInjector.getDeviceIdleHelper().setIdle(true);
|
||||
verify(mListener, after(1500).times(2)).onReportLocation(any(LocationResult.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testThrottle_stationaryExit() {
|
||||
ProviderRequest request = new ProviderRequest.Builder().setIntervalMillis(50).build();
|
||||
@@ -104,17 +117,16 @@ public class StationaryThrottlingLocationProviderTest {
|
||||
|
||||
mInjector.getDeviceIdleHelper().setIdle(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));
|
||||
verify(mListener, timeout(1100).times(2)).onReportLocation(any(LocationResult.class));
|
||||
|
||||
mInjector.getDeviceStationaryHelper().setStationary(false);
|
||||
verify(mDelegate, times(2)).onSetRequest(request);
|
||||
verify(mListener, after(75).times(3)).onReportLocation(any(LocationResult.class));
|
||||
verify(mListener, after(1000).times(2)).onReportLocation(any(LocationResult.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testThrottle_idleExit() {
|
||||
ProviderRequest request = new ProviderRequest.Builder().setIntervalMillis(50).build();
|
||||
ProviderRequest request = new ProviderRequest.Builder().setIntervalMillis(1000).build();
|
||||
|
||||
mProvider.getController().setRequest(request);
|
||||
verify(mDelegate).onSetRequest(request);
|
||||
@@ -127,17 +139,16 @@ public class StationaryThrottlingLocationProviderTest {
|
||||
|
||||
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));
|
||||
verify(mListener, timeout(1100).times(2)).onReportLocation(any(LocationResult.class));
|
||||
|
||||
mInjector.getDeviceIdleHelper().setIdle(false);
|
||||
verify(mDelegate, times(2)).onSetRequest(request);
|
||||
verify(mListener, after(75).times(3)).onReportLocation(any(LocationResult.class));
|
||||
verify(mListener, after(1000).times(2)).onReportLocation(any(LocationResult.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testThrottle_NoInitialLocation() {
|
||||
ProviderRequest request = new ProviderRequest.Builder().setIntervalMillis(50).build();
|
||||
ProviderRequest request = new ProviderRequest.Builder().setIntervalMillis(1000).build();
|
||||
|
||||
mProvider.getController().setRequest(request);
|
||||
verify(mDelegate).onSetRequest(request);
|
||||
@@ -149,11 +160,11 @@ public class StationaryThrottlingLocationProviderTest {
|
||||
mDelegateProvider.reportLocation(createLocationResult("test_provider", mRandom));
|
||||
verify(mListener, times(1)).onReportLocation(any(LocationResult.class));
|
||||
verify(mDelegate, times(1)).onSetRequest(ProviderRequest.EMPTY_REQUEST);
|
||||
verify(mListener, timeout(75).times(2)).onReportLocation(any(LocationResult.class));
|
||||
verify(mListener, timeout(1100).times(2)).onReportLocation(any(LocationResult.class));
|
||||
|
||||
mInjector.getDeviceStationaryHelper().setStationary(false);
|
||||
verify(mDelegate, times(2)).onSetRequest(request);
|
||||
verify(mListener, after(75).times(2)).onReportLocation(any(LocationResult.class));
|
||||
verify(mListener, after(1000).times(2)).onReportLocation(any(LocationResult.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user