From 154a81a2a088b075eaa208550cd3053cc68f4dac Mon Sep 17 00:00:00 2001 From: Lin Yuan Date: Tue, 25 Apr 2023 12:30:03 -0400 Subject: [PATCH 1/3] Fix: Bluetooth and Wifi scanning location MainSwitch page policy transparency. When DISALLOW_CONFIG_LOCATION is set, make location service's MainSwitchPreference pages for wifi scanning and bluetooth scanning unavailable too, so that intent direct access is disabled. screenshot: http://shortn/_kkK3BMTSh1 Bug: 277333746 Bug: 277333781 Test: atest SettingsRoboTests, on device (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:7591fff234886e79c5d0210a2cf3282a69de9be9) Merged-In: I52f9a11b1dd78a5e5dbb1bbde3cda7381c87ae39 Change-Id: I52f9a11b1dd78a5e5dbb1bbde3cda7381c87ae39 --- .../BluetoothScanningMainSwitchPreferenceController.java | 7 ++++++- .../WifiScanningMainSwitchPreferenceController.java | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/location/BluetoothScanningMainSwitchPreferenceController.java b/src/com/android/settings/location/BluetoothScanningMainSwitchPreferenceController.java index b491ec953a2..78e31848acb 100644 --- a/src/com/android/settings/location/BluetoothScanningMainSwitchPreferenceController.java +++ b/src/com/android/settings/location/BluetoothScanningMainSwitchPreferenceController.java @@ -18,6 +18,7 @@ import android.content.Context; import android.provider.Settings; import android.widget.Switch; +import android.os.UserManager; import androidx.preference.PreferenceScreen; @@ -33,9 +34,11 @@ public class BluetoothScanningMainSwitchPreferenceController extends TogglePrefe implements OnMainSwitchChangeListener { private static final String KEY_BLUETOOTH_SCANNING_SWITCH = "bluetooth_always_scanning_switch"; + private final UserManager mUserManager; public BluetoothScanningMainSwitchPreferenceController(Context context) { super(context, KEY_BLUETOOTH_SCANNING_SWITCH); + mUserManager = UserManager.get(context); } @Override @@ -49,7 +52,9 @@ public void displayPreference(PreferenceScreen screen) { @Override public int getAvailabilityStatus() { return mContext.getResources().getBoolean(R.bool.config_show_location_scanning) - ? AVAILABLE + ? (mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_LOCATION) + ? DISABLED_DEPENDENT_SETTING + : AVAILABLE) : UNSUPPORTED_ON_DEVICE; } diff --git a/src/com/android/settings/location/WifiScanningMainSwitchPreferenceController.java b/src/com/android/settings/location/WifiScanningMainSwitchPreferenceController.java index 546f1e1e399..e22b0a08026 100644 --- a/src/com/android/settings/location/WifiScanningMainSwitchPreferenceController.java +++ b/src/com/android/settings/location/WifiScanningMainSwitchPreferenceController.java @@ -18,6 +18,7 @@ import android.content.Context; import android.net.wifi.WifiManager; import android.widget.Switch; +import android.os.UserManager; import androidx.preference.PreferenceScreen; @@ -34,10 +35,12 @@ public class WifiScanningMainSwitchPreferenceController extends TogglePreference private static final String KEY_WIFI_SCANNING_SWITCH = "wifi_always_scanning_switch"; private final WifiManager mWifiManager; + private final UserManager mUserManager; public WifiScanningMainSwitchPreferenceController(Context context) { super(context, KEY_WIFI_SCANNING_SWITCH); mWifiManager = context.getSystemService(WifiManager.class); + mUserManager = UserManager.get(context); } @Override @@ -52,7 +55,9 @@ public void displayPreference(PreferenceScreen screen) { @Override public int getAvailabilityStatus() { return mContext.getResources().getBoolean(R.bool.config_show_location_scanning) - ? AVAILABLE + ? (mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_LOCATION) + ? DISABLED_DEPENDENT_SETTING + : AVAILABLE) : UNSUPPORTED_ON_DEVICE; } From e16026c0090e243cf061a9e9c96fbb4515e7b25b Mon Sep 17 00:00:00 2001 From: Lin Yuan Date: Tue, 25 Apr 2023 12:30:03 -0400 Subject: [PATCH 2/3] Fix: Bluetooth and Wifi scanning location MainSwitch page policy transparency. When DISALLOW_CONFIG_LOCATION is set, make location service's MainSwitchPreference pages for wifi scanning and bluetooth scanning unavailable too, so that intent direct access is disabled. screenshot: http://shortn/_kkK3BMTSh1 Bug: 277333746 Bug: 277333781 Test: atest SettingsRoboTests, on device (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:7591fff234886e79c5d0210a2cf3282a69de9be9) Merged-In: I52f9a11b1dd78a5e5dbb1bbde3cda7381c87ae39 Change-Id: I52f9a11b1dd78a5e5dbb1bbde3cda7381c87ae39 --- .../BluetoothScanningMainSwitchPreferenceController.java | 7 ++++++- .../WifiScanningMainSwitchPreferenceController.java | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/location/BluetoothScanningMainSwitchPreferenceController.java b/src/com/android/settings/location/BluetoothScanningMainSwitchPreferenceController.java index b491ec953a2..78e31848acb 100644 --- a/src/com/android/settings/location/BluetoothScanningMainSwitchPreferenceController.java +++ b/src/com/android/settings/location/BluetoothScanningMainSwitchPreferenceController.java @@ -18,6 +18,7 @@ import android.content.Context; import android.provider.Settings; import android.widget.Switch; +import android.os.UserManager; import androidx.preference.PreferenceScreen; @@ -33,9 +34,11 @@ public class BluetoothScanningMainSwitchPreferenceController extends TogglePrefe implements OnMainSwitchChangeListener { private static final String KEY_BLUETOOTH_SCANNING_SWITCH = "bluetooth_always_scanning_switch"; + private final UserManager mUserManager; public BluetoothScanningMainSwitchPreferenceController(Context context) { super(context, KEY_BLUETOOTH_SCANNING_SWITCH); + mUserManager = UserManager.get(context); } @Override @@ -49,7 +52,9 @@ public void displayPreference(PreferenceScreen screen) { @Override public int getAvailabilityStatus() { return mContext.getResources().getBoolean(R.bool.config_show_location_scanning) - ? AVAILABLE + ? (mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_LOCATION) + ? DISABLED_DEPENDENT_SETTING + : AVAILABLE) : UNSUPPORTED_ON_DEVICE; } diff --git a/src/com/android/settings/location/WifiScanningMainSwitchPreferenceController.java b/src/com/android/settings/location/WifiScanningMainSwitchPreferenceController.java index 546f1e1e399..e22b0a08026 100644 --- a/src/com/android/settings/location/WifiScanningMainSwitchPreferenceController.java +++ b/src/com/android/settings/location/WifiScanningMainSwitchPreferenceController.java @@ -18,6 +18,7 @@ import android.content.Context; import android.net.wifi.WifiManager; import android.widget.Switch; +import android.os.UserManager; import androidx.preference.PreferenceScreen; @@ -34,10 +35,12 @@ public class WifiScanningMainSwitchPreferenceController extends TogglePreference private static final String KEY_WIFI_SCANNING_SWITCH = "wifi_always_scanning_switch"; private final WifiManager mWifiManager; + private final UserManager mUserManager; public WifiScanningMainSwitchPreferenceController(Context context) { super(context, KEY_WIFI_SCANNING_SWITCH); mWifiManager = context.getSystemService(WifiManager.class); + mUserManager = UserManager.get(context); } @Override @@ -52,7 +55,9 @@ public void displayPreference(PreferenceScreen screen) { @Override public int getAvailabilityStatus() { return mContext.getResources().getBoolean(R.bool.config_show_location_scanning) - ? AVAILABLE + ? (mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_LOCATION) + ? DISABLED_DEPENDENT_SETTING + : AVAILABLE) : UNSUPPORTED_ON_DEVICE; } From 349c845bf4a0a1a1ee0a528118eafd6bb19a15ad Mon Sep 17 00:00:00 2001 From: Lin Yuan Date: Tue, 25 Apr 2023 12:30:03 -0400 Subject: [PATCH 3/3] Fix: Bluetooth and Wifi scanning location MainSwitch page policy transparency. When DISALLOW_CONFIG_LOCATION is set, make location service's MainSwitchPreference pages for wifi scanning and bluetooth scanning unavailable too, so that intent direct access is disabled. screenshot: http://shortn/_kkK3BMTSh1 Bug: 277333746 Bug: 277333781 Test: atest SettingsRoboTests, on device (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:7591fff234886e79c5d0210a2cf3282a69de9be9) Merged-In: I52f9a11b1dd78a5e5dbb1bbde3cda7381c87ae39 Change-Id: I52f9a11b1dd78a5e5dbb1bbde3cda7381c87ae39 --- .../BluetoothScanningMainSwitchPreferenceController.java | 7 ++++++- .../WifiScanningMainSwitchPreferenceController.java | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/location/BluetoothScanningMainSwitchPreferenceController.java b/src/com/android/settings/location/BluetoothScanningMainSwitchPreferenceController.java index b491ec953a2..78e31848acb 100644 --- a/src/com/android/settings/location/BluetoothScanningMainSwitchPreferenceController.java +++ b/src/com/android/settings/location/BluetoothScanningMainSwitchPreferenceController.java @@ -18,6 +18,7 @@ import android.content.Context; import android.provider.Settings; import android.widget.Switch; +import android.os.UserManager; import androidx.preference.PreferenceScreen; @@ -33,9 +34,11 @@ public class BluetoothScanningMainSwitchPreferenceController extends TogglePrefe implements OnMainSwitchChangeListener { private static final String KEY_BLUETOOTH_SCANNING_SWITCH = "bluetooth_always_scanning_switch"; + private final UserManager mUserManager; public BluetoothScanningMainSwitchPreferenceController(Context context) { super(context, KEY_BLUETOOTH_SCANNING_SWITCH); + mUserManager = UserManager.get(context); } @Override @@ -49,7 +52,9 @@ public void displayPreference(PreferenceScreen screen) { @Override public int getAvailabilityStatus() { return mContext.getResources().getBoolean(R.bool.config_show_location_scanning) - ? AVAILABLE + ? (mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_LOCATION) + ? DISABLED_DEPENDENT_SETTING + : AVAILABLE) : UNSUPPORTED_ON_DEVICE; } diff --git a/src/com/android/settings/location/WifiScanningMainSwitchPreferenceController.java b/src/com/android/settings/location/WifiScanningMainSwitchPreferenceController.java index 546f1e1e399..e22b0a08026 100644 --- a/src/com/android/settings/location/WifiScanningMainSwitchPreferenceController.java +++ b/src/com/android/settings/location/WifiScanningMainSwitchPreferenceController.java @@ -18,6 +18,7 @@ import android.content.Context; import android.net.wifi.WifiManager; import android.widget.Switch; +import android.os.UserManager; import androidx.preference.PreferenceScreen; @@ -34,10 +35,12 @@ public class WifiScanningMainSwitchPreferenceController extends TogglePreference private static final String KEY_WIFI_SCANNING_SWITCH = "wifi_always_scanning_switch"; private final WifiManager mWifiManager; + private final UserManager mUserManager; public WifiScanningMainSwitchPreferenceController(Context context) { super(context, KEY_WIFI_SCANNING_SWITCH); mWifiManager = context.getSystemService(WifiManager.class); + mUserManager = UserManager.get(context); } @Override @@ -52,7 +55,9 @@ public void displayPreference(PreferenceScreen screen) { @Override public int getAvailabilityStatus() { return mContext.getResources().getBoolean(R.bool.config_show_location_scanning) - ? AVAILABLE + ? (mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_LOCATION) + ? DISABLED_DEPENDENT_SETTING + : AVAILABLE) : UNSUPPORTED_ON_DEVICE; }