From aab7b55926d8a43609a26abef0341f3a63115d7d Mon Sep 17 00:00:00 2001 From: changbetty Date: Wed, 20 Oct 2021 14:02:03 +0000 Subject: [PATCH 1/2] Add location check for Wifi Scanning notify message Bug: 203471614 Test: make RunSettingsRoboTests ROBOTEST_FILTER=NetworkProviderSettingsTest Change-Id: I0fccd1a8dfd8e6ca499a6f87a59772f70961bc1d --- .../network/NetworkProviderSettings.java | 6 +++- .../network/NetworkProviderSettingsTest.java | 32 +++++++++++++++++-- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java index 8a4929a591b..fccd87415ac 100644 --- a/src/com/android/settings/network/NetworkProviderSettings.java +++ b/src/com/android/settings/network/NetworkProviderSettings.java @@ -27,6 +27,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; @@ -756,7 +757,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); From 3b99a81e781cef6fe1e0d6cb9eecaf521d218079 Mon Sep 17 00:00:00 2001 From: Weng Su Date: Tue, 26 Oct 2021 00:39:01 +0800 Subject: [PATCH 2/2] Move android.settings.WIFI_SETTINGS action to Internet Settings - Starting from S, the WiFi Settings is changed to Internet Settings - Redirect to WiFi Settings if Provider Model disabled - Don't use FLAG_ACTIVITY_NEW_TASK to avoid Lock Task Mode impacted Bug: 199364761 Bug: 198740257 Bug: 203191404 Test: manual verified by TestDPC apk (see b/198740257#comment41) Change-Id: I3c283ef58b37f4d3fe27045f431932a35af55023 --- AndroidManifest.xml | 8 ++++---- .../network/NetworkProviderSettings.java | 17 ++++++++++++++++- 2 files changed, 20 insertions(+), 5 deletions(-) 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..79880bffbfc 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; @@ -277,6 +279,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 +477,9 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment @Override public void onDestroy() { - mAirplaneModeEnabler.close(); + if (mAirplaneModeEnabler != null) { + mAirplaneModeEnabler.close(); + } super.onDestroy(); }