diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml
index 5fc58dc67f334..259446a39602e 100644
--- a/packages/SettingsLib/res/values/strings.xml
+++ b/packages/SettingsLib/res/values/strings.xml
@@ -243,6 +243,12 @@
Wifi signal full.
+
+ Open network
+
+
+ Secure network
+
Android OS
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPointPreference.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPointPreference.java
index 92995a8e850dc..2c4f9c4321946 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPointPreference.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPointPreference.java
@@ -25,6 +25,7 @@ import android.net.NetworkBadging;
import android.net.wifi.WifiConfiguration;
import android.os.Looper;
import android.os.UserHandle;
+import android.support.annotation.VisibleForTesting;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceViewHolder;
import android.text.TextUtils;
@@ -47,7 +48,17 @@ public class AccessPointPreference extends Preference {
R.attr.state_metered
};
- private static final int[] wifi_friction_attributes = { R.attr.wifi_friction };
+ private static final int[] FRICTION_ATTRS = {
+ R.attr.wifi_friction
+ };
+
+ private static final int[] WIFI_CONNECTION_STRENGTH = {
+ R.string.accessibility_no_wifi,
+ R.string.accessibility_wifi_one_bar,
+ R.string.accessibility_wifi_two_bars,
+ R.string.accessibility_wifi_three_bars,
+ R.string.accessibility_wifi_signal_full
+ };
private final StateListDrawable mFrictionSld;
private final int mBadgePadding;
@@ -62,14 +73,6 @@ public class AccessPointPreference extends Preference {
private int mDefaultIconResId;
private int mWifiSpeed = NetworkBadging.BADGING_NONE;
- static final int[] WIFI_CONNECTION_STRENGTH = {
- R.string.accessibility_no_wifi,
- R.string.accessibility_wifi_one_bar,
- R.string.accessibility_wifi_two_bars,
- R.string.accessibility_wifi_three_bars,
- R.string.accessibility_wifi_signal_full
- };
-
public static String generatePreferenceKey(AccessPoint accessPoint) {
StringBuilder builder = new StringBuilder();
@@ -103,7 +106,7 @@ public class AccessPointPreference extends Preference {
TypedArray frictionSld;
try {
- frictionSld = context.getTheme().obtainStyledAttributes(wifi_friction_attributes);
+ frictionSld = context.getTheme().obtainStyledAttributes(FRICTION_ATTRS);
} catch (Resources.NotFoundException e) {
// Fallback for platforms that do not need friction icon resources.
frictionSld = null;
@@ -129,7 +132,7 @@ public class AccessPointPreference extends Preference {
TypedArray frictionSld;
try {
- frictionSld = context.getTheme().obtainStyledAttributes(wifi_friction_attributes);
+ frictionSld = context.getTheme().obtainStyledAttributes(FRICTION_ATTRS);
} catch (Resources.NotFoundException e) {
// Fallback for platforms that do not need friction icon resources.
frictionSld = null;
@@ -249,14 +252,7 @@ public class AccessPointPreference extends Preference {
setSummary(mForSavedNetworks ? mAccessPoint.getSavedNetworkSummary()
: mAccessPoint.getSettingsSummary());
- mContentDescription = getTitle();
- if (getSummary() != null) {
- mContentDescription = TextUtils.concat(mContentDescription, ",", getSummary());
- }
- if (level >= 0 && level < WIFI_CONNECTION_STRENGTH.length) {
- mContentDescription = TextUtils.concat(mContentDescription, ",",
- getContext().getString(WIFI_CONNECTION_STRENGTH[level]));
- }
+ mContentDescription = buildContentDescription(getContext(), this /* pref */, mAccessPoint);
}
@Override
@@ -269,6 +265,27 @@ public class AccessPointPreference extends Preference {
}
}
+ /**
+ * Helper method to generate content description string.
+ */
+ @VisibleForTesting
+ static CharSequence buildContentDescription(Context context, Preference pref, AccessPoint ap) {
+ CharSequence contentDescription = pref.getTitle();
+ final CharSequence summary = pref.getSummary();
+ if (!TextUtils.isEmpty(summary)) {
+ contentDescription = TextUtils.concat(contentDescription, ",", summary);
+ }
+ int level = ap.getLevel();
+ if (level >= 0 && level < WIFI_CONNECTION_STRENGTH.length) {
+ contentDescription = TextUtils.concat(contentDescription, ",",
+ context.getString(WIFI_CONNECTION_STRENGTH[level]));
+ }
+ return TextUtils.concat(contentDescription, ",",
+ ap.getSecurity() == AccessPoint.SECURITY_NONE
+ ? context.getString(R.string.accessibility_wifi_security_type_none)
+ : context.getString(R.string.accessibility_wifi_security_type_secured));
+ }
+
public void onLevelChanged() {
postNotifyChanged();
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/SettingLibRobolectricTestRunner.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/SettingLibRobolectricTestRunner.java
index fd3b1dc635dd2..482b788113b94 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/SettingLibRobolectricTestRunner.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/SettingLibRobolectricTestRunner.java
@@ -20,6 +20,9 @@ import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import org.robolectric.manifest.AndroidManifest;
import org.robolectric.res.Fs;
+import org.robolectric.res.ResourcePath;
+
+import java.util.List;
public class SettingLibRobolectricTestRunner extends RobolectricTestRunner {
@@ -36,10 +39,31 @@ public class SettingLibRobolectricTestRunner extends RobolectricTestRunner {
final String assetsDir = appRoot + config.assetDir();
final AndroidManifest manifest = new AndroidManifest(Fs.fileFromPath(manifestPath),
- Fs.fileFromPath(resDir), Fs.fileFromPath(assetsDir));
-
+ Fs.fileFromPath(resDir), Fs.fileFromPath(assetsDir)) {
+ @Override
+ public List getIncludedResourcePaths() {
+ List paths = super.getIncludedResourcePaths();
+ SettingLibRobolectricTestRunner.getIncludedResourcePaths(getPackageName(), paths);
+ return paths;
+ }
+ };
manifest.setPackageName("com.android.settingslib");
return manifest;
}
+ static void getIncludedResourcePaths(String packageName, List paths) {
+ paths.add(new ResourcePath(
+ packageName,
+ Fs.fileFromPath("./frameworks/base/packages/SettingsLib/res"),
+ null));
+ paths.add(new ResourcePath(
+ packageName,
+ Fs.fileFromPath("./frameworks/base/core/res/res"),
+ null));
+ paths.add(new ResourcePath(
+ packageName,
+ Fs.fileFromPath("./frameworks/support/v7/appcompat/res"),
+ null));
+ }
+
}
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 335653bc2f186..7fe69a73cb996 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
@@ -16,6 +16,8 @@
package com.android.settingslib.wifi;
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import android.content.Context;
@@ -58,4 +60,22 @@ public class AccessPointPreferenceTest {
assertThat(AccessPointPreference.generatePreferenceKey(builder.build()))
.isEqualTo(expectedKey);
}
+
+ @Test
+ public void refresh_openNetwork_updateContentDescription() {
+ 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 pref = mock(AccessPointPreference.class);
+ when(pref.getTitle()).thenReturn(ssid);
+ when(pref.getSummary()).thenReturn(summary);
+
+ assertThat(AccessPointPreference.buildContentDescription(
+ RuntimeEnvironment.application, pref, ap))
+ .isEqualTo("ssid,connected,Wifi signal full.,Secure network");
+ }
}