Loading src/com/android/settings/wifi/WifiSettings.java +13 −4 Original line number Original line Diff line number Diff line Loading @@ -735,10 +735,7 @@ public class WifiSettings extends RestrictedSettingsFragment AccessPoint accessPoint = accessPoints.get(index); AccessPoint accessPoint = accessPoints.get(index); // Ignore access points that are out of range. // Ignore access points that are out of range. if (accessPoint.isReachable()) { if (accessPoint.isReachable()) { String key = accessPoint.getBssid(); String key = generateKey(accessPoint); if (TextUtils.isEmpty(key)) { key = accessPoint.getSsidStr(); } hasAvailableAccessPoints = true; hasAvailableAccessPoints = true; LongPressAccessPointPreference pref = LongPressAccessPointPreference pref = (LongPressAccessPointPreference) getCachedPreference(key); (LongPressAccessPointPreference) getCachedPreference(key); Loading Loading @@ -780,6 +777,18 @@ public class WifiSettings extends RestrictedSettingsFragment } } } } private String generateKey(AccessPoint accessPoint) { StringBuilder key = new StringBuilder(); String bssid = accessPoint.getBssid(); if (TextUtils.isEmpty(bssid)) { key.append(accessPoint.getSsidStr()); } else { key.append(bssid); } key.append(',').append(accessPoint.getSecurity()); return key.toString(); } @NonNull @NonNull private LongPressAccessPointPreference createLongPressActionPointPreference( private LongPressAccessPointPreference createLongPressActionPointPreference( AccessPoint accessPoint) { AccessPoint accessPoint) { Loading tests/unit/src/com/android/settings/wifi/WifiSettingsUiTest.java +49 −19 Original line number Original line Diff line number Diff line Loading @@ -15,6 +15,24 @@ */ */ package com.android.settings.wifi; package com.android.settings.wifi; import static android.support.test.InstrumentationRegistry.getInstrumentation; import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.assertion.ViewAssertions.doesNotExist; import static android.support.test.espresso.assertion.ViewAssertions.matches; import static android.support.test.espresso.matcher.ViewMatchers.Visibility.VISIBLE; import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.withEffectiveVisibility; import static android.support.test.espresso.matcher.ViewMatchers.withText; import static com.google.common.truth.Truth.assertThat; import static org.hamcrest.Matchers.allOf; import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.startsWith; import static org.mockito.Mockito.atMost; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Activity; import android.app.Activity; import android.app.Fragment; import android.app.Fragment; import android.content.Context; import android.content.Context; Loading @@ -31,6 +49,7 @@ import android.support.test.runner.AndroidJUnit4; import com.android.settings.Settings.WifiSettingsActivity; import com.android.settings.Settings.WifiSettingsActivity; import com.android.settingslib.wifi.AccessPoint; import com.android.settingslib.wifi.AccessPoint; import com.android.settingslib.wifi.TestAccessPointBuilder; import com.android.settingslib.wifi.WifiTracker; import com.android.settingslib.wifi.WifiTracker; import com.android.settingslib.wifi.WifiTracker.WifiListener; import com.android.settingslib.wifi.WifiTracker.WifiListener; import com.android.settingslib.wifi.WifiTrackerFactory; import com.android.settingslib.wifi.WifiTrackerFactory; Loading @@ -46,25 +65,6 @@ import org.mockito.MockitoAnnotations; import java.util.List; import java.util.List; import static android.support.test.InstrumentationRegistry.getInstrumentation; import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.assertion.ViewAssertions.doesNotExist; import static android.support.test.espresso.assertion.ViewAssertions.matches; import static android.support.test.espresso.matcher.ViewMatchers.Visibility.VISIBLE; import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.withEffectiveVisibility; import static android.support.test.espresso.matcher.ViewMatchers.withText; import static com.google.common.truth.Truth.assertThat; import static org.hamcrest.Matchers.allOf; import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.startsWith; import static org.mockito.Mockito.atMost; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class) public class WifiSettingsUiTest { public class WifiSettingsUiTest { Loading Loading @@ -242,4 +242,34 @@ public class WifiSettingsUiTest { getInstrumentation().callActivityOnStart(activity); getInstrumentation().callActivityOnStart(activity); verify(mWifiTracker, atMost(1)).forceUpdate(); verify(mWifiTracker, atMost(1)).forceUpdate(); } } @Test public void changingSecurityStateOnApShouldNotCauseMultipleListItems() { setWifiState(WifiManager.WIFI_STATE_ENABLED); TestAccessPointBuilder builder = new TestAccessPointBuilder(mContext) .setSsid(TEST_SSID).setSecurity(AccessPoint.SECURITY_NONE); AccessPoint open = builder.build(); builder.setSecurity(AccessPoint.SECURITY_EAP); AccessPoint eap = builder.build(); builder.setSecurity(AccessPoint.SECURITY_WEP); AccessPoint wep = builder.build(); // Return a different security state each time getAccessPoints is invoked when(mWifiTracker.getAccessPoints()) .thenReturn(Lists.newArrayList(open, eap)) .thenReturn(Lists.newArrayList(eap)) .thenReturn(Lists.newArrayList(wep)); launchActivity(); onView(withText(TEST_SSID)).check(matches(isDisplayed())); mWifiListener.onAccessPointsChanged(); onView(withText(TEST_SSID)).check(matches(isDisplayed())); mWifiListener.onAccessPointsChanged(); onView(withText(TEST_SSID)).check(matches(isDisplayed())); } } } Loading
src/com/android/settings/wifi/WifiSettings.java +13 −4 Original line number Original line Diff line number Diff line Loading @@ -735,10 +735,7 @@ public class WifiSettings extends RestrictedSettingsFragment AccessPoint accessPoint = accessPoints.get(index); AccessPoint accessPoint = accessPoints.get(index); // Ignore access points that are out of range. // Ignore access points that are out of range. if (accessPoint.isReachable()) { if (accessPoint.isReachable()) { String key = accessPoint.getBssid(); String key = generateKey(accessPoint); if (TextUtils.isEmpty(key)) { key = accessPoint.getSsidStr(); } hasAvailableAccessPoints = true; hasAvailableAccessPoints = true; LongPressAccessPointPreference pref = LongPressAccessPointPreference pref = (LongPressAccessPointPreference) getCachedPreference(key); (LongPressAccessPointPreference) getCachedPreference(key); Loading Loading @@ -780,6 +777,18 @@ public class WifiSettings extends RestrictedSettingsFragment } } } } private String generateKey(AccessPoint accessPoint) { StringBuilder key = new StringBuilder(); String bssid = accessPoint.getBssid(); if (TextUtils.isEmpty(bssid)) { key.append(accessPoint.getSsidStr()); } else { key.append(bssid); } key.append(',').append(accessPoint.getSecurity()); return key.toString(); } @NonNull @NonNull private LongPressAccessPointPreference createLongPressActionPointPreference( private LongPressAccessPointPreference createLongPressActionPointPreference( AccessPoint accessPoint) { AccessPoint accessPoint) { Loading
tests/unit/src/com/android/settings/wifi/WifiSettingsUiTest.java +49 −19 Original line number Original line Diff line number Diff line Loading @@ -15,6 +15,24 @@ */ */ package com.android.settings.wifi; package com.android.settings.wifi; import static android.support.test.InstrumentationRegistry.getInstrumentation; import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.assertion.ViewAssertions.doesNotExist; import static android.support.test.espresso.assertion.ViewAssertions.matches; import static android.support.test.espresso.matcher.ViewMatchers.Visibility.VISIBLE; import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.withEffectiveVisibility; import static android.support.test.espresso.matcher.ViewMatchers.withText; import static com.google.common.truth.Truth.assertThat; import static org.hamcrest.Matchers.allOf; import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.startsWith; import static org.mockito.Mockito.atMost; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Activity; import android.app.Activity; import android.app.Fragment; import android.app.Fragment; import android.content.Context; import android.content.Context; Loading @@ -31,6 +49,7 @@ import android.support.test.runner.AndroidJUnit4; import com.android.settings.Settings.WifiSettingsActivity; import com.android.settings.Settings.WifiSettingsActivity; import com.android.settingslib.wifi.AccessPoint; import com.android.settingslib.wifi.AccessPoint; import com.android.settingslib.wifi.TestAccessPointBuilder; import com.android.settingslib.wifi.WifiTracker; import com.android.settingslib.wifi.WifiTracker; import com.android.settingslib.wifi.WifiTracker.WifiListener; import com.android.settingslib.wifi.WifiTracker.WifiListener; import com.android.settingslib.wifi.WifiTrackerFactory; import com.android.settingslib.wifi.WifiTrackerFactory; Loading @@ -46,25 +65,6 @@ import org.mockito.MockitoAnnotations; import java.util.List; import java.util.List; import static android.support.test.InstrumentationRegistry.getInstrumentation; import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.assertion.ViewAssertions.doesNotExist; import static android.support.test.espresso.assertion.ViewAssertions.matches; import static android.support.test.espresso.matcher.ViewMatchers.Visibility.VISIBLE; import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.withEffectiveVisibility; import static android.support.test.espresso.matcher.ViewMatchers.withText; import static com.google.common.truth.Truth.assertThat; import static org.hamcrest.Matchers.allOf; import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.startsWith; import static org.mockito.Mockito.atMost; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class) public class WifiSettingsUiTest { public class WifiSettingsUiTest { Loading Loading @@ -242,4 +242,34 @@ public class WifiSettingsUiTest { getInstrumentation().callActivityOnStart(activity); getInstrumentation().callActivityOnStart(activity); verify(mWifiTracker, atMost(1)).forceUpdate(); verify(mWifiTracker, atMost(1)).forceUpdate(); } } @Test public void changingSecurityStateOnApShouldNotCauseMultipleListItems() { setWifiState(WifiManager.WIFI_STATE_ENABLED); TestAccessPointBuilder builder = new TestAccessPointBuilder(mContext) .setSsid(TEST_SSID).setSecurity(AccessPoint.SECURITY_NONE); AccessPoint open = builder.build(); builder.setSecurity(AccessPoint.SECURITY_EAP); AccessPoint eap = builder.build(); builder.setSecurity(AccessPoint.SECURITY_WEP); AccessPoint wep = builder.build(); // Return a different security state each time getAccessPoints is invoked when(mWifiTracker.getAccessPoints()) .thenReturn(Lists.newArrayList(open, eap)) .thenReturn(Lists.newArrayList(eap)) .thenReturn(Lists.newArrayList(wep)); launchActivity(); onView(withText(TEST_SSID)).check(matches(isDisplayed())); mWifiListener.onAccessPointsChanged(); onView(withText(TEST_SSID)).check(matches(isDisplayed())); mWifiListener.onAccessPointsChanged(); onView(withText(TEST_SSID)).check(matches(isDisplayed())); } } }