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

Commit c5cc2f81 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "For Internet Picker - Information about Wi-Fi scanning when Wi-Fi is off" into sc-qpr1-dev

parents 2720310a bfd30200
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -81,4 +81,10 @@
    <com.android.settings.datausage.DataUsagePreference
        android:key="non_carrier_data_usage"
        android:title="@string/non_carrier_data_usage"/>

    <com.android.settingslib.widget.FooterPreference
        android:key="wifi_status_message_footer"
        android:selectable="false"
        settings:allowDividerAbove="false"
        settings:searchable="false"/>
</PreferenceScreen>
+37 −0
Original line number Diff line number Diff line
@@ -61,7 +61,9 @@ import com.android.settings.core.FeatureFlags;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.datausage.DataUsagePreference;
import com.android.settings.datausage.DataUsageUtils;
import com.android.settings.location.WifiScanningFragment;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.utils.AnnotationSpan;
import com.android.settings.wifi.AddNetworkFragment;
import com.android.settings.wifi.AddWifiNetworkPreference;
import com.android.settings.wifi.ConfigureWifiEntryFragment;
@@ -79,6 +81,7 @@ import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.search.Indexable;
import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.utils.ThreadUtils;
import com.android.settingslib.widget.FooterPreference;
import com.android.settingslib.widget.LayoutPreference;
import com.android.settingslib.wifi.LongPressWifiEntryPreference;
import com.android.settingslib.wifi.WifiSavedConfigUtils;
@@ -132,6 +135,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
    @VisibleForTesting
    static final String PREF_KEY_DATA_USAGE = "non_carrier_data_usage";
    private static final String PREF_KEY_RESET_INTERNET = "resetting_your_internet";
    private static final String PREF_KEY_WIFI_STATUS_MESSAGE = "wifi_status_message_footer";

    private static final int REQUEST_CODE_WIFI_DPP_ENROLLEE_QR_CODE_SCANNER = 0;

@@ -231,6 +235,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
    LayoutPreference mResetInternetPreference;
    @VisibleForTesting
    ConnectedEthernetNetworkController mConnectedEthernetNetworkController;
    @VisibleForTesting
    FooterPreference mWifiStatusMessagePreference;

    /**
     * Mobile networks list for provider model
@@ -305,6 +311,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
        addNetworkMobileProviderController();
        addConnectedEthernetNetworkController();
        addWifiSwitchPreferenceController();
        mWifiStatusMessagePreference = findPreference(PREF_KEY_WIFI_STATUS_MESSAGE);
    }

    private void updateAirplaneModeMsgPreference(boolean visible) {
@@ -717,6 +724,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment

        switch (wifiState) {
            case WifiManager.WIFI_STATE_ENABLED:
                setWifiScanMessage(/* isWifiEnabled */ true);
                updateWifiEntryPreferences();
                break;

@@ -732,6 +740,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
                break;

            case WifiManager.WIFI_STATE_DISABLED:
                setWifiScanMessage(/* isWifiEnabled */ false);
                removeConnectedWifiEntryPreference();
                removeWifiEntryPreference();
                setAdditionalSettingsSummaries();
@@ -741,6 +750,34 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
        }
    }

    @VisibleForTesting
    void setWifiScanMessage(boolean isWifiEnabled) {
        final Context context = getContext();
        if (context == null) {
            return;
        }
        if (isWifiEnabled || !mWifiManager.isScanAlwaysAvailable()) {
            mWifiStatusMessagePreference.setVisible(false);
            return;
        }
        if (TextUtils.isEmpty(mWifiStatusMessagePreference.getTitle())) {
            AnnotationSpan.LinkInfo info = new AnnotationSpan.LinkInfo(
                AnnotationSpan.LinkInfo.DEFAULT_ANNOTATION,
                v -> launchWifiScanningFragment());
            CharSequence text = AnnotationSpan.linkify(
                context.getText(R.string.wifi_scan_notify_message), info);
            mWifiStatusMessagePreference.setTitle(text);
        }
        mWifiStatusMessagePreference.setVisible(true);
    }

    private void launchWifiScanningFragment() {
        new SubSettingLauncher(getContext())
            .setDestination(WifiScanningFragment.class.getName())
            .setSourceMetricsCategory(SettingsEnums.SETTINGS_NETWORK_CATEGORY)
            .launch();
    }

    @Override
    public void onWifiEntriesChanged() {
        if (mIsWifiEntryListStale) {
+31 −0
Original line number Diff line number Diff line
@@ -67,6 +67,7 @@ import com.android.settings.wifi.AddWifiNetworkPreference;
import com.android.settings.wifi.ConnectedWifiEntryPreference;
import com.android.settings.wifi.WifiConfigController2;
import com.android.settings.wifi.WifiDialog2;
import com.android.settingslib.widget.FooterPreference;
import com.android.settingslib.widget.LayoutPreference;
import com.android.settingslib.wifi.LongPressWifiEntryPreference;
import com.android.wifitrackerlib.WifiEntry;
@@ -144,6 +145,7 @@ public class NetworkProviderSettingsTest {
        mNetworkProviderSettings.mAirplaneModeMsgPreference = mAirplaneModeMsgPreference;
        mNetworkProviderSettings.mAirplaneModeEnabler = mAirplaneModeEnabler;
        mNetworkProviderSettings.mInternetUpdater = mInternetUpdater;
        mNetworkProviderSettings.mWifiStatusMessagePreference = new FooterPreference(mContext);
        doReturn(NetworkProviderSettings.PREF_KEY_CONNECTED_ACCESS_POINTS)
                .when(mConnectedWifiEntryPreferenceCategory).getKey();
        mNetworkProviderSettings.mConnectedWifiEntryPreferenceCategory =
@@ -531,6 +533,35 @@ public class NetworkProviderSettingsTest {
        verify(mNetworkProviderSettings.mWifiEntryPreferenceCategory, never()).setVisible(true);
    }

    @Test
    public void setWifiScanMessage_wifiOnScanOn_footerIsInvisible() {
        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true);

        mNetworkProviderSettings.setWifiScanMessage(/* isWifiEnabled */ true);

        assertThat(mNetworkProviderSettings.mWifiStatusMessagePreference.isVisible()).isFalse();
    }

    @Test
    public void setWifiScanMessage_wifiOffScanOn_footerIsVisible() {
        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true);

        mNetworkProviderSettings.setWifiScanMessage(/* isWifiEnabled */ false);

        assertThat(mNetworkProviderSettings.mWifiStatusMessagePreference.isVisible()).isTrue();
        assertThat(mNetworkProviderSettings.mWifiStatusMessagePreference.getTitle().length())
                .isNotEqualTo(0);
    }

    @Test
    public void setWifiScanMessage_wifiOffScanOff_footerIsInvisible() {
        when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false);

        mNetworkProviderSettings.setWifiScanMessage(/* isWifiEnabled */ false);

        assertThat(mNetworkProviderSettings.mWifiStatusMessagePreference.isVisible()).isFalse();
    }

    @Test
    @Config(shadows = ShadowPreferenceFragmentCompat.class)
    public void onStop_shouldRemoveCallbacks() {