Implement WifiNetworkListFragment - Part 2

Uses connected access point to start DPP in Configurator-Initiator role directly.

Bug: 118794978
Test: RunSettingsRoboTests
Change-Id: Ie2d5661fdef3588bb597d4a7e4dfe5f981737c84
This commit is contained in:
Johnson Lu
2019-01-15 05:15:29 +08:00
parent 0adba0aa1b
commit 98bc9e5384
2 changed files with 20 additions and 1 deletions

View File

@@ -19,6 +19,7 @@ package com.android.settings.wifi.dpp;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.NetworkInfo.DetailedState;
import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.Bundle; import android.os.Bundle;
@@ -38,6 +39,7 @@ import com.android.settingslib.wifi.WifiTrackerFactory;
import java.util.List; import java.util.List;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceCategory;
@@ -60,6 +62,9 @@ public class WifiNetworkListFragment extends SettingsPreferenceFragment implemen
private WifiManager.ActionListener mSaveListener; private WifiManager.ActionListener mSaveListener;
@VisibleForTesting
boolean mUseConnectedAccessPointDirectly;
// Container Activity must implement this interface // Container Activity must implement this interface
public interface OnChooseNetworkListener { public interface OnChooseNetworkListener {
public void onChooseNetwork(WifiNetworkConfig wifiNetworkConfig); public void onChooseNetwork(WifiNetworkConfig wifiNetworkConfig);
@@ -92,7 +97,7 @@ public class WifiNetworkListFragment extends SettingsPreferenceFragment implemen
super.onActivityCreated(savedInstanceState); super.onActivityCreated(savedInstanceState);
mWifiTracker = WifiTrackerFactory.create(getActivity(), this, mWifiTracker = WifiTrackerFactory.create(getActivity(), this,
getSettingsLifecycle(), /* includeSaved */true, /* includeSaved */ true); getSettingsLifecycle(), /* includeSaved */true, /* includeScans */ true);
mWifiManager = mWifiTracker.getManager(); mWifiManager = mWifiTracker.getManager();
mSaveListener = new WifiManager.ActionListener() { mSaveListener = new WifiManager.ActionListener() {
@@ -111,6 +116,8 @@ public class WifiNetworkListFragment extends SettingsPreferenceFragment implemen
} }
} }
}; };
mUseConnectedAccessPointDirectly = true;
} }
@Override @Override
@@ -281,6 +288,17 @@ public class WifiNetworkListFragment extends SettingsPreferenceFragment implemen
// Check if this access point is valid for DPP. // Check if this access point is valid for DPP.
if (isValidForDppConfiguration(accessPoint)) { if (isValidForDppConfiguration(accessPoint)) {
final String key = accessPoint.getKey(); final String key = accessPoint.getKey();
// Check if this access point is already connected.
if (mUseConnectedAccessPointDirectly
&& accessPoint.getDetailedState() == DetailedState.CONNECTED) {
// Uses connected access point to start DPP in Configurator-Initiator role
// directly.
onPreferenceTreeClick(createAccessPointPreference(accessPoint));
removeCachedPrefs(mAccessPointsPreferenceCategory);
return;
}
hasAvailableAccessPoints = true; hasAvailableAccessPoints = true;
final AccessPointPreference pref = (AccessPointPreference) getCachedPreference(key); final AccessPointPreference pref = (AccessPointPreference) getCachedPreference(key);
if (pref != null) { if (pref != null) {

View File

@@ -98,6 +98,7 @@ public class WifiNetworkListFragmentTest {
private void callOnWifiStateChanged(int state) { private void callOnWifiStateChanged(int state) {
mActivityRule.getActivity().getMainThreadHandler() mActivityRule.getActivity().getMainThreadHandler()
.post(() -> mWifiNetworkListFragment.onWifiStateChanged(state)); .post(() -> mWifiNetworkListFragment.onWifiStateChanged(state));
mWifiNetworkListFragment.mUseConnectedAccessPointDirectly = false;
} }
/** Launch the activity via an Intent with a String extra. */ /** Launch the activity via an Intent with a String extra. */