Ignore PSDS download request if download is in progress
Bug: 288248029
Test: on device
Change-Id: I889dc06d8639bafae67d3d516f63f85e2397c99d
diff --git a/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java b/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java
index e97a12a..6f9b7d6 100644
--- a/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java
+++ b/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java
@@ -295,6 +295,8 @@
private final PowerManager.WakeLock mDownloadPsdsWakeLock;
@GuardedBy("mLock")
private final Set<Integer> mPendingDownloadPsdsTypes = new HashSet<>();
+ @GuardedBy("mLock")
+ private final Set<Integer> mDownloadInProgressPsdsTypes = new HashSet<>();
/**
* Properties loaded from PROPERTIES_FILE.
@@ -767,8 +769,16 @@
return;
}
synchronized (mLock) {
+ if (mDownloadInProgressPsdsTypes.contains(psdsType)) {
+ if (DEBUG) {
+ Log.d(TAG,
+ "PSDS type " + psdsType + " download in progress. Ignore the request.");
+ }
+ return;
+ }
// hold wake lock while task runs
mDownloadPsdsWakeLock.acquire(DOWNLOAD_PSDS_DATA_TIMEOUT_MS);
+ mDownloadInProgressPsdsTypes.add(psdsType);
}
Log.i(TAG, "WakeLock acquired by handleDownloadPsdsData()");
Executors.newSingleThreadExecutor().execute(() -> {
@@ -818,6 +828,7 @@
Log.e(TAG, "WakeLock expired before release in "
+ "handleDownloadPsdsData()");
}
+ mDownloadInProgressPsdsTypes.remove(psdsType);
}
});
}