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

Commit 41ece633 authored by Quang Luong's avatar Quang Luong Committed by Android (Google) Code Review
Browse files

Merge "[Wi-Fi] Split WifiEntryCallback into separate callbacks for each action"

parents 4ac1d25c d5ec80af
Loading
Loading
Loading
Loading
+9 −34
Original line number Diff line number Diff line
@@ -76,11 +76,8 @@ import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.search.SearchIndexableRaw;
import com.android.settingslib.wifi.LongPressWifiEntryPreference;
import com.android.wifitrackerlib.WifiEntry;
import com.android.wifitrackerlib.WifiEntry.WifiEntryCallback;
import com.android.wifitrackerlib.WifiEntry.WifiEntryCallback.ConnectStatus;
import com.android.wifitrackerlib.WifiEntry.WifiEntryCallback.DisconnectStatus;
import com.android.wifitrackerlib.WifiEntry.WifiEntryCallback.ForgetStatus;
import com.android.wifitrackerlib.WifiEntry.WifiEntryCallback.SignInStatus;
import com.android.wifitrackerlib.WifiEntry.ConnectCallback;
import com.android.wifitrackerlib.WifiEntry.ConnectCallback.ConnectStatus;
import com.android.wifitrackerlib.WifiPickerTracker;

import java.time.Clock;
@@ -543,7 +540,7 @@ public class WifiSettings2 extends RestrictedSettingsFragment
                connect(mSelectedWifiEntry, true /* editIfNoConfig */, false /* fullScreenEdit */);
                return true;
            case MENU_ID_DISCONNECT:
                mSelectedWifiEntry.disconnect();
                mSelectedWifiEntry.disconnect(null /* callback */);
                return true;
            case MENU_ID_FORGET:
                forget(mSelectedWifiEntry);
@@ -720,7 +717,7 @@ public class WifiSettings2 extends RestrictedSettingsFragment
                mConnectedWifiEntryPreferenceCategory.addPreference(pref);
                pref.setOnPreferenceClickListener(preference -> {
                    if (connectedEntry.canSignIn()) {
                        connectedEntry.signIn();
                        connectedEntry.signIn(null /* callback */);
                    } else {
                        launchNetworkDetailsFragment(pref);
                    }
@@ -961,7 +958,7 @@ public class WifiSettings2 extends RestrictedSettingsFragment

    private void forget(WifiEntry wifiEntry) {
        mMetricsFeatureProvider.action(getActivity(), SettingsEnums.ACTION_WIFI_FORGET);
        wifiEntry.forget();
        wifiEntry.forget(null /* callback */);
    }

    private void connect(WifiEntry wifiEntry, boolean editIfNoConfig, boolean fullScreenEdit) {
@@ -969,11 +966,9 @@ public class WifiSettings2 extends RestrictedSettingsFragment
                wifiEntry.isSaved());

        // If it's an unsaved secure WifiEntry, it will callback
        // WifiEntryCallback#onConnectResult with
        // WifiEntryCallback#CONNECT_STATUS_FAILURE_NO_CONFIG
        wifiEntry.setListener(new WifiEntryConnectCallback(wifiEntry, editIfNoConfig,
        // ConnectCallback#onConnectResult with ConnectCallback#CONNECT_STATUS_FAILURE_NO_CONFIG
        wifiEntry.connect(new WifiEntryConnectCallback(wifiEntry, editIfNoConfig,
                fullScreenEdit));
        wifiEntry.connect();
    }

    private class WifiSaveThenConnectActionListener implements WifiManager.ActionListener {
@@ -1039,7 +1034,7 @@ public class WifiSettings2 extends RestrictedSettingsFragment
                }
            };

    private class WifiEntryConnectCallback implements WifiEntryCallback {
    private class WifiEntryConnectCallback implements ConnectCallback {
        final WifiEntry mConnectWifiEntry;
        final boolean mEditIfNoConfig;
        final boolean mFullScreenEdit;
@@ -1051,11 +1046,6 @@ public class WifiSettings2 extends RestrictedSettingsFragment
            mFullScreenEdit = fullScreenEdit;
        }

        @Override
        public void onUpdated() {
            // Do nothing.
        }

        @Override
        public void onConnectResult(@ConnectStatus int status) {
            final Activity activity = getActivity();
@@ -1063,7 +1053,7 @@ public class WifiSettings2 extends RestrictedSettingsFragment
                return;
            }

            if (status == WifiEntryCallback.CONNECT_STATUS_FAILURE_NO_CONFIG) {
            if (status == ConnectCallback.CONNECT_STATUS_FAILURE_NO_CONFIG) {
                if (mEditIfNoConfig) {
                    // Edit an unsaved secure Wi-Fi network.
                    if (mFullScreenEdit) {
@@ -1077,21 +1067,6 @@ public class WifiSettings2 extends RestrictedSettingsFragment
                        Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onDisconnectResult(@DisconnectStatus int status) {
            // Do nothing.
        }

        @Override
        public void onForgetResult(@ForgetStatus int status) {
            // Do nothing.
        }

        @Override
        public void onSignInResult(@SignInStatus int status) {
            // Do nothing.
        }
    }

    private boolean isFisishingOrDestroyed(Activity activity) {
+23 −22
Original line number Diff line number Diff line
@@ -75,12 +75,14 @@ import com.android.settingslib.core.lifecycle.events.OnResume;
import com.android.settingslib.widget.ActionButtonsPreference;
import com.android.settingslib.widget.LayoutPreference;
import com.android.wifitrackerlib.WifiEntry;
import com.android.wifitrackerlib.WifiEntry.ConnectCallback;
import com.android.wifitrackerlib.WifiEntry.ConnectCallback.ConnectStatus;
import com.android.wifitrackerlib.WifiEntry.ConnectedInfo;
import com.android.wifitrackerlib.WifiEntry.ForgetCallback;
import com.android.wifitrackerlib.WifiEntry.ForgetCallback.ForgetStatus;
import com.android.wifitrackerlib.WifiEntry.SignInCallback;
import com.android.wifitrackerlib.WifiEntry.SignInCallback.SignInStatus;
import com.android.wifitrackerlib.WifiEntry.WifiEntryCallback;
import com.android.wifitrackerlib.WifiEntry.WifiEntryCallback.ConnectStatus;
import com.android.wifitrackerlib.WifiEntry.WifiEntryCallback.DisconnectStatus;
import com.android.wifitrackerlib.WifiEntry.WifiEntryCallback.ForgetStatus;
import com.android.wifitrackerlib.WifiEntry.WifiEntryCallback.SignInStatus;

import java.net.Inet4Address;
import java.net.Inet6Address;
@@ -95,7 +97,7 @@ import java.util.stream.Collectors;
 */
public class WifiDetailPreferenceController2 extends AbstractPreferenceController
        implements PreferenceControllerMixin, WifiDialog2Listener, LifecycleObserver, OnPause,
        OnResume, WifiEntryCallback {
        OnResume, WifiEntryCallback, ConnectCallback, ForgetCallback, SignInCallback {

    private static final String TAG = "WifiDetailsPrefCtrl2";
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
@@ -214,8 +216,6 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
                        || hasCapabilityChanged(nc, NET_CAPABILITY_VALIDATED)
                        || hasCapabilityChanged(nc, NET_CAPABILITY_CAPTIVE_PORTAL)
                        || hasCapabilityChanged(nc, NET_CAPABILITY_PARTIAL_CONNECTIVITY)) {
                    // TODO(b/143326832): What to do with WifiEntry?
                    // mAccessPoint.update(mWifiConfig, mWifiInfo, mNetworkInfo);
                    refreshEntityHeader();
                }
                mNetworkCapabilities = nc;
@@ -706,7 +706,7 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
            showConfirmForgetDialog();
            return;
        } else {
            mWifiEntry.forget();
            mWifiEntry.forget(this);
        }

        mMetricsFeatureProvider.action(
@@ -719,7 +719,7 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
        final AlertDialog dialog = new AlertDialog.Builder(mContext)
                .setPositiveButton(R.string.forget, ((dialog1, which) -> {
                    try {
                        mWifiEntry.forget();
                        mWifiEntry.forget(this);
                    } catch (RuntimeException e) {
                        Log.e(TAG, "Failed to remove Passpoint configuration for "
                                + WifiEntryShell.getPasspointFqdn(mWifiEntry));
@@ -768,7 +768,7 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
    private void signIntoNetwork() {
        mMetricsFeatureProvider.action(
                mFragment.getActivity(), SettingsEnums.ACTION_WIFI_SIGNIN);
        mConnectivityManager.startCaptivePortalApp(mNetwork);
        mWifiEntry.signIn(this);
    }

    @Override
@@ -814,7 +814,7 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle

    @VisibleForTesting
    void connectNetwork() {
        mWifiEntry.connect();
        mWifiEntry.connect(this);
    }

    private void refreshMacTitle() {
@@ -849,7 +849,7 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
     */
    @Override
    public void onConnectResult(@ConnectStatus int status) {
        if (status == WifiEntryCallback.CONNECT_STATUS_SUCCESS) {
        if (status == ConnectCallback.CONNECT_STATUS_SUCCESS) {
            Toast.makeText(mContext,
                    mContext.getString(R.string.wifi_connected_to_message, mWifiEntry.getTitle()),
                    Toast.LENGTH_SHORT).show();
@@ -868,25 +868,26 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
                .setButton3Visible(true);
    }

    // TODO: Add disconnect button.
    /**
     * Result of the disconnect request indicated by the DISCONNECT_STATUS constants.
     */
    @Override
    public void onDisconnectResult(@DisconnectStatus int status) {
        if (status != WifiEntryCallback.DISCONNECT_STATUS_SUCCESS) {
            Log.e(TAG, "Disconnect Wi-Fi network failed");
        }

        updateNetworkInfo();
        refreshPage();
    }
    //@Override
    //public void onDisconnectResult(@DisconnectStatus int status) {
    //    if (status != DisconnectCallback.DISCONNECT_STATUS_SUCCESS) {
    //        Log.e(TAG, "Disconnect Wi-Fi network failed");
    //    }
    //
    //    updateNetworkInfo();
    //    refreshPage();
    //}

    /**
     * Result of the forget request indicated by the FORGET_STATUS constants.
     */
    @Override
    public void onForgetResult(@ForgetStatus int status) {
        if (status != WifiEntryCallback.FORGET_STATUS_SUCCESS) {
        if (status != ForgetCallback.FORGET_STATUS_SUCCESS) {
            Log.e(TAG, "Forget Wi-Fi network failed");
        }

+1 −1
Original line number Diff line number Diff line
@@ -88,7 +88,7 @@ public class WifiPrivacyPreferenceController2 extends BasePreferenceController i
            // To activate changing, we need to reconnect network. WiFi will auto connect to
            // current network after disconnect(). Only needed when this is connected network.
            if (mWifiEntry.getConnectedState() == WifiEntry.CONNECTED_STATE_CONNECTED) {
                mWifiEntry.disconnect();
                mWifiEntry.disconnect(null /* callback */);
            }
        }
        updateSummary((DropDownPreference) preference, privacy);