diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java index d45ed1922aa40..dcb57b9642e45 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java @@ -322,8 +322,15 @@ public class AccessPoint implements Comparable { if (difference != 0) { return difference; } + // Sort by ssid. - return getSsidStr().compareToIgnoreCase(other.getSsidStr()); + difference = getSsidStr().compareToIgnoreCase(other.getSsidStr()); + if (difference != 0) { + return difference; + } + + // Do a case sensitive comparison to distinguish SSIDs that differ in case only + return getSsidStr().compareTo(other.getSsidStr()); } @Override diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.java index 89328ee47f1c9..4accc77765786 100644 --- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.java +++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.java @@ -168,6 +168,21 @@ public class AccessPointTest { assertSortingWorks(firstAp, secondAp); } + @Test + public void testCompareTo_GivesSsidCasePrecendenceAfterAlphabetical() { + + final String firstName = "aaAaaa"; + final String secondName = "aaaaaa"; + final String thirdName = "BBBBBB"; + + AccessPoint firstAp = new TestAccessPointBuilder(mContext).setSsid(firstName).build(); + AccessPoint secondAp = new TestAccessPointBuilder(mContext).setSsid(secondName).build(); + AccessPoint thirdAp = new TestAccessPointBuilder(mContext).setSsid(thirdName).build(); + + assertSortingWorks(firstAp, secondAp); + assertSortingWorks(secondAp, thirdAp); + } + @Test public void testCompareTo_AllSortingRulesCombined() {