Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1c9b9bab authored by Yu-Han Yang's avatar Yu-Han Yang
Browse files

Ignore PSDS download request if download is in progress

Bug: 288248029
Test: on device
Change-Id: I889dc06d8639bafae67d3d516f63f85e2397c99d
parent 8813848c
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -295,6 +295,8 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
    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 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
            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 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
                    Log.e(TAG, "WakeLock expired before release in "
                            + "handleDownloadPsdsData()");
                }
                mDownloadInProgressPsdsTypes.remove(psdsType);
            }
        });
    }