RESTRICT AUTOMERGE Fix: policy enforcement for location wifi scanning
Make DISALLOW_CONFIG_LOCATION effectively disallow wifi scanning and
bluetooth scanning settings for location services.
screenshots: http://shortn/_EUOdqrOcnS, http://shortn/_j320QDm1Zo
Bug: 228315522
Bug: 228315529
Test: atest SettingsRoboTests, on device
Change-Id: I78291579a79e915a27ebdd051b3caf3fc04efc41
(cherry picked from commit fcae147f58be3b6441ce9e03bc59515af0d53ccc)
(cherry picked from commit 2598a722aef1a65fec2d9b66baf9e800fc72a7b5)
Merged-In: I78291579a79e915a27ebdd051b3caf3fc04efc41
diff --git a/res/xml/location_services.xml b/res/xml/location_services.xml
index 2de4e7b..04eff23 100644
--- a/res/xml/location_services.xml
+++ b/res/xml/location_services.xml
@@ -23,13 +23,13 @@
android:layout="@layout/preference_category_no_label"
settings:controller="com.android.settings.location.LocationInjectedServicesPreferenceController"/>
- <Preference
+ <com.android.settingslib.RestrictedPreference
android:fragment="com.android.settings.location.WifiScanningFragment"
android:key="location_services_wifi_scanning"
android:title="@string/location_scanning_wifi_always_scanning_title"
settings:controller="com.android.settings.location.LocationServicesWifiScanningPreferenceController"/>
- <Preference
+ <com.android.settingslib.RestrictedPreference
android:fragment="com.android.settings.location.BluetoothScanningFragment"
android:key="location_services_bluetooth_scanning"
android:title="@string/location_scanning_bluetooth_always_scanning_title"
diff --git a/src/com/android/settings/location/LocationServicesBluetoothScanningPreferenceController.java b/src/com/android/settings/location/LocationServicesBluetoothScanningPreferenceController.java
index 9913848..ccda572 100644
--- a/src/com/android/settings/location/LocationServicesBluetoothScanningPreferenceController.java
+++ b/src/com/android/settings/location/LocationServicesBluetoothScanningPreferenceController.java
@@ -16,10 +16,14 @@
package com.android.settings.location;
import android.content.Context;
+import android.os.UserManager;
import android.provider.Settings;
+import androidx.preference.Preference;
+
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
+import com.android.settingslib.RestrictedPreference;
/**
* Preference controller for Bluetooth scanning in Location Services.
@@ -32,6 +36,13 @@
}
@Override
+ public void updateState(Preference preference) {
+ ((RestrictedPreference) preference).checkRestrictionAndSetDisabled(
+ UserManager.DISALLOW_CONFIG_LOCATION);
+ refreshSummary(preference);
+ }
+
+ @Override
public CharSequence getSummary() {
final boolean bleScanOn = Settings.Global.getInt(mContext.getContentResolver(),
Settings.Global.BLE_SCAN_ALWAYS_AVAILABLE, 0) == 1;
diff --git a/src/com/android/settings/location/LocationServicesWifiScanningPreferenceController.java b/src/com/android/settings/location/LocationServicesWifiScanningPreferenceController.java
index 080a023..2814f9d 100644
--- a/src/com/android/settings/location/LocationServicesWifiScanningPreferenceController.java
+++ b/src/com/android/settings/location/LocationServicesWifiScanningPreferenceController.java
@@ -17,9 +17,13 @@
import android.content.Context;
import android.net.wifi.WifiManager;
+import android.os.UserManager;
+
+import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
+import com.android.settingslib.RestrictedPreference;
/**
* Preference controller for Wi-Fi scanning in Location Services.
@@ -34,6 +38,13 @@
}
@Override
+ public void updateState(Preference preference) {
+ ((RestrictedPreference) preference).checkRestrictionAndSetDisabled(
+ UserManager.DISALLOW_CONFIG_LOCATION);
+ refreshSummary(preference);
+ }
+
+ @Override
public CharSequence getSummary() {
final boolean wifiScanOn = mWifiManager.isScanAlwaysAvailable();
int resId =