summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorNate Jiang <qiangjiang@google.com>2024-04-26 22:14:16 +0000
committerNate Jiang <qiangjiang@google.com>2024-04-26 23:10:00 +0000
commitc70c372846564e98f060e4780445864254540dcc (patch)
tree24519e24c6b2e1ab460a01540bdb10434b961afb /apps
parent7288fcc0190042f6e8ad9f52ba1fbba6117db390 (diff)
downloadcts-c70c372846564e98f060e4780445864254540dcc.tar.gz
As CtsVerifier doesn't have permission to add new Wi-Fi network, ask user to manually add network
Bug: 333810580 Test: CtsVerifier - MultiNetwork Connectivity Test Change-Id: I4c89f335d09937ac39676905b2119b2a36a828c5
Diffstat (limited to 'apps')
-rw-r--r--apps/CtsVerifier/res/values/strings.xml2
-rw-r--r--apps/CtsVerifier/src/com/android/cts/verifier/net/MultiNetworkConnectivityTestActivity.java99
2 files changed, 48 insertions, 53 deletions
diff --git a/apps/CtsVerifier/res/values/strings.xml b/apps/CtsVerifier/res/values/strings.xml
index 0caea4ecee3..2f0bd55f599 100644
--- a/apps/CtsVerifier/res/values/strings.xml
+++ b/apps/CtsVerifier/res/values/strings.xml
@@ -1208,6 +1208,8 @@
<string name="multinetwork_connectivity_turn_wifi_off">Please turn Wi-Fi off.</string>
<string name="multinetwork_connectivity_turn_wifi_positive">OK</string>
<string name="multinetwork_connectivity_turn_wifi_negative">Cancel</string>
+ <string name="multinetwork_connectivity_connect_to_target_ap_positive">OK</string>
+ <string name="multinetwork_connectivity_connect_to_target_ap">Connect to configured SSID: %s</string>
<!-- Strings for NfcTestActivity -->
<string name="nfc_test">NFC Test</string>
<string name="nfc_test_info">The Peer-to-Peer Data Exchange tests require two devices with
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/net/MultiNetworkConnectivityTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/net/MultiNetworkConnectivityTestActivity.java
index f1deb8d527b..44136cb59f4 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/net/MultiNetworkConnectivityTestActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/net/MultiNetworkConnectivityTestActivity.java
@@ -20,14 +20,10 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET;
import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
-import static com.android.cts.verifier.net.MultiNetworkConnectivityTestActivity.ValidatorState
- .COMPLETED;
-import static com.android.cts.verifier.net.MultiNetworkConnectivityTestActivity.ValidatorState
- .NOT_STARTED;
-import static com.android.cts.verifier.net.MultiNetworkConnectivityTestActivity.ValidatorState
- .STARTED;
-import static com.android.cts.verifier.net.MultiNetworkConnectivityTestActivity.ValidatorState
- .WAITING_FOR_USER_INPUT;
+import static com.android.cts.verifier.net.MultiNetworkConnectivityTestActivity.ValidatorState.COMPLETED;
+import static com.android.cts.verifier.net.MultiNetworkConnectivityTestActivity.ValidatorState.NOT_STARTED;
+import static com.android.cts.verifier.net.MultiNetworkConnectivityTestActivity.ValidatorState.STARTED;
+import static com.android.cts.verifier.net.MultiNetworkConnectivityTestActivity.ValidatorState.WAITING_FOR_USER_INPUT;
import android.app.ActivityManager;
import android.app.AlertDialog;
@@ -44,7 +40,6 @@ import android.net.NetworkInfo;
import android.net.NetworkRequest;
import android.net.NetworkSpecifier;
import android.net.wifi.SupplicantState;
-import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiNetworkSpecifier;
@@ -70,7 +65,7 @@ import java.util.Collections;
import java.util.List;
/**
- * A CTS verifier to ensure that when an app calls WifiManager#enableNetwork,
+ * A CTS verifier to ensure that when device connect to a new Wi-Fi network,
* - When the wifi network does not have internet connectivity, the device should
* not disable other forms or connectivity, for example cellular.
* - When the wifi network that the phone connects to loses connectivity, then
@@ -212,7 +207,6 @@ public class MultiNetworkConnectivityTestActivity extends PassFailButtons.Activi
protected void onDestroy() {
super.onDestroy();
destroyBroadcastReceivers();
- restoreOriginalWifiState();
}
private void recordCurrentWifiState() {
@@ -245,12 +239,6 @@ public class MultiNetworkConnectivityTestActivity extends PassFailButtons.Activi
return result;
}
- private void restoreOriginalWifiState() {
- if (mRecordedWifiConfiguration >= 0) {
- mWifiManager.enableNetwork(mRecordedWifiConfiguration, true);
- }
- }
-
private boolean requestSystemAlertWindowPerimissionIfRequired() {
if (isLowRamDevice()) {
// For low ram devices, we won't run tests that depend on this permission.
@@ -298,6 +286,23 @@ public class MultiNetworkConnectivityTestActivity extends PassFailButtons.Activi
alertDialog.show();
}
+ private void requestUserConnectToApAsync(ConnectApCallback callback) {
+ if (isConnectedToExpectedWifiNetwork()) {
+ callback.onComplete(/* isSuccess = */ true);
+ return;
+ }
+
+ AlertDialog alertDialog = new AlertDialog.Builder(this)
+ .setMessage(getString(R.string.multinetwork_connectivity_connect_to_target_ap,
+ mAccessPointSsid))
+ .setPositiveButton(R.string.multinetwork_connectivity_turn_wifi_positive,
+ (a, b) -> requestUserConnectToApAsync(callback))
+ .setNegativeButton(R.string.multinetwork_connectivity_turn_wifi_negative,
+ (a, b) -> callback.onComplete(/* isSuccess = */ false))
+ .create();
+ alertDialog.show();
+ }
+
private void toggleWifiAsync(SetWifiCallback callback) {
// Turn off WiFi.
requestUserEnableWifiAsync(false, (isSuccess) -> {
@@ -489,31 +494,6 @@ public class MultiNetworkConnectivityTestActivity extends PassFailButtons.Activi
}
}
- private WifiConfiguration buildWifiConfiguration() {
- WifiConfiguration wifiConfiguration = new WifiConfiguration();
- wifiConfiguration.SSID = "\"" + mAccessPointSsid + "\"";
- wifiConfiguration.preSharedKey = "\"" + mPskValue + "\"";
- wifiConfiguration.status = WifiConfiguration.Status.ENABLED;
- wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
- wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
- wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
- wifiConfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
- wifiConfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
- wifiConfiguration.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
- return wifiConfiguration;
- }
-
- private int getOrAddLegacyNetwork() {
- List<WifiConfiguration> availableConfigurations = mWifiManager.getConfiguredNetworks();
- for (WifiConfiguration configuration : availableConfigurations) {
- if (mAccessPointSsid.equals(configuration.SSID)) {
- return configuration.networkId;
- }
- }
- int newNetwork = mWifiManager.addNetwork(buildWifiConfiguration());
- return newNetwork;
- }
-
private boolean isConnectedToExpectedWifiNetwork() {
WifiInfo wifiInfo = mWifiManager.getConnectionInfo();
DhcpInfo dhcpInfo = mWifiManager.getDhcpInfo();
@@ -601,15 +581,7 @@ public class MultiNetworkConnectivityTestActivity extends PassFailButtons.Activi
}
}
- private void legacyConnectToWifiNetwork(boolean requireInternet) {
- // If device is not connected to the expected WifiNetwork, connect to the wifi Network.
- // Timeout with failure if it can't connect.
- if (!isConnectedToExpectedWifiNetwork()) {
- int network = getOrAddLegacyNetwork();
- WifiManager wifiManager = (WifiManager) getApplicationContext()
- .getSystemService(Context.WIFI_SERVICE);
- wifiManager.enableNetwork(network, true);
- }
+ private void requestNetwork(boolean requireInternet) {
startTimerDisplay(WIFI_NETWORK_CONNECT_TIMEOUT_MS / 1000);
NetworkRequest.Builder networkRequestBuilder = new NetworkRequest.Builder()
.addTransportType(TRANSPORT_WIFI);
@@ -750,6 +722,9 @@ public class MultiNetworkConnectivityTestActivity extends PassFailButtons.Activi
/** Called when cellular network is connected. */
void onCellularNetworkConnected(Network network) {
+ if (mValidatorState != NOT_STARTED) {
+ return;
+ }
onContinuePreWifiConnect();
}
@@ -855,7 +830,14 @@ public class MultiNetworkConnectivityTestActivity extends PassFailButtons.Activi
void connectToWifi() {
mTestCallback.testProgress(R.string.multinetwork_connectivity_test_connect_wifi);
- mConnectivityState.legacyConnectToWifiNetwork(false);
+ requestUserConnectToApAsync((isSuccess) -> {
+ if (isSuccess) {
+ // Request network
+ mConnectivityState.requestNetwork(false);
+ } else {
+ endTest(false, R.string.multinetwork_status_wifi_connect_wrong_ap);
+ }
+ });
}
}
@@ -898,7 +880,14 @@ public class MultiNetworkConnectivityTestActivity extends PassFailButtons.Activi
void connectToWifi() {
mTestCallback.testProgress(R.string.multinetwork_connectivity_test_connect_wifi);
- mConnectivityState.legacyConnectToWifiNetwork(true);
+ requestUserConnectToApAsync((isSuccess) -> {
+ if (isSuccess) {
+ // Request network
+ mConnectivityState.requestNetwork(true);
+ } else {
+ endTest(false, R.string.multinetwork_status_unable_to_toggle_wifi);
+ }
+ });
}
@Override
@@ -1042,4 +1031,8 @@ public class MultiNetworkConnectivityTestActivity extends PassFailButtons.Activi
private interface SetWifiCallback {
void onComplete(boolean isSuccess);
}
+
+ private interface ConnectApCallback {
+ void onComplete(boolean isSuccess);
+ }
}