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

Commit b5e7bbe5 authored by WyattRiley's avatar WyattRiley Committed by Wyatt Riley
Browse files

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 on Nexus 5x with test thread sleep and verify fix
Change-Id: I596f913bc79873274c2743132c93ef2381d9f3c7
parent ed5973b8
Loading
Loading
Loading
Loading
+5 −4
Original line number Original line Diff line number Diff line
@@ -123,8 +123,8 @@ public class GpsNetInitiatedHandler {
    static private boolean mIsHexInput = true;
    static private boolean mIsHexInput = true;


    // End time of emergency call, and extension, if set
    // End time of emergency call, and extension, if set
    private long mCallEndElapsedRealtimeMillis = 0;
    private volatile long mCallEndElapsedRealtimeMillis = 0;
    private long mEmergencyExtensionMillis = 0;
    private volatile long mEmergencyExtensionMillis = 0;


    public static class GpsNiNotification
    public static class GpsNiNotification
    {
    {
@@ -250,8 +250,9 @@ public class GpsNetInitiatedHandler {
     */
     */
    public boolean getInEmergency() {
    public boolean getInEmergency() {
        boolean isInEmergencyExtension =
        boolean isInEmergencyExtension =
                (SystemClock.elapsedRealtime() - mCallEndElapsedRealtimeMillis) <
                (mCallEndElapsedRealtimeMillis > 0)
                        mEmergencyExtensionMillis;
                && ((SystemClock.elapsedRealtime() - mCallEndElapsedRealtimeMillis)
                        < mEmergencyExtensionMillis);
        boolean isInEmergencyCallback = Boolean.parseBoolean(
        boolean isInEmergencyCallback = Boolean.parseBoolean(
                SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE));
                SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE));
        return mIsInEmergencyCall || isInEmergencyCallback || isInEmergencyExtension;
        return mIsInEmergencyCall || isInEmergencyCallback || isInEmergencyExtension;
+2 −3
Original line number Original line Diff line number Diff line
@@ -705,12 +705,11 @@ public class GnssLocationProvider implements LocationProviderInterface {
        // while IO initialization and registration is delegated to our internal handler
        // while IO initialization and registration is delegated to our internal handler
        // this approach is just fine because events are posted to our handler anyway
        // this approach is just fine because events are posted to our handler anyway
        mProperties = new Properties();
        mProperties = new Properties();
        sendMessage(INITIALIZE_HANDLER, 0, null);
        // Create a GPS net-initiated handler (also needed by handleInitialize)

        // Create a GPS net-initiated handler.
        mNIHandler = new GpsNetInitiatedHandler(context,
        mNIHandler = new GpsNetInitiatedHandler(context,
                                                mNetInitiatedListener,
                                                mNetInitiatedListener,
                                                mSuplEsEnabled);
                                                mSuplEsEnabled);
        sendMessage(INITIALIZE_HANDLER, 0, null);


        mListenerHelper = new GnssStatusListenerHelper(mHandler) {
        mListenerHelper = new GnssStatusListenerHelper(mHandler) {
            @Override
            @Override