Merge "Fix unregister after delayed register" into sc-qpr1-dev am: f9828e9795 am: 45e3478030 am: f6d0a3f33c

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15880928

Change-Id: I8f2533e14f5ed6861fd6264adc1d41db8388accc
This commit is contained in:
TreeHugger Robot
2021-09-23 06:49:35 +00:00
committed by Automerger Merge Worker
2 changed files with 21 additions and 6 deletions

View File

@@ -1960,11 +1960,6 @@ public class LocationProviderManager extends
Preconditions.checkState(Thread.holdsLock(mLock));
}
if (mDelayedRegister != null) {
mAlarmHelper.cancel(mDelayedRegister);
mDelayedRegister = null;
}
// calculate how long the new request should be delayed before sending it off to the
// provider, under the assumption that once we send the request off, the provider will
// immediately attempt to deliver a new location satisfying that request.
@@ -1997,8 +1992,8 @@ public class LocationProviderManager extends
public void onAlarm() {
synchronized (mLock) {
if (mDelayedRegister == this) {
setProviderRequest(newRequest);
mDelayedRegister = null;
setProviderRequest(newRequest);
}
}
}
@@ -2025,6 +2020,11 @@ public class LocationProviderManager extends
@GuardedBy("mLock")
void setProviderRequest(ProviderRequest request) {
if (mDelayedRegister != null) {
mAlarmHelper.cancel(mDelayedRegister);
mDelayedRegister = null;
}
EVENT_LOG.logProviderUpdateRequest(mName, request);
mProvider.getController().setRequest(request);

View File

@@ -905,6 +905,21 @@ public class LocationProviderManagerTest {
assertThat(mProvider.getRequest().getIntervalMillis()).isEqualTo(60000);
}
@Test
public void testProviderRequest_DelayedRequest_Remove() {
mProvider.setProviderLocation(createLocation(NAME, mRandom));
ILocationListener listener1 = createMockLocationListener();
LocationRequest request1 = new LocationRequest.Builder(60000)
.setWorkSource(WORK_SOURCE)
.build();
mManager.registerLocationRequest(request1, IDENTITY, PERMISSION_FINE, listener1);
mManager.unregisterLocationRequest(listener1);
mInjector.getAlarmHelper().incrementAlarmTime(60000);
assertThat(mProvider.getRequest().isActive()).isFalse();
}
@Test
public void testProviderRequest_SpamRequesting() {
mProvider.setProviderLocation(createLocation(NAME, mRandom));