From 65069e90c52b74c16e65fb476e6c813e69126edc Mon Sep 17 00:00:00 2001 From: Soonil Nagarkar Date: Thu, 6 Jan 2022 14:29:28 -0800 Subject: [PATCH] Treat mock locations the same for wakelocks If we treat mock locations differently from real locations with respect to wakelocks it becomes much harder to detect wakelock bugs in testing. Test: presubmits Change-Id: I0133f13c088705a420fd4613afda452187047c6a --- .../provider/LocationProviderManager.java | 25 ++++++------------- 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/services/core/java/com/android/server/location/provider/LocationProviderManager.java b/services/core/java/com/android/server/location/provider/LocationProviderManager.java index 1ba32ac1eec27..678a7536efa98 100644 --- a/services/core/java/com/android/server/location/provider/LocationProviderManager.java +++ b/services/core/java/com/android/server/location/provider/LocationProviderManager.java @@ -915,30 +915,19 @@ public class LocationProviderManager extends return null; } + // acquire a wakelock for non-passive requests + boolean useWakeLock = + getRequest().getIntervalMillis() != LocationRequest.PASSIVE_INTERVAL; + // deliver location return new ListenerOperation() { - private boolean mUseWakeLock; - @Override public void onPreExecute() { - mUseWakeLock = false; - - // don't acquire a wakelock for passive requests or for mock locations - if (getRequest().getIntervalMillis() != LocationRequest.PASSIVE_INTERVAL) { - final int size = locationResult.size(); - for (int i = 0; i < size; ++i) { - if (!locationResult.get(i).isMock()) { - mUseWakeLock = true; - break; - } - } - } - // update last delivered location setLastDeliveredLocation(locationResult.getLastLocation()); - if (mUseWakeLock) { + if (useWakeLock) { mWakeLock.acquire(WAKELOCK_TIMEOUT_MS); } } @@ -955,14 +944,14 @@ public class LocationProviderManager extends } listener.deliverOnLocationChanged(deliverLocationResult, - mUseWakeLock ? mWakeLockReleaser : null); + useWakeLock ? mWakeLockReleaser : null); EVENT_LOG.logProviderDeliveredLocations(mName, locationResult.size(), getIdentity()); } @Override public void onPostExecute(boolean success) { - if (!success && mUseWakeLock) { + if (!success && useWakeLock) { mWakeLock.release(); }