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"
|
android:layout_height="wrap_content"
|
||||||
style="@style/wifi_item_edit_content"
|
style="@style/wifi_item_edit_content"
|
||||||
android:hint="@string/wifi_ssid_hint"
|
android:hint="@string/wifi_ssid_hint"
|
||||||
android:maxLength="32"
|
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:inputType="textNoSuggestions" />
|
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>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
@@ -1882,6 +1882,8 @@
|
|||||||
<string name="wifi_do_not_validate_eap_server">Do not validate</string>
|
<string name="wifi_do_not_validate_eap_server">Do not validate</string>
|
||||||
<!-- Warning message displayed if user choses not to validate the EAP server -->
|
<!-- 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>
|
<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.
|
<!-- 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. -->
|
Only displayed if the user also chooses to use system certificates. -->
|
||||||
<string name="wifi_no_domain_warning">Must specify a domain.</string>
|
<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 = 4;
|
||||||
public static final int WIFI_PEAP_PHASE2_AKA_PRIME = 5;
|
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 */
|
/* Phase2 methods supported by PEAP are limited */
|
||||||
private final ArrayAdapter<String> mPhase2PeapAdapter;
|
private final ArrayAdapter<String> mPhase2PeapAdapter;
|
||||||
/* Full list of phase2 methods */
|
/* Full list of phase2 methods */
|
||||||
@@ -457,7 +459,14 @@ public class WifiConfigController implements TextWatcher,
|
|||||||
void showWarningMessagesIfAppropriate() {
|
void showWarningMessagesIfAppropriate() {
|
||||||
mView.findViewById(R.id.no_ca_cert_warning).setVisibility(View.GONE);
|
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.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
|
if (mEapCaCertSpinner != null
|
||||||
&& mView.findViewById(R.id.l_ca_cert).getVisibility() != View.GONE) {
|
&& mView.findViewById(R.id.l_ca_cert).getVisibility() != View.GONE) {
|
||||||
String caCertSelection = (String) mEapCaCertSpinner.getSelectedItem();
|
String caCertSelection = (String) mEapCaCertSpinner.getSelectedItem();
|
||||||
|
@@ -44,10 +44,14 @@ import static org.mockito.Mockito.when;
|
|||||||
shadows = ShadowConnectivityManager.class)
|
shadows = ShadowConnectivityManager.class)
|
||||||
public class WifiConfigControllerTest {
|
public class WifiConfigControllerTest {
|
||||||
|
|
||||||
@Mock private WifiConfigUiBase mConfigUiBase;
|
@Mock
|
||||||
@Mock private Context mContext;
|
private WifiConfigUiBase mConfigUiBase;
|
||||||
@Mock private View mView;
|
@Mock
|
||||||
@Mock private AccessPoint mAccessPoint;
|
private Context mContext;
|
||||||
|
@Mock
|
||||||
|
private View mView;
|
||||||
|
@Mock
|
||||||
|
private AccessPoint mAccessPoint;
|
||||||
|
|
||||||
public WifiConfigController mController;
|
public WifiConfigController mController;
|
||||||
|
|
||||||
@@ -73,6 +77,38 @@ public class WifiConfigControllerTest {
|
|||||||
mController = new TestWifiConfigController(mConfigUiBase, mView, mAccessPoint,
|
mController = new TestWifiConfigController(mConfigUiBase, mView, mAccessPoint,
|
||||||
WifiConfigUiBase.MODE_CONNECT);
|
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
|
@Test
|
||||||
public void isSubmittable_noSSID_shouldReturnFalse() {
|
public void isSubmittable_noSSID_shouldReturnFalse() {
|
||||||
final TextView ssid = mView.findViewById(R.id.ssid);
|
final TextView ssid = mView.findViewById(R.id.ssid);
|
||||||
@@ -87,13 +123,14 @@ public class WifiConfigControllerTest {
|
|||||||
assertThat(mController.isSubmittable()).isFalse();
|
assertThat(mController.isSubmittable()).isFalse();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isSubmittable_shortPsk_shouldReturnFalse() {
|
public void isSubmittable_shortPsk_shouldReturnFalse() {
|
||||||
final TextView password = mView.findViewById(R.id.password);
|
final TextView password = mView.findViewById(R.id.password);
|
||||||
password.setText(SHORT_PSK);
|
password.setText(SHORT_PSK);
|
||||||
assertThat(mController.isSubmittable()).isFalse();
|
assertThat(mController.isSubmittable()).isFalse();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isSubmittable_goodPsk_shouldReturnTrue() {
|
public void isSubmittable_goodPsk_shouldReturnTrue() {
|
||||||
final TextView password = mView.findViewById(R.id.password);
|
final TextView password = mView.findViewById(R.id.password);
|
||||||
@@ -101,6 +138,7 @@ public class WifiConfigControllerTest {
|
|||||||
assertThat(mController.isSubmittable()).isTrue();
|
assertThat(mController.isSubmittable()).isTrue();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isSubmittable_savedConfigZeroLengthPassword_shouldReturnTrue() {
|
public void isSubmittable_savedConfigZeroLengthPassword_shouldReturnTrue() {
|
||||||
final TextView password = mView.findViewById(R.id.password);
|
final TextView password = mView.findViewById(R.id.password);
|
||||||
|
Reference in New Issue
Block a user