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

Commit 67c1d26a authored by Hisanobu, Watanabe's avatar Hisanobu, Watanabe Committed by Yuuki Habu
Browse files

Fix NullPointerException in CaptivePortalLogin

[Problem]
After reboot, the CaptivePortalLogin crashes when start the
CaptivePortalLogin from Recents Screen.

[Root Cause]
Although Network class is null, Network#getPrivateDnsBypassingCopy is
called at CaptivePortalLoginActivity

[Solution]
To check if NetworkCapabilities is null before
Network#getPrivateDnsBypassingCopy

Bug: 113303484
Test: built, boot and manual

Change-Id: Icff8446fefa9700dcbcd1f8f1e4edeaf4b0d3557
parent 7cfbdcc4
Loading
Loading
Loading
Loading
+16 −18
Original line number Original line Diff line number Diff line
@@ -130,6 +130,22 @@ public class CaptivePortalLoginActivity extends Activity {
            mProbeSpec = null;
            mProbeSpec = null;
        }
        }


        mNetworkCallback = new NetworkCallback() {
            @Override
            public void onLost(Network lostNetwork) {
                // If the network disappears while the app is up, exit.
                if (mNetwork.equals(lostNetwork)) done(Result.UNWANTED);
            }
        };
        mCm.registerNetworkCallback(new NetworkRequest.Builder().build(), mNetworkCallback);

        // If the network has disappeared, exit.
        final NetworkCapabilities networkCapabilities = mCm.getNetworkCapabilities(mNetwork);
        if (networkCapabilities == null) {
            finishAndRemoveTask();
            return;
        }

        // Also initializes proxy system properties.
        // Also initializes proxy system properties.
        mNetwork = mNetwork.getPrivateDnsBypassingCopy();
        mNetwork = mNetwork.getPrivateDnsBypassingCopy();
        mCm.bindProcessToNetwork(mNetwork);
        mCm.bindProcessToNetwork(mNetwork);
@@ -139,24 +155,6 @@ public class CaptivePortalLoginActivity extends Activity {
        // setContentView initializes the WebView logic which in turn reads the system properties.
        // setContentView initializes the WebView logic which in turn reads the system properties.
        setContentView(R.layout.activity_captive_portal_login);
        setContentView(R.layout.activity_captive_portal_login);


        // Exit app if Network disappears.
        final NetworkCapabilities networkCapabilities = mCm.getNetworkCapabilities(mNetwork);
        if (networkCapabilities == null) {
            finishAndRemoveTask();
            return;
        }
        mNetworkCallback = new NetworkCallback() {
            @Override
            public void onLost(Network lostNetwork) {
                if (mNetwork.equals(lostNetwork)) done(Result.UNWANTED);
            }
        };
        final NetworkRequest.Builder builder = new NetworkRequest.Builder();
        for (int transportType : networkCapabilities.getTransportTypes()) {
            builder.addTransportType(transportType);
        }
        mCm.registerNetworkCallback(builder.build(), mNetworkCallback);

        getActionBar().setDisplayShowHomeEnabled(false);
        getActionBar().setDisplayShowHomeEnabled(false);
        getActionBar().setElevation(0); // remove shadow
        getActionBar().setElevation(0); // remove shadow
        getActionBar().setTitle(getHeaderTitle());
        getActionBar().setTitle(getHeaderTitle());