From c5706f651a0462e9ae5a91c9a026d44710b1f8ea Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Tue, 18 Apr 2017 11:26:26 -0700 Subject: [PATCH] Add a wakelock timeout when downloading xtra data for GNSS. Test: manual Bug:36973866 Change-Id: Ia7168f313abebbf3c5c4fc26567ed914f1987a91 --- .../android/server/location/GnssLocationProvider.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java index 3a1ddd789f134..fdaa599e3c379 100644 --- a/services/core/java/com/android/server/location/GnssLocationProvider.java +++ b/services/core/java/com/android/server/location/GnssLocationProvider.java @@ -288,6 +288,9 @@ public class GnssLocationProvider implements LocationProviderInterface { // current setting - 4 hours private static final long MAX_RETRY_INTERVAL = 4*60*60*1000; + // Timeout when holding wakelocks for downloading XTRA data. + private static final long DOWNLOAD_XTRA_DATA_TIMEOUT_MS = 60 * 1000; + private BackOff mNtpBackOff = new BackOff(RETRY_INTERVAL, MAX_RETRY_INTERVAL); private BackOff mXtraBackOff = new BackOff(RETRY_INTERVAL, MAX_RETRY_INTERVAL); @@ -986,7 +989,7 @@ public class GnssLocationProvider implements LocationProviderInterface { mDownloadXtraDataPending = STATE_DOWNLOADING; // hold wake lock while task runs - mWakeLock.acquire(); + mWakeLock.acquire(DOWNLOAD_XTRA_DATA_TIMEOUT_MS); Log.i(TAG, "WakeLock acquired by handleDownloadXtraData()"); AsyncTask.THREAD_POOL_EXECUTOR.execute(new Runnable() { @Override @@ -1009,7 +1012,11 @@ public class GnssLocationProvider implements LocationProviderInterface { } // release wake lock held by task - mWakeLock.release(); + if (mWakeLock.isHeld()) { + mWakeLock.release(); + } else { + Log.e(TAG, "WakeLock expired before release in handleDownloadXtraData()"); + } Log.i(TAG, "WakeLock released by handleDownloadXtraData()"); } });