Restrict user to clear app defaults when DISALLOW_APPS_CONTROL policy is enabled.

 - In App Info -> Open by defult -> Other defaults -> Clear defaults
   User should not able to clear app defaults when DISALLOW_APPS_CONTROL
   policy is enabled

Fixes: 140934406
Test: manual & robotest
Change-Id: Ia1aea3846d96b6faf9a1953101bafa4d2992322b
diff --git a/src/com/android/settings/applications/ClearDefaultsPreference.java b/src/com/android/settings/applications/ClearDefaultsPreference.java
index 768fb4e..f946636 100644
--- a/src/com/android/settings/applications/ClearDefaultsPreference.java
+++ b/src/com/android/settings/applications/ClearDefaultsPreference.java
@@ -24,6 +24,7 @@
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.UserHandle;
+import android.os.UserManager;
 import android.text.SpannableString;
 import android.text.TextUtils;
 import android.text.style.BulletSpan;
@@ -38,12 +39,15 @@
 import androidx.preference.PreferenceViewHolder;
 
 import com.android.settings.R;
+import com.android.settingslib.RestrictedLockUtils;
+import com.android.settingslib.RestrictedLockUtilsInternal;
 import com.android.settingslib.applications.AppUtils;
 import com.android.settingslib.applications.ApplicationsState;
 
 public class ClearDefaultsPreference extends Preference {
 
     protected static final String TAG = ClearDefaultsPreference.class.getSimpleName();
+    protected ApplicationsState.AppEntry mAppEntry;
 
     private Button mActivitiesButton;
 
@@ -51,7 +55,9 @@
     private IUsbManager mUsbManager;
     private PackageManager mPm;
     private String mPackageName;
-    protected ApplicationsState.AppEntry mAppEntry;
+
+    private final boolean mAppsControlDisallowedBySystem;
+    private final RestrictedLockUtils.EnforcedAdmin mAppsControlDisallowedAdmin;
 
     public ClearDefaultsPreference(Context context, AttributeSet attrs, int defStyleAttr,
             int defStyleRes) {
@@ -63,6 +69,13 @@
         mPm = context.getPackageManager();
         IBinder b = ServiceManager.getService(Context.USB_SERVICE);
         mUsbManager = IUsbManager.Stub.asInterface(b);
+
+        mAppsControlDisallowedBySystem = RestrictedLockUtilsInternal.hasBaseUserRestriction(
+                getContext(), UserManager.DISALLOW_APPS_CONTROL, UserHandle.myUserId());
+        mAppsControlDisallowedAdmin = RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
+                getContext(), UserManager.DISALLOW_APPS_CONTROL, UserHandle.myUserId());
+
+
     }
 
     public ClearDefaultsPreference(Context context, AttributeSet attrs, int defStyleAttr) {
@@ -95,6 +108,12 @@
         mActivitiesButton.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
+                if (mAppsControlDisallowedAdmin != null && !mAppsControlDisallowedBySystem) {
+                    RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
+                            getContext(), mAppsControlDisallowedAdmin);
+                    return;
+                }
+
                 if (mUsbManager != null) {
                     final int userId = UserHandle.myUserId();
                     mPm.clearPackagePreferredActivities(mPackageName);