Loading res/xml/network_provider_settings.xml +6 −0 Original line number Diff line number Diff line Loading @@ -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> src/com/android/settings/network/NetworkProviderSettings.java +37 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -231,6 +235,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment LayoutPreference mResetInternetPreference; @VisibleForTesting ConnectedEthernetNetworkController mConnectedEthernetNetworkController; @VisibleForTesting FooterPreference mWifiStatusMessagePreference; /** * Mobile networks list for provider model Loading Loading @@ -305,6 +311,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment addNetworkMobileProviderController(); addConnectedEthernetNetworkController(); addWifiSwitchPreferenceController(); mWifiStatusMessagePreference = findPreference(PREF_KEY_WIFI_STATUS_MESSAGE); } private void updateAirplaneModeMsgPreference(boolean visible) { Loading Loading @@ -717,6 +724,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment switch (wifiState) { case WifiManager.WIFI_STATE_ENABLED: setWifiScanMessage(/* isWifiEnabled */ true); updateWifiEntryPreferences(); break; Loading @@ -732,6 +740,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment break; case WifiManager.WIFI_STATE_DISABLED: setWifiScanMessage(/* isWifiEnabled */ false); removeConnectedWifiEntryPreference(); removeWifiEntryPreference(); setAdditionalSettingsSummaries(); Loading @@ -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) { Loading tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java +31 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 = Loading Loading @@ -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() { Loading Loading
res/xml/network_provider_settings.xml +6 −0 Original line number Diff line number Diff line Loading @@ -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>
src/com/android/settings/network/NetworkProviderSettings.java +37 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -231,6 +235,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment LayoutPreference mResetInternetPreference; @VisibleForTesting ConnectedEthernetNetworkController mConnectedEthernetNetworkController; @VisibleForTesting FooterPreference mWifiStatusMessagePreference; /** * Mobile networks list for provider model Loading Loading @@ -305,6 +311,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment addNetworkMobileProviderController(); addConnectedEthernetNetworkController(); addWifiSwitchPreferenceController(); mWifiStatusMessagePreference = findPreference(PREF_KEY_WIFI_STATUS_MESSAGE); } private void updateAirplaneModeMsgPreference(boolean visible) { Loading Loading @@ -717,6 +724,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment switch (wifiState) { case WifiManager.WIFI_STATE_ENABLED: setWifiScanMessage(/* isWifiEnabled */ true); updateWifiEntryPreferences(); break; Loading @@ -732,6 +740,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment break; case WifiManager.WIFI_STATE_DISABLED: setWifiScanMessage(/* isWifiEnabled */ false); removeConnectedWifiEntryPreference(); removeWifiEntryPreference(); setAdditionalSettingsSummaries(); Loading @@ -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) { Loading
tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java +31 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 = Loading Loading @@ -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() { Loading