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

Commit 609cc387 authored by Yu-Han Yang's avatar Yu-Han Yang
Browse files

Fix NPE when re-registerNetworkCallbacks

If handleInitialize() has not finished yet, mNetworkConnectivityCallback
would be null.

Bug: 277853506
Test: manual
Change-Id: I7d51429c614b0046c62a84ed274031d722e2fef0
parent 5f614202
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -271,6 +271,10 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
    private long mStartedChangedElapsedRealtime;
    private int mFixInterval = 1000;

    // True if handleInitialize() has finished;
    @GuardedBy("mLock")
    private boolean mInitialized;

    private ProviderRequest mProviderRequest;

    private int mPositionMode;
@@ -569,6 +573,9 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
        }

        updateEnabled();
        synchronized (mLock) {
            mInitialized = true;
        }
    }

    private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
@@ -1714,9 +1721,13 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
        }

        // Re-register network callbacks to get an update of available networks right away.
        synchronized (mLock) {
            if (mInitialized) {
                mNetworkConnectivityHandler.unregisterNetworkCallbacks();
                mNetworkConnectivityHandler.registerNetworkCallbacks();
            }
        }
    }

    @Override
    public void onCapabilitiesChanged(GnssCapabilities oldCapabilities,
+1 −0
Original line number Diff line number Diff line
@@ -303,6 +303,7 @@ class GnssNetworkConnectivityHandler {

    void unregisterNetworkCallbacks() {
        mConnMgr.unregisterNetworkCallback(mNetworkConnectivityCallback);
        mNetworkConnectivityCallback = null;
    }

    /**