Ensure wifi ssid cannot exceed 32 bytes.
Change-Id: I5c2c50ca8599f6843da47c01b9a0447e2c85d763 Fix: 36898746 Test: make RunSettingsRoboTests
This commit is contained in:
@@ -53,9 +53,21 @@
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/wifi_item_edit_content"
|
||||
android:hint="@string/wifi_ssid_hint"
|
||||
android:maxLength="32"
|
||||
android:singleLine="true"
|
||||
android:inputType="textNoSuggestions" />
|
||||
|
||||
<LinearLayout android:id="@+id/ssid_too_long_warning"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
style="@style/wifi_item" >
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/wifi_item_warning"
|
||||
android:text="@string/wifi_ssid_too_long" />
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
|
@@ -1882,6 +1882,8 @@
|
||||
<string name="wifi_do_not_validate_eap_server">Do not validate</string>
|
||||
<!-- Warning message displayed if user choses not to validate the EAP server -->
|
||||
<string name="wifi_do_not_validate_eap_server_warning">No certificate specified. Your connection will not be private.</string>
|
||||
<!-- Warning message displayed if network name (ssid) is too long -->
|
||||
<string name="wifi_ssid_too_long">Network name is too long.</string>
|
||||
<!-- Warning message displayed if user does not specify a domain for the CA certificate.
|
||||
Only displayed if the user also chooses to use system certificates. -->
|
||||
<string name="wifi_no_domain_warning">Must specify a domain.</string>
|
||||
|
@@ -110,6 +110,8 @@ public class WifiConfigController implements TextWatcher,
|
||||
public static final int WIFI_PEAP_PHASE2_AKA = 4;
|
||||
public static final int WIFI_PEAP_PHASE2_AKA_PRIME = 5;
|
||||
|
||||
private static final int SSID_ASCII_MAX_LENGTH = 32;
|
||||
|
||||
/* Phase2 methods supported by PEAP are limited */
|
||||
private final ArrayAdapter<String> mPhase2PeapAdapter;
|
||||
/* Full list of phase2 methods */
|
||||
@@ -457,7 +459,14 @@ public class WifiConfigController implements TextWatcher,
|
||||
void showWarningMessagesIfAppropriate() {
|
||||
mView.findViewById(R.id.no_ca_cert_warning).setVisibility(View.GONE);
|
||||
mView.findViewById(R.id.no_domain_warning).setVisibility(View.GONE);
|
||||
mView.findViewById(R.id.ssid_too_long_warning).setVisibility(View.GONE);
|
||||
|
||||
if (mSsidView != null) {
|
||||
final String ssid = mSsidView.getText().toString();
|
||||
if (ssid.length() > SSID_ASCII_MAX_LENGTH) {
|
||||
mView.findViewById(R.id.ssid_too_long_warning).setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
if (mEapCaCertSpinner != null
|
||||
&& mView.findViewById(R.id.l_ca_cert).getVisibility() != View.GONE) {
|
||||
String caCertSelection = (String) mEapCaCertSpinner.getSelectedItem();
|
||||
|
@@ -44,10 +44,14 @@ import static org.mockito.Mockito.when;
|
||||
shadows = ShadowConnectivityManager.class)
|
||||
public class WifiConfigControllerTest {
|
||||
|
||||
@Mock private WifiConfigUiBase mConfigUiBase;
|
||||
@Mock private Context mContext;
|
||||
@Mock private View mView;
|
||||
@Mock private AccessPoint mAccessPoint;
|
||||
@Mock
|
||||
private WifiConfigUiBase mConfigUiBase;
|
||||
@Mock
|
||||
private Context mContext;
|
||||
@Mock
|
||||
private View mView;
|
||||
@Mock
|
||||
private AccessPoint mAccessPoint;
|
||||
|
||||
public WifiConfigController mController;
|
||||
|
||||
@@ -73,6 +77,38 @@ public class WifiConfigControllerTest {
|
||||
mController = new TestWifiConfigController(mConfigUiBase, mView, mAccessPoint,
|
||||
WifiConfigUiBase.MODE_CONNECT);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void ssidExceeds32Bytes_shouldShowSsidTooLongWarning() {
|
||||
mController = new TestWifiConfigController(mConfigUiBase, mView, null /* accessPoint */,
|
||||
WifiConfigUiBase.MODE_CONNECT);
|
||||
final TextView ssid = mView.findViewById(R.id.ssid);
|
||||
ssid.setText("☎☎☎☎☎☎☎☎☎☎☎☎☎☎☎☎☎☎☎☎☎☎☎☎☎☎☎☎☎☎☎☎☎☎");
|
||||
mController.showWarningMessagesIfAppropriate();
|
||||
|
||||
assertThat(mView.findViewById(R.id.ssid_too_long_warning).getVisibility())
|
||||
.isEqualTo(View.VISIBLE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void ssidShorterThan32Bytes_shouldNotShowSsidTooLongWarning() {
|
||||
mController = new TestWifiConfigController(mConfigUiBase, mView, null /* accessPoint */,
|
||||
WifiConfigUiBase.MODE_CONNECT);
|
||||
|
||||
final TextView ssid = mView.findViewById(R.id.ssid);
|
||||
ssid.setText("123456789012345678901234567890");
|
||||
mController.showWarningMessagesIfAppropriate();
|
||||
|
||||
assertThat(mView.findViewById(R.id.ssid_too_long_warning).getVisibility())
|
||||
.isEqualTo(View.GONE);
|
||||
|
||||
ssid.setText("123");
|
||||
mController.showWarningMessagesIfAppropriate();
|
||||
|
||||
assertThat(mView.findViewById(R.id.ssid_too_long_warning).getVisibility())
|
||||
.isEqualTo(View.GONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isSubmittable_noSSID_shouldReturnFalse() {
|
||||
final TextView ssid = mView.findViewById(R.id.ssid);
|
||||
@@ -87,13 +123,14 @@ public class WifiConfigControllerTest {
|
||||
assertThat(mController.isSubmittable()).isFalse();
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isSubmittable_shortPsk_shouldReturnFalse() {
|
||||
final TextView password = mView.findViewById(R.id.password);
|
||||
password.setText(SHORT_PSK);
|
||||
assertThat(mController.isSubmittable()).isFalse();
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isSubmittable_goodPsk_shouldReturnTrue() {
|
||||
final TextView password = mView.findViewById(R.id.password);
|
||||
@@ -101,6 +138,7 @@ public class WifiConfigControllerTest {
|
||||
assertThat(mController.isSubmittable()).isTrue();
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isSubmittable_savedConfigZeroLengthPassword_shouldReturnTrue() {
|
||||
final TextView password = mView.findViewById(R.id.password);
|
||||
|
Reference in New Issue
Block a user