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

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

Merge "[Wi-Fi DPP] Refine code"

parents 7833c334 a12b372d
Loading
Loading
Loading
Loading
+16 −32
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.settings.wifi.dpp;
import android.app.Activity;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.net.wifi.EasyConnectStatusCallback;
import android.net.wifi.WifiManager;
import android.os.Bundle;
@@ -28,7 +27,6 @@ import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
import android.widget.Button;
import android.widget.ImageView;

@@ -36,8 +34,6 @@ import androidx.lifecycle.ViewModelProviders;

import com.android.settings.R;

import java.util.concurrent.Executor;

/**
 * After getting Wi-Fi network information and(or) QR code, this fragment config a device to connect
 * to the Wi-Fi network.
@@ -51,7 +47,7 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
    private int mLatestStatusCode = WifiDppUtils.EASY_CONNECT_EVENT_FAILURE_NONE;

    // Key for Bundle usage
    private static final String KEY_LATEST_ERROR_CODE = "key_latest_error_code";
    private static final String KEY_LATEST_STATUS_CODE = "key_latest_status_code";

    private class EasyConnectConfiguratorStatusCallback extends EasyConnectStatusCallback {
        @Override
@@ -80,7 +76,7 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
    private void showSuccessUi(boolean isConfigurationChange) {
        setHeaderIconImageResource(R.drawable.ic_devices_check_circle_green_32dp);
        setHeaderTitle(R.string.wifi_dpp_wifi_shared_with_device);
        setProgressBarShown(isGoingInitiator());
        setProgressBarShown(isEasyConnectHandshaking());
        mSummary.setVisibility(View.INVISIBLE);
        mWifiApPictureView.setImageResource(R.drawable.wifi_dpp_success);
        mChooseDifferentNetwork.setVisibility(View.INVISIBLE);
@@ -170,12 +166,12 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
            mLeftButton.setVisibility(View.INVISIBLE);
        }

        if (isGoingInitiator()) {
        if (isEasyConnectHandshaking()) {
            mSummary.setText(R.string.wifi_dpp_sharing_wifi_with_this_device);
        }

        setProgressBarShown(isGoingInitiator());
        mRightButton.setVisibility(isGoingInitiator() ? View.INVISIBLE : View.VISIBLE);
        setProgressBarShown(isEasyConnectHandshaking());
        mRightButton.setVisibility(isEasyConnectHandshaking() ? View.INVISIBLE : View.VISIBLE);

        if (!isConfigurationChange) {
            mLatestStatusCode = code;
@@ -205,7 +201,7 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
        super.onCreate(savedInstanceState);

        if (savedInstanceState != null) {
            mLatestStatusCode = savedInstanceState.getInt(KEY_LATEST_ERROR_CODE);
            mLatestStatusCode = savedInstanceState.getInt(KEY_LATEST_STATUS_CODE);
        }

        final WifiDppInitiatorViewModel model =
@@ -214,7 +210,7 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
        model.getStatusCode().observe(this, statusCode -> {
            // After configuration change, observe callback will be triggered,
            // do nothing for this case if a handshake does not end
            if (model.isGoingInitiator()) {
            if (model.isWifiDppHandshaking()) {
                return;
            }

@@ -272,8 +268,9 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
            if (mLatestStatusCode == WifiDppUtils.EASY_CONNECT_EVENT_SUCCESS) {
                showSuccessUi(/* isConfigurationChange */ true);
            } else if (mLatestStatusCode == WifiDppUtils.EASY_CONNECT_EVENT_FAILURE_NONE) {
                setProgressBarShown(isGoingInitiator());
                mRightButton.setVisibility(isGoingInitiator() ? View.INVISIBLE : View.VISIBLE);
                setProgressBarShown(isEasyConnectHandshaking());
                mRightButton.setVisibility(isEasyConnectHandshaking() ?
                        View.INVISIBLE : View.VISIBLE);
            } else {
                showErrorUi(mLatestStatusCode, /* isConfigurationChange */ true);
            }
@@ -282,7 +279,7 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {

    @Override
    public void onSaveInstanceState(Bundle outState) {
        outState.putInt(KEY_LATEST_ERROR_CODE, mLatestStatusCode);
        outState.putInt(KEY_LATEST_STATUS_CODE, mLatestStatusCode);

        super.onSaveInstanceState(outState);
    }
@@ -310,9 +307,9 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {

    // Container Activity must implement this interface
    public interface OnClickChooseDifferentNetworkListener {
        public void onClickChooseDifferentNetwork();
        void onClickChooseDifferentNetwork();
    }
    OnClickChooseDifferentNetworkListener mClickChooseDifferentNetworkListener;
    private OnClickChooseDifferentNetworkListener mClickChooseDifferentNetworkListener;

    @Override
    public void onAttach(Context context) {
@@ -329,34 +326,21 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
    }

    // Check is Easy Connect handshaking or not
    private boolean isGoingInitiator() {
    private boolean isEasyConnectHandshaking() {
        final WifiDppInitiatorViewModel model =
                ViewModelProviders.of(this).get(WifiDppInitiatorViewModel.class);

        return model.isGoingInitiator();
        return model.isWifiDppHandshaking();
    }

    private void updateSummary() {
        if (isGoingInitiator()) {
        if (isEasyConnectHandshaking()) {
            mSummary.setText(R.string.wifi_dpp_sharing_wifi_with_this_device);
        } else {
            mSummary.setText(getString(R.string.wifi_dpp_add_device_to_wifi, getSsid()));
        }
    }

    /**
     * This fragment will change UI display and text messages for events. To improve Talkback user
     * experienience, using this method to focus on a right component and announce a changed text
     * after an UI changing event.
     *
     * @param focusView The UI component which will be focused
     * @param announceView The UI component's text will be talked
     */
    private void changeFocusAndAnnounceChange(View focusView, View announceView) {
        focusView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
        announceView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
    }

    @Override
    protected boolean isFooterAvailable() {
        return true;
+2 −6
Original line number Diff line number Diff line
@@ -22,8 +22,6 @@ import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
import android.widget.ListView;

import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
@@ -37,8 +35,6 @@ import com.android.settings.R;
public class WifiDppChooseSavedWifiNetworkFragment extends WifiDppQrCodeBaseFragment {
    private static final String TAG_FRAGMENT_WIFI_NETWORK_LIST = "wifi_network_list_fragment";

    private ListView mSavedWifiNetworkList;

    @Override
    public int getMetricsCategory() {
        return SettingsEnums.SETTINGS_WIFI_DPP_CONFIGURATOR;
@@ -48,8 +44,8 @@ public class WifiDppChooseSavedWifiNetworkFragment extends WifiDppQrCodeBaseFrag
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        /** Embeded WifiNetworkListFragment as child fragment within
         * WifiDppChooseSavedWifiNetworkFragment. */
        // Embedded WifiNetworkListFragment as child fragment within
        // WifiDppChooseSavedWifiNetworkFragment.
        final FragmentManager fragmentManager = getChildFragmentManager();
        final WifiNetworkListFragment fragment = new WifiNetworkListFragment();
        final Bundle args = getArguments();
+3 −4
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@ import android.provider.Settings;
import android.util.Log;

import androidx.annotation.VisibleForTesting;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;

import com.android.settings.R;
@@ -59,9 +58,9 @@ public class WifiDppConfiguratorActivity extends WifiDppBaseActivity implements

    private static final String TAG = "WifiDppConfiguratorActivity";

    public static final String ACTION_CONFIGURATOR_QR_CODE_SCANNER =
    static final String ACTION_CONFIGURATOR_QR_CODE_SCANNER =
            "android.settings.WIFI_DPP_CONFIGURATOR_QR_CODE_SCANNER";
    public static final String ACTION_CONFIGURATOR_QR_CODE_GENERATOR =
    static final String ACTION_CONFIGURATOR_QR_CODE_GENERATOR =
            "android.settings.WIFI_DPP_CONFIGURATOR_QR_CODE_GENERATOR";

    // Key for Bundle usage
@@ -274,7 +273,7 @@ public class WifiDppConfiguratorActivity extends WifiDppBaseActivity implements
        return mWifiNetworkConfig;
    }

    public WifiQrCode getWifiDppQrCode() {
    WifiQrCode getWifiDppQrCode() {
        return mWifiDppQrCode;
    }

+3 −7
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import android.app.settings.SettingsEnums;
import android.content.Intent;
import android.util.Log;

import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;

import com.android.settings.R;
@@ -35,7 +34,7 @@ public class WifiDppEnrolleeActivity extends WifiDppBaseActivity implements
        WifiDppQrCodeScannerFragment.OnScanWifiDppSuccessListener {
    private static final String TAG = "WifiDppEnrolleeActivity";

    public static final String ACTION_ENROLLEE_QR_CODE_SCANNER =
    static final String ACTION_ENROLLEE_QR_CODE_SCANNER =
            "android.settings.WIFI_DPP_ENROLLEE_QR_CODE_SCANNER";

    @Override
@@ -48,7 +47,7 @@ public class WifiDppEnrolleeActivity extends WifiDppBaseActivity implements
        switch (intent.getAction()) {
            case ACTION_ENROLLEE_QR_CODE_SCANNER:
                String ssid = intent.getStringExtra(WifiDppUtils.EXTRA_WIFI_SSID);
                showQrCodeScannerFragment(/* addToBackStack */ false, ssid);
                showQrCodeScannerFragment(ssid);
                break;
            default:
                Log.e(TAG, "Launch with an invalid action");
@@ -56,7 +55,7 @@ public class WifiDppEnrolleeActivity extends WifiDppBaseActivity implements
        }
    }

    private void showQrCodeScannerFragment(boolean addToBackStack, String ssid) {
    private void showQrCodeScannerFragment(String ssid) {
        WifiDppQrCodeScannerFragment fragment =
                (WifiDppQrCodeScannerFragment) mFragmentManager.findFragmentByTag(
                        WifiDppUtils.TAG_FRAGMENT_QR_CODE_SCANNER);
@@ -77,9 +76,6 @@ public class WifiDppEnrolleeActivity extends WifiDppBaseActivity implements

        fragmentTransaction.replace(R.id.fragment_container, fragment,
                WifiDppUtils.TAG_FRAGMENT_QR_CODE_SCANNER);
        if (addToBackStack) {
            fragmentTransaction.addToBackStack(/* name */ null);
        }
        fragmentTransaction.commit();
    }

+12 −12
Original line number Diff line number Diff line
@@ -26,13 +26,13 @@ import androidx.lifecycle.AndroidViewModel;
public class WifiDppInitiatorViewModel extends AndroidViewModel {
    private MutableLiveData<Integer> mEnrolleeSuccessNetworkId;
    private MutableLiveData<Integer> mStatusCode;
    private boolean mIsGoingInitiator;
    private boolean mIsWifiDppHandshaking;

    public WifiDppInitiatorViewModel(Application application) {
        super(application);
    }

    public MutableLiveData<Integer> getEnrolleeSuccessNetworkId() {
    MutableLiveData<Integer> getEnrolleeSuccessNetworkId() {
        if (mEnrolleeSuccessNetworkId == null) {
            mEnrolleeSuccessNetworkId = new MutableLiveData<>();
        }
@@ -40,7 +40,7 @@ public class WifiDppInitiatorViewModel extends AndroidViewModel {
        return mEnrolleeSuccessNetworkId;
    }

    public MutableLiveData<Integer> getStatusCode() {
    MutableLiveData<Integer> getStatusCode() {
        if (mStatusCode == null) {
            mStatusCode = new MutableLiveData<>();
        }
@@ -48,12 +48,12 @@ public class WifiDppInitiatorViewModel extends AndroidViewModel {
        return mStatusCode;
    }

    public boolean isGoingInitiator() {
        return mIsGoingInitiator;
    boolean isWifiDppHandshaking() {
        return mIsWifiDppHandshaking;
    }

    public void startEasyConnectAsConfiguratorInitiator(String qrCode, int networkId) {
        mIsGoingInitiator = true;
    void startEasyConnectAsConfiguratorInitiator(String qrCode, int networkId) {
        mIsWifiDppHandshaking = true;
        final WifiManager wifiManager = getApplication().getSystemService(WifiManager.class);

        wifiManager.startEasyConnectAsConfiguratorInitiator(qrCode, networkId,
@@ -61,8 +61,8 @@ public class WifiDppInitiatorViewModel extends AndroidViewModel {
                new EasyConnectDelegateCallback());
    }

    public void startEasyConnectAsEnrolleeInitiator(String qrCode) {
        mIsGoingInitiator = true;
    void startEasyConnectAsEnrolleeInitiator(String qrCode) {
        mIsWifiDppHandshaking = true;
        final WifiManager wifiManager = getApplication().getSystemService(WifiManager.class);

        wifiManager.startEasyConnectAsEnrolleeInitiator(qrCode, getApplication().getMainExecutor(),
@@ -72,19 +72,19 @@ public class WifiDppInitiatorViewModel extends AndroidViewModel {
    private class EasyConnectDelegateCallback extends EasyConnectStatusCallback {
        @Override
        public void onEnrolleeSuccess(int newNetworkId) {
            mIsGoingInitiator = false;
            mIsWifiDppHandshaking = false;
            mEnrolleeSuccessNetworkId.setValue(newNetworkId);
        }

        @Override
        public void onConfiguratorSuccess(int code) {
            mIsGoingInitiator = false;
            mIsWifiDppHandshaking = false;
            mStatusCode.setValue(WifiDppUtils.EASY_CONNECT_EVENT_SUCCESS);
        }

        @Override
        public void onFailure(int code) {
            mIsGoingInitiator = false;
            mIsWifiDppHandshaking = false;
            mStatusCode.setValue(code);
        }

Loading