diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 7199dd598ed..8fedf92b345 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -292,10 +292,6 @@ android:icon="@drawable/ic_homepage_network" android:exported="true" android:configChanges="orientation|keyboardHidden|screenSize"> - - - - + + + + diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java index 8a4929a591b..349bb826097 100644 --- a/src/com/android/settings/network/NetworkProviderSettings.java +++ b/src/com/android/settings/network/NetworkProviderSettings.java @@ -19,6 +19,8 @@ package com.android.settings.network; import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_ENABLED; import static android.os.UserManager.DISALLOW_CONFIG_WIFI; +import static com.android.settings.Settings.WifiSettingsActivity; + import android.app.Activity; import android.app.Dialog; import android.app.settings.SettingsEnums; @@ -27,6 +29,7 @@ import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.location.LocationManager; import android.net.NetworkTemplate; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; @@ -277,6 +280,17 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); + if (!FeatureFlagUtils.isEnabled(getContext(), FeatureFlagUtils.SETTINGS_PROVIDER_MODEL)) { + final Intent intent = new Intent(getContext(), WifiSettingsActivity.class); + final Bundle extras = getActivity().getIntent().getExtras(); + if (extras != null) { + intent.putExtras(extras); + } + getContext().startActivity(intent); + finish(); + return; + } + mAirplaneModeEnabler = new AirplaneModeEnabler(getContext(), this); // TODO(b/37429702): Add animations and preference comparator back after initial screen is @@ -464,7 +478,9 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment @Override public void onDestroy() { - mAirplaneModeEnabler.close(); + if (mAirplaneModeEnabler != null) { + mAirplaneModeEnabler.close(); + } super.onDestroy(); } @@ -756,7 +772,10 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment if (context == null) { return; } - if (isWifiEnabled || !mWifiManager.isScanAlwaysAvailable()) { + + final LocationManager locationManager = context.getSystemService(LocationManager.class); + if (isWifiEnabled || !locationManager.isLocationEnabled() + || !mWifiManager.isScanAlwaysAvailable()) { mWifiStatusMessagePreference.setVisible(false); return; } diff --git a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java index e048849ae9c..be8bf3a1d33 100644 --- a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java +++ b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java @@ -38,6 +38,7 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.res.Resources; +import android.location.LocationManager; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import android.os.Bundle; @@ -98,6 +99,8 @@ public class NetworkProviderSettingsTest { @Mock private UserManager mUserManager; @Mock + private LocationManager mLocationManager; + @Mock private AirplaneModeEnabler mAirplaneModeEnabler; @Mock private DataUsagePreference mDataUsagePreference; @@ -133,6 +136,7 @@ public class NetworkProviderSettingsTest { doReturn(mPowerManager).when(mContext).getSystemService(PowerManager.class); doReturn(mWifiManager).when(mContext).getSystemService(WifiManager.class); doReturn(mUserManager).when(mContext).getSystemService(Context.USER_SERVICE); + doReturn(mLocationManager).when(mContext).getSystemService(LocationManager.class); when(mUserManager.hasBaseUserRestriction(any(), any())).thenReturn(true); doReturn(mContext).when(mPreferenceManager).getContext(); mNetworkProviderSettings.mAddWifiNetworkPreference = new AddWifiNetworkPreference(mContext); @@ -543,19 +547,41 @@ public class NetworkProviderSettingsTest { } @Test - public void setWifiScanMessage_wifiOffScanOn_footerIsVisible() { + public void setWifiScanMessage_wifiOffLocationOnScanOn_footerIsVisible() { when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true); + when(mLocationManager.isLocationEnabled()).thenReturn(true); mNetworkProviderSettings.setWifiScanMessage(/* isWifiEnabled */ false); assertThat(mNetworkProviderSettings.mWifiStatusMessagePreference.isVisible()).isTrue(); assertThat(mNetworkProviderSettings.mWifiStatusMessagePreference.getTitle().length()) - .isNotEqualTo(0); + .isNotEqualTo(0); } @Test - public void setWifiScanMessage_wifiOffScanOff_footerIsInvisible() { + public void setWifiScanMessage_wifiOffLocationOnScanOff_footerIsInvisible() { when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false); + when(mLocationManager.isLocationEnabled()).thenReturn(true); + + mNetworkProviderSettings.setWifiScanMessage(/* isWifiEnabled */ false); + + assertThat(mNetworkProviderSettings.mWifiStatusMessagePreference.isVisible()).isFalse(); + } + + @Test + public void setWifiScanMessage_wifiOffLocationOffScanOn_footerIsInvisible() { + when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true); + when(mLocationManager.isLocationEnabled()).thenReturn(false); + + mNetworkProviderSettings.setWifiScanMessage(/* isWifiEnabled */ false); + + assertThat(mNetworkProviderSettings.mWifiStatusMessagePreference.isVisible()).isFalse(); + } + + @Test + public void setWifiScanMessage_wifiOffLocationOffScanOff_footerIsInvisible() { + when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false); + when(mLocationManager.isLocationEnabled()).thenReturn(false); mNetworkProviderSettings.setWifiScanMessage(/* isWifiEnabled */ false);