From b6cec0d7b28df7af6861a3e8bd27a82dbccafc0a Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Tue, 5 Sep 2017 11:02:03 -0700 Subject: [PATCH] Use raw string when setting wifi preference title. This is necessary for talkback to correctly recognize content description on the whole viewgroup. Change-Id: Ic792102b269b9a8db09c632f7e70d8773048c840 Bug: 65202862 Test: robotests --- .../wifi/AccessPointPreference.java | 18 +++++++----- .../wifi/AccessPointPreferenceTest.java | 29 +++++++++++++++---- 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPointPreference.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPointPreference.java index 0ecb8be627f6c..0f4e13bd5d8b2 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPointPreference.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPointPreference.java @@ -155,7 +155,7 @@ public class AccessPointPreference extends Preference { drawable.setLevel(mLevel); } - mTitleView = (TextView) view.findViewById(com.android.internal.R.id.title); + mTitleView = (TextView) view.findViewById(android.R.id.title); if (mTitleView != null) { // Attach to the end of the title view mTitleView.setCompoundDrawablesRelativeWithIntrinsicBounds(null, null, mBadge, null); @@ -224,12 +224,7 @@ public class AccessPointPreference extends Preference { * Updates the title and summary; may indirectly call notifyChanged(). */ public void refresh() { - if (mForSavedNetworks) { - setTitle(mAccessPoint.getConfigName()); - } else { - setTitle(mAccessPoint.getSsid()); - } - + setTitle(this, mAccessPoint, mForSavedNetworks); final Context context = getContext(); int level = mAccessPoint.getLevel(); int wifiSpeed = mAccessPoint.getSpeed(); @@ -258,6 +253,15 @@ public class AccessPointPreference extends Preference { } } + @VisibleForTesting + static void setTitle(AccessPointPreference preference, AccessPoint ap, boolean savedNetworks) { + if (savedNetworks) { + preference.setTitle(ap.getConfigName()); + } else { + preference.setTitle(ap.getSsidStr()); + } + } + /** * Helper method to generate content description string. */ diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/AccessPointPreferenceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/AccessPointPreferenceTest.java index 7f89fd5d079c5..96cbc82ae193f 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/AccessPointPreferenceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/AccessPointPreferenceTest.java @@ -18,13 +18,12 @@ package com.android.settingslib.wifi; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.when; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import android.content.Context; - import android.graphics.drawable.ColorDrawable; + import com.android.settingslib.SettingsLibRobolectricTestRunner; import com.android.settingslib.TestConfig; @@ -42,9 +41,12 @@ public class AccessPointPreferenceTest { private Context mContext = RuntimeEnvironment.application; - @Mock private AccessPoint mockAccessPoint; - @Mock private AccessPointPreference.UserBadgeCache mockUserBadgeCache; - @Mock private AccessPointPreference.IconInjector mockIconInjector; + @Mock + private AccessPoint mockAccessPoint; + @Mock + private AccessPointPreference.UserBadgeCache mockUserBadgeCache; + @Mock + private AccessPointPreference.IconInjector mockIconInjector; private AccessPointPreference createWithAccessPoint(AccessPoint accessPoint) { return new AccessPointPreference(accessPoint, mContext, mockUserBadgeCache, @@ -113,4 +115,19 @@ public class AccessPointPreferenceTest { verify(mockIconInjector).getIcon(level); } + + @Test + public void refresh_setTitle_shouldUseSsidString() { + final String ssid = "ssid"; + final String summary = "connected"; + final int security = AccessPoint.SECURITY_WEP; + final AccessPoint ap = new TestAccessPointBuilder(mContext) + .setSsid(ssid) + .setSecurity(security) + .build(); + final AccessPointPreference preference = mock(AccessPointPreference.class); + + AccessPointPreference.setTitle(preference, ap, false /* savedNetwork */); + verify(preference).setTitle(ssid); + } }