Hide new Hotspot preferences if feature is disabled
- Hide new "Security" preference
- Hide new "Speed and compatibility" preference
Bug: 356898105
Flag: EXEMPT bugfix
Test: Manual testing
atest -c WifiTetherSettingsTest
Change-Id: I734959ed511929bfcc9a314770a4acdf9a7e0b99
diff --git a/src/com/android/settings/wifi/tether/WifiTetherSettings.java b/src/com/android/settings/wifi/tether/WifiTetherSettings.java
index 74671b5..980dee5 100644
--- a/src/com/android/settings/wifi/tether/WifiTetherSettings.java
+++ b/src/com/android/settings/wifi/tether/WifiTetherSettings.java
@@ -371,12 +371,20 @@
|| !mWifiRestriction.isHotspotAvailable(context)) {
keys.add(KEY_WIFI_TETHER_NETWORK_NAME);
keys.add(KEY_WIFI_TETHER_SECURITY);
+ keys.add(KEY_WIFI_HOTSPOT_SECURITY);
keys.add(KEY_WIFI_TETHER_NETWORK_PASSWORD);
keys.add(KEY_WIFI_TETHER_AUTO_OFF);
keys.add(KEY_WIFI_TETHER_MAXIMIZE_COMPATIBILITY);
+ keys.add(KEY_WIFI_HOTSPOT_SPEED);
keys.add(KEY_INSTANT_HOTSPOT);
- } else if (!mIsInstantHotspotEnabled) {
- keys.add(KEY_INSTANT_HOTSPOT);
+ } else {
+ if (!isSpeedFeatureAvailable()) {
+ keys.add(KEY_WIFI_HOTSPOT_SECURITY);
+ keys.add(KEY_WIFI_HOTSPOT_SPEED);
+ }
+ if (!mIsInstantHotspotEnabled) {
+ keys.add(KEY_INSTANT_HOTSPOT);
+ }
}
// Remove duplicate
@@ -400,6 +408,12 @@
public List<AbstractPreferenceController> createPreferenceControllers(Context context) {
return buildPreferenceControllers(context, null /* listener */);
}
+
+ @VisibleForTesting
+ boolean isSpeedFeatureAvailable() {
+ return FeatureFactory.getFeatureFactory().getWifiFeatureProvider()
+ .getWifiHotspotRepository().isSpeedFeatureAvailable();
+ }
}
@VisibleForTesting
diff --git a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java
index 299d545..0bc0a32 100644
--- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java
@@ -263,91 +263,114 @@
@Test
public void getNonIndexableKeys_tetherAvailable_keysNotReturned() {
- when(mWifiRestriction.isTetherAvailable(mContext)).thenReturn(true);
- when(mWifiRestriction.isHotspotAvailable(mContext)).thenReturn(true);
- WifiTetherSettings.SearchIndexProvider searchIndexProvider =
- new WifiTetherSettings.SearchIndexProvider(XML_RES, mWifiRestriction,
- true /* isInstantHotspotEnabled */);
+ WifiTetherSettings.SearchIndexProvider searchIndexProvider = createSearchIndexProvider(
+ true /* isTetherAvailable */, true /* isHotspotAvailable */,
+ true /* isInstantHotspotEnabled */, true /* isSpeedFeatureAvailable */);
final List<String> keys = searchIndexProvider.getNonIndexableKeys(mContext);
assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_TETHER_NETWORK_NAME);
assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_TETHER_SECURITY);
+ assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_HOTSPOT_SECURITY);
+ assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_TETHER_NETWORK_PASSWORD);
+ assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_TETHER_AUTO_OFF);
+ assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_TETHER_MAXIMIZE_COMPATIBILITY);
+ assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_HOTSPOT_SPEED);
+ assertThat(keys).doesNotContain(WifiTetherSettings.KEY_INSTANT_HOTSPOT);
+ }
+
+ @Test
+ public void getNonIndexableKeys_tetherNotAvailable_keysReturned() {
+ WifiTetherSettings.SearchIndexProvider searchIndexProvider = createSearchIndexProvider(
+ false /* isTetherAvailable */, true /* isHotspotAvailable */,
+ true /* isInstantHotspotEnabled */, true /* isSpeedFeatureAvailable */);
+
+ final List<String> keys = searchIndexProvider.getNonIndexableKeys(mContext);
+
+ assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_NETWORK_NAME);
+ assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_SECURITY);
+ assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_HOTSPOT_SECURITY);
+ assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_NETWORK_PASSWORD);
+ assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_AUTO_OFF);
+ assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_MAXIMIZE_COMPATIBILITY);
+ assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_HOTSPOT_SPEED);
+ assertThat(keys).contains(WifiTetherSettings.KEY_INSTANT_HOTSPOT);
+ }
+
+ @Test
+ public void getNonIndexableKeys_hotspotNotAvailable_keysReturned() {
+ WifiTetherSettings.SearchIndexProvider searchIndexProvider = createSearchIndexProvider(
+ true /* isTetherAvailable */, false /* isHotspotAvailable */,
+ true /* isInstantHotspotEnabled */, true /* isSpeedFeatureAvailable */);
+
+ final List<String> keys = searchIndexProvider.getNonIndexableKeys(mContext);
+
+ assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_NETWORK_NAME);
+ assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_SECURITY);
+ assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_HOTSPOT_SECURITY);
+ assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_NETWORK_PASSWORD);
+ assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_AUTO_OFF);
+ assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_MAXIMIZE_COMPATIBILITY);
+ assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_HOTSPOT_SPEED);
+ assertThat(keys).contains(WifiTetherSettings.KEY_INSTANT_HOTSPOT);
+ }
+
+ @Test
+ public void getNonIndexableKeys_tetherAndHotspotNotAvailable_keysReturned() {
+ WifiTetherSettings.SearchIndexProvider searchIndexProvider = createSearchIndexProvider(
+ false /* isTetherAvailable */, false /* isHotspotAvailable */,
+ true /* isInstantHotspotEnabled */, true /* isSpeedFeatureAvailable */);
+
+ final List<String> keys = searchIndexProvider.getNonIndexableKeys(mContext);
+
+ assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_NETWORK_NAME);
+ assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_SECURITY);
+ assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_HOTSPOT_SECURITY);
+ assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_NETWORK_PASSWORD);
+ assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_AUTO_OFF);
+ assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_MAXIMIZE_COMPATIBILITY);
+ assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_HOTSPOT_SPEED);
+ assertThat(keys).contains(WifiTetherSettings.KEY_INSTANT_HOTSPOT);
+ }
+
+ @Test
+ public void getNonIndexableKeys_instantHotspotNotAvailableOnly_keysContainInstantHotspotOnly() {
+ WifiTetherSettings.SearchIndexProvider searchIndexProvider = createSearchIndexProvider(
+ true /* isTetherAvailable */, true /* isHotspotAvailable */,
+ false /* isInstantHotspotEnabled */, true /* isSpeedFeatureAvailable */);
+
+ final List<String> keys = searchIndexProvider.getNonIndexableKeys(mContext);
+
+ // doesNotContain
+ assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_TETHER_NETWORK_NAME);
+ assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_TETHER_SECURITY);
+ assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_HOTSPOT_SECURITY);
+ assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_TETHER_NETWORK_PASSWORD);
+ assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_TETHER_AUTO_OFF);
+ assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_TETHER_MAXIMIZE_COMPATIBILITY);
+ assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_HOTSPOT_SPEED);
+ // contains
+ assertThat(keys).contains(WifiTetherSettings.KEY_INSTANT_HOTSPOT);
+ }
+
+ @Test
+ public void getNonIndexableKeys_speedFeatureNotAvailableOnly_keysContainInstantHotspotOnly() {
+ WifiTetherSettings.SearchIndexProvider searchIndexProvider = createSearchIndexProvider(
+ true /* isTetherAvailable */, true /* isHotspotAvailable */,
+ true /* isInstantHotspotEnabled */, false /* isSpeedFeatureAvailable */);
+
+ final List<String> keys = searchIndexProvider.getNonIndexableKeys(mContext);
+
+ // doesNotContain
+ assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_TETHER_NETWORK_NAME);
+ assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_TETHER_SECURITY);
assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_TETHER_NETWORK_PASSWORD);
assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_TETHER_AUTO_OFF);
assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_TETHER_MAXIMIZE_COMPATIBILITY);
assertThat(keys).doesNotContain(WifiTetherSettings.KEY_INSTANT_HOTSPOT);
- }
-
- @Test
- public void getNonIndexableKeys_tetherNotAvailable_keysReturned() {
- when(mWifiRestriction.isTetherAvailable(mContext)).thenReturn(false);
- when(mWifiRestriction.isHotspotAvailable(mContext)).thenReturn(true);
- WifiTetherSettings.SearchIndexProvider searchIndexProvider =
- new WifiTetherSettings.SearchIndexProvider(XML_RES, mWifiRestriction,
- true /* isInstantHotspotEnabled */);
-
- final List<String> keys = searchIndexProvider.getNonIndexableKeys(mContext);
-
- assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_NETWORK_NAME);
- assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_SECURITY);
- assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_NETWORK_PASSWORD);
- assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_AUTO_OFF);
- assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_MAXIMIZE_COMPATIBILITY);
- assertThat(keys).contains(WifiTetherSettings.KEY_INSTANT_HOTSPOT);
- }
-
- @Test
- public void getNonIndexableKeys_hotspotNotAvailable_keysReturned() {
- when(mWifiRestriction.isTetherAvailable(mContext)).thenReturn(true);
- when(mWifiRestriction.isHotspotAvailable(mContext)).thenReturn(false);
- WifiTetherSettings.SearchIndexProvider searchIndexProvider =
- new WifiTetherSettings.SearchIndexProvider(XML_RES, mWifiRestriction,
- true /* isInstantHotspotEnabled */);
-
- final List<String> keys = searchIndexProvider.getNonIndexableKeys(mContext);
-
- assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_NETWORK_NAME);
- assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_SECURITY);
- assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_NETWORK_PASSWORD);
- assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_AUTO_OFF);
- assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_MAXIMIZE_COMPATIBILITY);
- assertThat(keys).contains(WifiTetherSettings.KEY_INSTANT_HOTSPOT);
- }
-
- @Test
- public void getNonIndexableKeys_tetherAndHotspotNotAvailable_keysReturned() {
- when(mWifiRestriction.isTetherAvailable(mContext)).thenReturn(false);
- when(mWifiRestriction.isHotspotAvailable(mContext)).thenReturn(false);
- WifiTetherSettings.SearchIndexProvider searchIndexProvider =
- new WifiTetherSettings.SearchIndexProvider(XML_RES, mWifiRestriction,
- true /* isInstantHotspotEnabled */);
-
- final List<String> keys = searchIndexProvider.getNonIndexableKeys(mContext);
-
- assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_NETWORK_NAME);
- assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_SECURITY);
- assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_NETWORK_PASSWORD);
- assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_AUTO_OFF);
- assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_TETHER_MAXIMIZE_COMPATIBILITY);
- }
-
- @Test
- public void getNonIndexableKeys_instantHotspotNotAvailableOnly_keysContainInstantHotspotOnly() {
- when(mWifiRestriction.isTetherAvailable(mContext)).thenReturn(true);
- when(mWifiRestriction.isHotspotAvailable(mContext)).thenReturn(true);
- WifiTetherSettings.SearchIndexProvider searchIndexProvider =
- new WifiTetherSettings.SearchIndexProvider(XML_RES, mWifiRestriction,
- false /* isInstantHotspotEnabled */);
-
- final List<String> keys = searchIndexProvider.getNonIndexableKeys(mContext);
-
- assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_TETHER_NETWORK_NAME);
- assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_TETHER_SECURITY);
- assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_TETHER_NETWORK_PASSWORD);
- assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_TETHER_AUTO_OFF);
- assertThat(keys).doesNotContain(WifiTetherSettings.KEY_WIFI_TETHER_MAXIMIZE_COMPATIBILITY);
- assertThat(keys).contains(WifiTetherSettings.KEY_INSTANT_HOTSPOT);
+ // contains
+ assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_HOTSPOT_SECURITY);
+ assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_HOTSPOT_SPEED);
}
@Test
@@ -506,6 +529,18 @@
mSettings.onCreate(Bundle.EMPTY);
}
+ private WifiTetherSettings.SearchIndexProvider createSearchIndexProvider(
+ boolean isTetherAvailable, boolean isHotspotAvailable, boolean isInstantHotspotEnabled,
+ boolean isSpeedFeatureAvailable) {
+ when(mWifiRestriction.isTetherAvailable(mContext)).thenReturn(isTetherAvailable);
+ when(mWifiRestriction.isHotspotAvailable(mContext)).thenReturn(isHotspotAvailable);
+ WifiTetherSettings.SearchIndexProvider provider =
+ spy(new WifiTetherSettings.SearchIndexProvider(XML_RES, mWifiRestriction,
+ isInstantHotspotEnabled));
+ when(provider.isSpeedFeatureAvailable()).thenReturn(isSpeedFeatureAvailable);
+ return provider;
+ }
+
@Implements(RestrictedDashboardFragment.class)
public static final class ShadowRestrictedDashboardFragment {