Merge "[Wi-Fi] Fix crash after editing invalid hotspot password" into rvc-qpr-dev am: b6a9493804

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/12355969

Change-Id: Ibe5882d260907654e8c8891a4e65fb73e9e39730
This commit is contained in:
Arc Wang
2020-08-13 09:06:17 +00:00
committed by Automerger Merge Worker
3 changed files with 21 additions and 18 deletions

View File

@@ -23,6 +23,7 @@ import android.content.Context;
import android.content.pm.PackageManager;
import android.net.NetworkCapabilities;
import android.net.wifi.ScanResult;
import android.net.wifi.SoftApConfiguration;
import android.net.wifi.WifiConfiguration;
import android.os.UserHandle;
import android.os.UserManager;
@@ -38,8 +39,6 @@ public class WifiUtils {
private static final int SSID_ASCII_MIN_LENGTH = 1;
private static final int SSID_ASCII_MAX_LENGTH = 32;
private static final int PASSWORD_MIN_LENGTH = 8;
private static final int PASSWORD_MAX_LENGTH = 63;
public static boolean isSSIDTooLong(String ssid) {
@@ -56,13 +55,17 @@ public class WifiUtils {
return ssid.length() < SSID_ASCII_MIN_LENGTH;
}
public static boolean isHotspotPasswordValid(String password) {
if (TextUtils.isEmpty(password)) {
/**
* Check if the WPA2-PSK hotspot password is valid.
*/
public static boolean isHotspotWpa2PasswordValid(String password) {
final SoftApConfiguration.Builder configBuilder = new SoftApConfiguration.Builder();
try {
configBuilder.setPassphrase(password, SoftApConfiguration.SECURITY_TYPE_WPA2_PSK);
} catch (IllegalArgumentException e) {
return false;
}
final int length = password.length();
return length >= PASSWORD_MIN_LENGTH && length <= PASSWORD_MAX_LENGTH;
return true;
}
/**

View File

@@ -118,7 +118,7 @@ public class WifiTetherPasswordPreferenceController extends WifiTetherBasePrefer
@Override
public boolean isTextValid(String value) {
return WifiUtils.isHotspotPasswordValid(value);
return WifiUtils.isHotspotWpa2PasswordValid(value);
}
private static String generateRandomPassword() {

View File

@@ -18,10 +18,6 @@ package com.android.settings.wifi;
import static com.google.common.truth.Truth.assertThat;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import static org.mockito.Mockito.spy;
import android.content.Context;
@@ -30,6 +26,9 @@ import android.os.Bundle;
import com.android.settingslib.wifi.AccessPoint;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
@@ -48,11 +47,12 @@ public class WifiUtilsTest {
public void testPassword() {
final String longPassword = "123456789012345678901234567890"
+ "1234567890123456789012345678901234567890";
assertThat(WifiUtils.isHotspotPasswordValid("123")).isFalse();
assertThat(WifiUtils.isHotspotPasswordValid("12345678")).isTrue();
assertThat(WifiUtils.isHotspotPasswordValid("1234567890")).isTrue();
assertThat(WifiUtils.isHotspotPasswordValid(longPassword)).isFalse();
assertThat(WifiUtils.isHotspotPasswordValid("")).isFalse();
assertThat(WifiUtils.isHotspotWpa2PasswordValid("123")).isFalse();
assertThat(WifiUtils.isHotspotWpa2PasswordValid("12345678")).isTrue();
assertThat(WifiUtils.isHotspotWpa2PasswordValid("1234567890")).isTrue();
assertThat(WifiUtils.isHotspotWpa2PasswordValid(longPassword)).isFalse();
assertThat(WifiUtils.isHotspotWpa2PasswordValid("")).isFalse();
assertThat(WifiUtils.isHotspotWpa2PasswordValid("€¥£")).isFalse();
}
@Test