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

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

Change-Id: Ie0b2e98cb7b4a3080bd9d963448daab5ef0288a3
This commit is contained in:
TreeHugger Robot
2021-09-23 05:33:08 +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));