Merge "Remove setWifiEnabled from CTS Multinetwork test"
diff --git a/apps/CtsVerifier/res/values/strings.xml b/apps/CtsVerifier/res/values/strings.xml
index 7aa33da..e41b23a 100755
--- a/apps/CtsVerifier/res/values/strings.xml
+++ b/apps/CtsVerifier/res/values/strings.xml
@@ -814,6 +814,7 @@
<string name="multinetwork_status_mobile_connect_success">Mobile net connect success.</string>
<string name="multinetwork_status_wifi_connect_timed_out">Wi-Fi connect timed out.</string>
<string name="multinetwork_status_wifi_connect_wrong_ap">Wi-Fi connected to wrong access point.</string>
+ <string name="multinetwork_status_unable_to_toggle_wifi">User did not toggle wifi on and off.</string>
<string name="multinetwork_status_mobile_connect_timed_out">Mobile network connect timed out.</string>
<string name="multinetwork_status_mobile_restore_success">Mobile restore succeeded.</string>
<string name="multinetwork_status_mobile_restore_failed">Mobile restore failed.</string>
@@ -826,6 +827,10 @@
<string name="multinetwork_connectivity_overlay_permission_message">This test requires the CTS verifier to have the system overlay permission, please enable it in the next screen.</string>
<string name="multinetwork_connectivity_overlay_permission_positive">Settings</string>
<string name="multinetwork_connectivity_overlay_permission_negative">Cancel</string>
+ <string name="multinetwork_connectivity_turn_wifi_on">Please turn Wi-Fi on.</string>
+ <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>
<!-- 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 b8ab5c4..d6ab01f 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/net/MultiNetworkConnectivityTestActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/net/MultiNetworkConnectivityTestActivity.java
@@ -79,7 +79,6 @@
*/
public class MultiNetworkConnectivityTestActivity extends PassFailButtons.Activity {
public static final String TAG = "MultinetworkTest";
- public static final int ENABLE_DISABLE_WIFI_DELAY_MS = 3000;
public static final int WIFI_NETWORK_CONNECT_TIMEOUT_MS = 45000;
public static final int WIFI_NETWORK_CONNECT_TO_BE_ACTIVE_MS = 25000;
public static final int CELLULAR_NETWORK_CONNECT_TIMEOUT_MS = 45000;
@@ -280,6 +279,44 @@
return hadPermission;
}
+ private void requestUserEnableWifiAsync(boolean enableWifi, SetWifiCallback callback) {
+ if (isWifiEnabled() == enableWifi) {
+ callback.onComplete(/* isSuccess = */ true);
+ return;
+ }
+
+ int wifiEnableMessage = enableWifi ? R.string.multinetwork_connectivity_turn_wifi_on :
+ R.string.multinetwork_connectivity_turn_wifi_off;
+
+ AlertDialog alertDialog = new AlertDialog.Builder(this)
+ .setMessage(wifiEnableMessage)
+ .setPositiveButton(R.string.multinetwork_connectivity_turn_wifi_positive,
+ (a, b) -> requestUserEnableWifiAsync(enableWifi, 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) -> {
+ if (isSuccess) {
+ // Turn on WiFi.
+ requestUserEnableWifiAsync(true, callback);
+ } else {
+ callback.onComplete(/* isSuccess = */ false);
+ }
+ });
+ }
+
+ private boolean isWifiEnabled() {
+ WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
+ int wifiState = wifiManager.getWifiState();
+ return wifiState == WifiManager.WIFI_STATE_ENABLED
+ || wifiState == WifiManager.WIFI_STATE_ENABLING;
+ }
+
private void setupUserInterface() {
setContentView(R.layout.multinetwork_connectivity);
setInfoResources(
@@ -664,17 +701,18 @@
/** Start test if not started. */
void startTest() {
+ Handler uiThreadHandler = new Handler(Looper.getMainLooper());
if (mValidatorState == NOT_STARTED) {
mTestCallback.testStarted();
- WifiManager wifiManager = (WifiManager) getApplicationContext()
- .getSystemService(Context.WIFI_SERVICE);
- wifiManager.setWifiEnabled(false);
- mMainHandler.postDelayed(() -> {
- wifiManager.setWifiEnabled(true);
+ toggleWifiAsync(hasToggled -> {
+ if (!hasToggled) {
+ onUnableToSetWifi();
+ return;
+ }
mTestCallback.testProgress(
- R.string.multinetwork_connectivity_test_connect_cellular);
+ R.string.multinetwork_connectivity_test_connect_cellular);
mConnectivityState.connectToCellularNetwork();
- }, ENABLE_DISABLE_WIFI_DELAY_MS);
+ });
}
}
@@ -694,6 +732,10 @@
endTest(false, R.string.multinetwork_status_mobile_connect_timed_out);
}
+ void onUnableToSetWifi() {
+ endTest(false, R.string.multinetwork_status_unable_to_toggle_wifi);
+ }
+
void endTest(boolean status, int messageResId) {
Log.i(TAG, "Ending test with status " + status + " message " +
MultiNetworkConnectivityTestActivity.this.getResources().getString(messageResId));
@@ -996,4 +1038,8 @@
}
}
}
+
+ private interface SetWifiCallback {
+ void onComplete(boolean isSuccess);
+ }
}