Merge "Extract app label from component name in notification access confirmation UI" into qt-dev
diff --git a/res/xml/location_scanning.xml b/res/xml/location_scanning.xml
index 5e7bd24..f484768 100644
--- a/res/xml/location_scanning.xml
+++ b/res/xml/location_scanning.xml
@@ -18,13 +18,13 @@
         android:title="@string/location_scanning_screen_title"
         android:key="scanning_screen">
 
-        <SwitchPreference
+        <com.android.settingslib.RestrictedSwitchPreference
             android:title="@string/location_scanning_wifi_always_scanning_title"
             android:summary="@string/location_scanning_wifi_always_scanning_description"
             android:defaultValue="true"
             android:key="wifi_always_scanning" />
 
-        <SwitchPreference
+        <com.android.settingslib.RestrictedSwitchPreference
             android:title="@string/location_scanning_bluetooth_always_scanning_title"
             android:summary="@string/location_scanning_bluetooth_always_scanning_description"
             android:defaultValue="true"
diff --git a/src/com/android/settings/DefaultRingtonePreference.java b/src/com/android/settings/DefaultRingtonePreference.java
index 914c4b2..9bf626c 100644
--- a/src/com/android/settings/DefaultRingtonePreference.java
+++ b/src/com/android/settings/DefaultRingtonePreference.java
@@ -46,7 +46,12 @@
 
     @Override
     protected void onSaveRingtone(Uri ringtoneUri) {
-        String mimeType = getContext().getContentResolver().getType(ringtoneUri);
+        if (ringtoneUri == null) {
+            setActualDefaultRingtoneUri(ringtoneUri);
+            return;
+        }
+
+        String mimeType = mUserContext.getContentResolver().getType(ringtoneUri);
         if (mimeType == null) {
             Log.e(TAG, "onSaveRingtone for URI:" + ringtoneUri
                     + " ignored: failure to find mimeType (no access from this context?)");
diff --git a/src/com/android/settings/location/BluetoothScanningPreferenceController.java b/src/com/android/settings/location/BluetoothScanningPreferenceController.java
index d16e1e5..cee3105 100644
--- a/src/com/android/settings/location/BluetoothScanningPreferenceController.java
+++ b/src/com/android/settings/location/BluetoothScanningPreferenceController.java
@@ -14,12 +14,17 @@
 package com.android.settings.location;
 
 import android.content.Context;
+import android.os.UserHandle;
+import android.os.UserManager;
 import android.provider.Settings;
 
 import androidx.preference.Preference;
 import androidx.preference.SwitchPreference;
 
 import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settingslib.RestrictedLockUtils;
+import com.android.settingslib.RestrictedLockUtilsInternal;
+import com.android.settingslib.RestrictedSwitchPreference;
 import com.android.settingslib.core.AbstractPreferenceController;
 
 public class BluetoothScanningPreferenceController extends AbstractPreferenceController
@@ -46,6 +51,12 @@
         ((SwitchPreference) preference).setChecked(
                 Settings.Global.getInt(mContext.getContentResolver(),
                         Settings.Global.BLE_SCAN_ALWAYS_AVAILABLE, 0) == 1);
+        final RestrictedLockUtils.EnforcedAdmin admin =
+            RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
+                mContext, UserManager.DISALLOW_CONFIG_LOCATION, UserHandle.myUserId());
+        if (admin != null) {
+          ((RestrictedSwitchPreference) preference).setDisabledByAdmin(admin);
+        }
     }
 
     @Override
diff --git a/src/com/android/settings/location/WifiScanningPreferenceController.java b/src/com/android/settings/location/WifiScanningPreferenceController.java
index 234ec5e..fb64fa9 100644
--- a/src/com/android/settings/location/WifiScanningPreferenceController.java
+++ b/src/com/android/settings/location/WifiScanningPreferenceController.java
@@ -14,12 +14,17 @@
 package com.android.settings.location;
 
 import android.content.Context;
+import android.os.UserHandle;
+import android.os.UserManager;
 import android.provider.Settings;
 
 import androidx.preference.Preference;
 import androidx.preference.SwitchPreference;
 
 import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settingslib.RestrictedLockUtils;
+import com.android.settingslib.RestrictedLockUtilsInternal;
+import com.android.settingslib.RestrictedSwitchPreference;
 import com.android.settingslib.core.AbstractPreferenceController;
 
 public class WifiScanningPreferenceController extends AbstractPreferenceController
@@ -46,6 +51,12 @@
         ((SwitchPreference) preference).setChecked(
                 Settings.Global.getInt(mContext.getContentResolver(),
                         Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 1);
+        final RestrictedLockUtils.EnforcedAdmin admin =
+            RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
+                mContext, UserManager.DISALLOW_CONFIG_LOCATION, UserHandle.myUserId());
+        if (admin != null) {
+          ((RestrictedSwitchPreference) preference).setDisabledByAdmin(admin);
+        }
     }
 
     @Override
diff --git a/src/com/android/settings/nfc/SecureNfcPreferenceController.java b/src/com/android/settings/nfc/SecureNfcPreferenceController.java
index 1a514a6..2ff685e 100644
--- a/src/com/android/settings/nfc/SecureNfcPreferenceController.java
+++ b/src/com/android/settings/nfc/SecureNfcPreferenceController.java
@@ -17,6 +17,7 @@
 
 import android.content.Context;
 import android.nfc.NfcAdapter;
+import android.os.UserManager;
 
 import androidx.preference.PreferenceScreen;
 import androidx.preference.SwitchPreference;
@@ -32,10 +33,12 @@
     public static final String KEY_SECURENFC_SETTINGS = "nfc_secure_settings";
     private final NfcAdapter mNfcAdapter;
     private SecureNfcEnabler mSecureNfcEnabler;
+    private final UserManager mUserManager;
 
     public SecureNfcPreferenceController(Context context, String key) {
         super(context, key);
         mNfcAdapter = NfcAdapter.getDefaultAdapter(context);
+        mUserManager = context.getSystemService(UserManager.class);
     }
 
     @Override
@@ -58,7 +61,11 @@
 
     @Override
     public boolean setChecked(boolean isChecked) {
-        return mNfcAdapter.enableSecureNfc(isChecked);
+        if (isToggleable()) {
+            return mNfcAdapter.enableSecureNfc(isChecked);
+        } else {
+            return false;
+        }
     }
 
     @Override
@@ -95,4 +102,12 @@
             mSecureNfcEnabler.pause();
         }
     }
+
+    private boolean isToggleable() {
+        if (mUserManager.isGuestUser()) {
+            return false;
+        }
+        return true;
+    }
+
 }
diff --git a/tests/unit/src/com/android/settings/DefaultRingtonePreferenceTest.java b/tests/unit/src/com/android/settings/DefaultRingtonePreferenceTest.java
index b9dea01..7877684 100644
--- a/tests/unit/src/com/android/settings/DefaultRingtonePreferenceTest.java
+++ b/tests/unit/src/com/android/settings/DefaultRingtonePreferenceTest.java
@@ -59,6 +59,7 @@
         when(mDefaultRingtonePreference.getRingtoneType())
                 .thenReturn(RingtoneManager.TYPE_RINGTONE);
         mDefaultRingtonePreference.setUserId(1);
+        mDefaultRingtonePreference.mUserContext = context;
     }
 
     @Test