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 fcae147f58)
This commit is contained in:
Lin Yuan
2022-05-26 18:49:21 -04:00
parent a39043d1ab
commit a12fff673b
3 changed files with 24 additions and 2 deletions

View File

@@ -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"

View File

@@ -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.
@@ -31,6 +35,13 @@ public class LocationServicesBluetoothScanningPreferenceController extends
super(context, key);
}
@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(),

View File

@@ -17,9 +17,13 @@ package com.android.settings.location;
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.
@@ -33,6 +37,13 @@ public class LocationServicesWifiScanningPreferenceController extends BasePrefer
mWifiManager = context.getSystemService(WifiManager.class);
}
@Override
public void updateState(Preference preference) {
((RestrictedPreference) preference).checkRestrictionAndSetDisabled(
UserManager.DISALLOW_CONFIG_LOCATION);
refreshSummary(preference);
}
@Override
public CharSequence getSummary() {
final boolean wifiScanOn = mWifiManager.isScanAlwaysAvailable();