summaryrefslogtreecommitdiff
path: root/location/java/com
diff options
context:
space:
mode:
author WyattRiley <wyattriley@google.com> 2019-02-28 12:05:56 -0800
committer Wyatt Riley <wyattriley@google.com> 2019-03-01 21:13:02 +0000
commitfbcb41f9fbc4e91e023f3103a391182600312ef7 (patch)
treee13cc3b52820695d67bee35398888cac35014595 /location/java/com
parentcd8eace91d4b3b2c3de29304f226dbefa9214216 (diff)
DO NOT MERGE - SUPL ES Extension - Safer Init and Not After Boot
Safe order of pointer setting and background thread start Verifying mCallEndElapsedRealtimeMillis is not the initial value Bug: 112159033 Bug: 115361555 Bug: 125124724 Test: Verified not-after-boot with test code b/115361555#comment14 Test: Reproed NPE with test thread sleep and verify fix Change-Id: I25dcd5a5b36c218ea8b7ab88d6909382709fd7ab
Diffstat (limited to 'location/java/com')
-rw-r--r--location/java/com/android/internal/location/GpsNetInitiatedHandler.java9
1 files changed, 5 insertions, 4 deletions
diff --git a/location/java/com/android/internal/location/GpsNetInitiatedHandler.java b/location/java/com/android/internal/location/GpsNetInitiatedHandler.java
index b5313256e4dc..4e2f28b24305 100644
--- a/location/java/com/android/internal/location/GpsNetInitiatedHandler.java
+++ b/location/java/com/android/internal/location/GpsNetInitiatedHandler.java
@@ -121,8 +121,8 @@ public class GpsNetInitiatedHandler {
static private boolean mIsHexInput = true;
// End time of emergency call, and extension, if set
- private long mCallEndElapsedRealtimeMillis = 0;
- private long mEmergencyExtensionMillis = 0;
+ private volatile long mCallEndElapsedRealtimeMillis = 0;
+ private volatile long mEmergencyExtensionMillis = 0;
public static class GpsNiNotification
{
@@ -245,8 +245,9 @@ public class GpsNetInitiatedHandler {
*/
public boolean getInEmergency() {
boolean isInEmergencyExtension =
- (SystemClock.elapsedRealtime() - mCallEndElapsedRealtimeMillis) <
- mEmergencyExtensionMillis;
+ (mCallEndElapsedRealtimeMillis > 0)
+ && ((SystemClock.elapsedRealtime() - mCallEndElapsedRealtimeMillis)
+ < mEmergencyExtensionMillis);
boolean isInEmergencyCallback = mTelephonyManager.getEmergencyCallbackMode();
return mIsInEmergencyCall || isInEmergencyCallback || isInEmergencyExtension;
}