Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0373a46e authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Hide new Hotspot preferences if feature is disabled" into main

parents a6678ad6 675b817c
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -371,13 +371,21 @@ public class WifiTetherSettings extends RestrictedDashboardFragment
                    || !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) {
            } else {
                if (!isSpeedFeatureAvailable()) {
                    keys.add(KEY_WIFI_HOTSPOT_SECURITY);
                    keys.add(KEY_WIFI_HOTSPOT_SPEED);
                }
                if (!mIsInstantHotspotEnabled) {
                    keys.add(KEY_INSTANT_HOTSPOT);
                }
            }

            // Remove duplicate
            keys.add(KEY_WIFI_TETHER_SCREEN);
@@ -400,6 +408,12 @@ public class WifiTetherSettings extends RestrictedDashboardFragment
        public List<AbstractPreferenceController> createPreferenceControllers(Context context) {
            return buildPreferenceControllers(context, null /* listener */);
        }

        @VisibleForTesting
        boolean isSpeedFeatureAvailable() {
            return FeatureFactory.getFeatureFactory().getWifiFeatureProvider()
                    .getWifiHotspotRepository().isSpeedFeatureAvailable();
        }
    }

    @VisibleForTesting
+60 −25
Original line number Diff line number Diff line
@@ -263,93 +263,116 @@ public class WifiTetherSettingsTest {

    @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() {
        when(mWifiRestriction.isTetherAvailable(mContext)).thenReturn(false);
        when(mWifiRestriction.isHotspotAvailable(mContext)).thenReturn(true);
        WifiTetherSettings.SearchIndexProvider searchIndexProvider =
                new WifiTetherSettings.SearchIndexProvider(XML_RES, mWifiRestriction,
                        true /* isInstantHotspotEnabled */);
        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() {
        when(mWifiRestriction.isTetherAvailable(mContext)).thenReturn(true);
        when(mWifiRestriction.isHotspotAvailable(mContext)).thenReturn(false);
        WifiTetherSettings.SearchIndexProvider searchIndexProvider =
                new WifiTetherSettings.SearchIndexProvider(XML_RES, mWifiRestriction,
                        true /* isInstantHotspotEnabled */);
        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() {
        when(mWifiRestriction.isTetherAvailable(mContext)).thenReturn(false);
        when(mWifiRestriction.isHotspotAvailable(mContext)).thenReturn(false);
        WifiTetherSettings.SearchIndexProvider searchIndexProvider =
                new WifiTetherSettings.SearchIndexProvider(XML_RES, mWifiRestriction,
                        true /* isInstantHotspotEnabled */);
        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() {
        when(mWifiRestriction.isTetherAvailable(mContext)).thenReturn(true);
        when(mWifiRestriction.isHotspotAvailable(mContext)).thenReturn(true);
        WifiTetherSettings.SearchIndexProvider searchIndexProvider =
                new WifiTetherSettings.SearchIndexProvider(XML_RES, mWifiRestriction,
                        false /* isInstantHotspotEnabled */);
        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);
        // contains
        assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_HOTSPOT_SECURITY);
        assertThat(keys).contains(WifiTetherSettings.KEY_WIFI_HOTSPOT_SPEED);
    }

    @Test
    public void isPageSearchEnabled_allReady_returnTrue() {
        setCanShowWifiHotspotCached(true);
@@ -506,6 +529,18 @@ public class WifiTetherSettingsTest {
        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 {