Loading services/core/java/com/android/server/location/provider/StationaryThrottlingLocationProvider.java +2 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import static java.lang.Math.max; import android.annotation.Nullable; import android.location.Location; import android.location.LocationRequest; import android.location.LocationResult; import android.location.provider.ProviderRequest; import android.os.SystemClock; Loading Loading @@ -179,6 +180,7 @@ public final class StationaryThrottlingLocationProvider extends DelegateLocation private void onThrottlingChangedLocked(boolean deliverImmediate) { long throttlingIntervalMs = INTERVAL_DISABLED; if (mDeviceStationary && mDeviceIdle && !mIncomingRequest.isLocationSettingsIgnored() && mIncomingRequest.getQuality() != LocationRequest.QUALITY_HIGH_ACCURACY && mLastLocation != null && mLastLocation.getElapsedRealtimeAgeMillis(mDeviceStationaryRealtimeMs) <= MAX_STATIONARY_LOCATION_AGE_MS) { Loading services/tests/mockingservicestests/src/com/android/server/location/provider/StationaryThrottlingLocationProviderTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import static org.mockito.MockitoAnnotations.initMocks; import android.content.Context; import android.location.Location; import android.location.LocationRequest; import android.location.LocationResult; import android.location.provider.ProviderRequest; import android.platform.test.annotations.Presubmit; Loading Loading @@ -218,4 +219,22 @@ public class StationaryThrottlingLocationProviderTest { verify(mDelegate, never()).onSetRequest(ProviderRequest.EMPTY_REQUEST); verify(mListener, after(75).times(1)).onReportLocation(any(LocationResult.class)); } @Test public void testNoThrottle_highAccuracy() { ProviderRequest request = new ProviderRequest.Builder().setIntervalMillis( 50).setQuality(LocationRequest.QUALITY_HIGH_ACCURACY).build(); mProvider.getController().setRequest(request); verify(mDelegate).onSetRequest(request); LocationResult loc = createLocationResult("test_provider", mRandom); mDelegateProvider.reportLocation(loc); verify(mListener, times(1)).onReportLocation(loc); mInjector.getDeviceStationaryHelper().setStationary(true); mInjector.getDeviceIdleHelper().setIdle(true); verify(mDelegate, never()).onSetRequest(ProviderRequest.EMPTY_REQUEST); verify(mListener, after(75).times(1)).onReportLocation(any(LocationResult.class)); } } Loading
services/core/java/com/android/server/location/provider/StationaryThrottlingLocationProvider.java +2 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import static java.lang.Math.max; import android.annotation.Nullable; import android.location.Location; import android.location.LocationRequest; import android.location.LocationResult; import android.location.provider.ProviderRequest; import android.os.SystemClock; Loading Loading @@ -179,6 +180,7 @@ public final class StationaryThrottlingLocationProvider extends DelegateLocation private void onThrottlingChangedLocked(boolean deliverImmediate) { long throttlingIntervalMs = INTERVAL_DISABLED; if (mDeviceStationary && mDeviceIdle && !mIncomingRequest.isLocationSettingsIgnored() && mIncomingRequest.getQuality() != LocationRequest.QUALITY_HIGH_ACCURACY && mLastLocation != null && mLastLocation.getElapsedRealtimeAgeMillis(mDeviceStationaryRealtimeMs) <= MAX_STATIONARY_LOCATION_AGE_MS) { Loading
services/tests/mockingservicestests/src/com/android/server/location/provider/StationaryThrottlingLocationProviderTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import static org.mockito.MockitoAnnotations.initMocks; import android.content.Context; import android.location.Location; import android.location.LocationRequest; import android.location.LocationResult; import android.location.provider.ProviderRequest; import android.platform.test.annotations.Presubmit; Loading Loading @@ -218,4 +219,22 @@ public class StationaryThrottlingLocationProviderTest { verify(mDelegate, never()).onSetRequest(ProviderRequest.EMPTY_REQUEST); verify(mListener, after(75).times(1)).onReportLocation(any(LocationResult.class)); } @Test public void testNoThrottle_highAccuracy() { ProviderRequest request = new ProviderRequest.Builder().setIntervalMillis( 50).setQuality(LocationRequest.QUALITY_HIGH_ACCURACY).build(); mProvider.getController().setRequest(request); verify(mDelegate).onSetRequest(request); LocationResult loc = createLocationResult("test_provider", mRandom); mDelegateProvider.reportLocation(loc); verify(mListener, times(1)).onReportLocation(loc); mInjector.getDeviceStationaryHelper().setStationary(true); mInjector.getDeviceIdleHelper().setIdle(true); verify(mDelegate, never()).onSetRequest(ProviderRequest.EMPTY_REQUEST); verify(mListener, after(75).times(1)).onReportLocation(any(LocationResult.class)); } }