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

Commit 6934c022 authored by Arc Wang's avatar Arc Wang Committed by Android (Google) Code Review
Browse files

Merge "[Wi-Fi] Apply WifiTrackerLib objects in Wi-Fi Slice"

parents 551dcf08 0496d2c1
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -2201,6 +2201,8 @@
    <string name="wifi_turned_on_message">Wi\u2011Fi turned on</string>
    <!-- A notification for connected to a Wi-Fi network [CHAR LIMIT=NONE] -->
    <string name="wifi_connected_to_message">Connected to <xliff:g id="network_name" example="MyNetwork">%1$s</xliff:g></string>
    <!-- A notification for connecting to a Wi-Fi network [CHAR LIMIT=NONE] -->
    <string name="wifi_connecting_to_message">Connecting to <xliff:g id="network_name" example="MyNetwork">%1$s</xliff:g></string>
    <!-- Button label to connecting progress to a Wi-Fi network [CHAR LIMIT=20] -->
    <string name="wifi_connecting">Connecting\u2026</string>
    <!-- Failured notification for connect -->
+0 −2
Original line number Diff line number Diff line
@@ -40,7 +40,6 @@ import com.android.settings.core.InstrumentedFragment;
import com.android.settings.homepage.contextualcards.slices.BluetoothUpdateWorker;
import com.android.settings.homepage.contextualcards.slices.SwipeDismissalDelegate;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.wifi.slice.ContextualWifiScanWorker;

public class ContextualCardsFragment extends InstrumentedFragment implements
        FocusRecyclerView.FocusListener {
@@ -80,7 +79,6 @@ public class ContextualCardsFragment extends InstrumentedFragment implements
        super.onStart();
        registerScreenOffReceiver();
        registerKeyEventReceiver();
        ContextualWifiScanWorker.newVisibleUiSession();
        mContextualCardManager.loadContextualCards(LoaderManager.getInstance(this),
                sRestartLoaderNeeded);
        sRestartLoaderNeeded = false;
+2 −1
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import androidx.annotation.VisibleForTesting;

import com.android.settings.R;
import com.android.settings.core.InstrumentedFragment;
import com.android.settings.wifi.dpp.WifiDppQrCodeScannerFragment;
import com.android.settings.wifi.dpp.WifiDppUtils;

/**
@@ -116,7 +117,7 @@ public class AddNetworkFragment extends InstrumentedFragment implements WifiConf
            }

            final WifiConfiguration config = data.getParcelableExtra(
                    WifiDialogActivity.KEY_WIFI_CONFIGURATION);
                    WifiDppQrCodeScannerFragment.KEY_WIFI_CONFIGURATION);
            successfullyFinish(config);
        }
    }
+2 −4
Original line number Diff line number Diff line
@@ -57,7 +57,6 @@ import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.ViewModelProviders;

import com.android.settings.R;
import com.android.settings.wifi.WifiDialogActivity;
import com.android.settings.wifi.qrcode.QrCamera;
import com.android.settings.wifi.qrcode.QrDecorateView;
import com.android.wifitrackerlib.WifiEntry;
@@ -91,7 +90,7 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl
    // Key for Bundle usage
    private static final String KEY_IS_CONFIGURATOR_MODE = "key_is_configurator_mode";
    private static final String KEY_LATEST_ERROR_CODE = "key_latest_error_code";
    private static final String KEY_WIFI_CONFIGURATION = "key_wifi_configuration";
    public static final String KEY_WIFI_CONFIGURATION = "key_wifi_configuration";

    private static final int ARG_RESTART_CAMERA = 1;

@@ -689,8 +688,7 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl
    @Override
    public void onSuccess() {
        final Intent resultIntent = new Intent();
        resultIntent.putExtra(WifiDialogActivity.KEY_WIFI_CONFIGURATION,
                mEnrolleeWifiConfiguration);
        resultIntent.putExtra(KEY_WIFI_CONFIGURATION, mEnrolleeWifiConfiguration);

        final Activity hostActivity = getActivity();
        hostActivity.setResult(Activity.RESULT_OK, resultIntent);
+46 −33
Original line number Diff line number Diff line
@@ -19,61 +19,74 @@ package com.android.settings.wifi.slice;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.text.TextUtils;
import android.widget.Toast;

import androidx.annotation.VisibleForTesting;

import com.android.settings.wifi.WifiConnectListener;
import com.android.settings.R;
import com.android.settings.slices.SliceBackgroundWorker;
import com.android.settings.wifi.WifiDialogActivity;
import com.android.settings.wifi.WifiUtils;
import com.android.settingslib.wifi.AccessPoint;
import com.android.wifitrackerlib.WifiEntry;
import com.android.wifitrackerlib.WifiEntry.ConnectCallback;

/**
 * This receiver helps connect to Wi-Fi network
 */
public class ConnectToWifiHandler extends BroadcastReceiver {

    static final String KEY_CHOSEN_WIFIENTRY_KEY = "key_chosen_wifientry_key";
    static final String KEY_WIFI_SLICE_URI = "key_wifi_slice_uri";

    @Override
    public void onReceive(Context context, Intent intent) {
        if (context == null || intent == null) {
            return;
        }

        final Network network = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK);
        final Bundle accessPointState = intent.getBundleExtra(
                WifiDialogActivity.KEY_ACCESS_POINT_STATE);

        if (network != null) {
            WifiScanWorker.clearClickedWifi();
            final ConnectivityManager cm = context.getSystemService(ConnectivityManager.class);
            // start captive portal app to sign in to network
            cm.startCaptivePortalApp(network);
        } else if (accessPointState != null) {
            connect(context, new AccessPoint(context, accessPointState));
        final String key = intent.getStringExtra(KEY_CHOSEN_WIFIENTRY_KEY);
        if (TextUtils.isEmpty(key)) {
            return;
        }
        if (intent.getParcelableExtra(KEY_WIFI_SLICE_URI) == null) {
            return;
        }
        final WifiScanWorker worker = getWifiScanWorker(intent);
        if (worker == null) {
            return;
        }
        final WifiEntry wifiEntry = worker.getWifiEntry(key);
        if (wifiEntry == null) {
            return;
        }
        wifiEntry.connect(new WifiEntryConnectCallback(context, wifiEntry));
    }

    @VisibleForTesting
    void connect(Context context, AccessPoint accessPoint) {
        ContextualWifiScanWorker.saveSession();
        WifiScanWorker.saveClickedWifi(accessPoint);
    WifiScanWorker getWifiScanWorker(Intent intent) {
        return SliceBackgroundWorker.getInstance(intent.getParcelableExtra(KEY_WIFI_SLICE_URI));
    }

        final WifiConnectListener connectListener = new WifiConnectListener(context);
        switch (WifiUtils.getConnectingType(accessPoint)) {
            case WifiUtils.CONNECT_TYPE_OSU_PROVISION:
                accessPoint.startOsuProvisioning(connectListener);
                break;
    @VisibleForTesting
    static class WifiEntryConnectCallback implements WifiEntry.ConnectCallback {
        final Context mContext;
        final WifiEntry mWifiEntry;

            case WifiUtils.CONNECT_TYPE_OPEN_NETWORK:
                accessPoint.generateOpenNetworkConfig();
        WifiEntryConnectCallback(Context context, WifiEntry connectWifiEntry) {
            mContext = context;
            mWifiEntry = connectWifiEntry;
        }

            case WifiUtils.CONNECT_TYPE_SAVED_NETWORK:
                final WifiManager wifiManager = context.getSystemService(WifiManager.class);
                wifiManager.connect(accessPoint.getConfig(), connectListener);
                break;
        @Override
        public void onConnectResult(@ConnectStatus int status) {
            if (status == ConnectCallback.CONNECT_STATUS_FAILURE_NO_CONFIG) {
                final Intent intent = new Intent(mContext, WifiDialogActivity.class)
                        .putExtra(WifiDialogActivity.KEY_CHOSEN_WIFIENTRY_KEY, mWifiEntry.getKey());
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                mContext.startActivity(intent);
            } else if (status == CONNECT_STATUS_FAILURE_UNKNOWN) {
                Toast.makeText(mContext, R.string.wifi_failed_connect_message,
                        Toast.LENGTH_SHORT).show();
            }
        }
    }
}
Loading