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

Commit 2bcfecdb authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Disconnect if the user cancels the no/partial connectivity dialog" into qt-dev

parents eeecb3e2 5456b596
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ public final class WifiNoInternetDialog extends AlertActivity implements
    private ConnectivityManager.NetworkCallback mNetworkCallback;
    private CheckBox mAlwaysAllow;
    private String mAction;
    private boolean mButtonClicked;

    private boolean isKnownAction(Intent intent) {
        return intent.getAction().equals(ACTION_PROMPT_UNVALIDATED)
@@ -169,14 +170,31 @@ public final class WifiNoInternetDialog extends AlertActivity implements
            mCM.unregisterNetworkCallback(mNetworkCallback);
            mNetworkCallback = null;
        }

        // If the user exits the no Internet or partial connectivity dialog without taking any
        // action, disconnect the network, because once the dialog has been dismissed there is no
        // way to use the network.
        //
        // Unfortunately, AlertDialog does not seem to offer any good way to get an onCancel or
        // onDismiss callback. So we implement this ourselves.
        if (isFinishing() && !mButtonClicked) {
            if (ACTION_PROMPT_PARTIAL_CONNECTIVITY.equals(mAction)) {
                mCM.setAcceptPartialConnectivity(mNetwork, false /* accept */, false /* always */);
            } else if (ACTION_PROMPT_UNVALIDATED.equals(mAction)) {
                mCM.setAcceptUnvalidated(mNetwork, false /* accept */, false /* always */);
            }
        }
        super.onDestroy();
    }

    @Override
    public void onClick(DialogInterface dialog, int which) {
        if (which != BUTTON_NEGATIVE && which != BUTTON_POSITIVE) return;
        final boolean always = mAlwaysAllow.isChecked();
        final String what, action;

        mButtonClicked = true;

        if (ACTION_PROMPT_UNVALIDATED.equals(mAction)) {
            what = "NO_INTERNET";
            final boolean accept = (which == BUTTON_POSITIVE);