Merge "[Settings] User with restriction should avoid from having entries through Settings search" into tm-qpr-dev
diff --git a/src/com/android/settings/datausage/BillingCycleSettings.java b/src/com/android/settings/datausage/BillingCycleSettings.java
index baf8e7e..27a5c01 100644
--- a/src/com/android/settings/datausage/BillingCycleSettings.java
+++ b/src/com/android/settings/datausage/BillingCycleSettings.java
@@ -43,6 +43,7 @@
 import com.android.settings.R;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settings.network.SubscriptionUtil;
+import com.android.settings.network.telephony.MobileNetworkUtils;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settingslib.NetworkPolicyEditor;
 import com.android.settingslib.net.DataUsageController;
@@ -503,7 +504,8 @@
 
                 @Override
                 protected boolean isPageSearchEnabled(Context context) {
-                    return SubscriptionUtil.isSimHardwareVisible(context)
+                    return (!MobileNetworkUtils.isMobileNetworkUserRestricted(context))
+                            && SubscriptionUtil.isSimHardwareVisible(context)
                             && DataUsageUtils.hasMobileData(context);
                 }
             };
diff --git a/src/com/android/settings/network/telephony/MobileNetworkUtils.java b/src/com/android/settings/network/telephony/MobileNetworkUtils.java
index 65e880b..50c3f39 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkUtils.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkUtils.java
@@ -49,6 +49,7 @@
 import android.os.PersistableBundle;
 import android.os.SystemClock;
 import android.os.SystemProperties;
+import android.os.UserManager;
 import android.provider.Settings;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
@@ -114,6 +115,23 @@
     public static final Drawable EMPTY_DRAWABLE = new ColorDrawable(Color.TRANSPARENT);
 
     /**
+     * Return true if current user limited by UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS.
+     *
+     * Note: Guest user should have this restriction through
+     *       GuestTelephonyPreferenceController.java.
+     *       However, it's not help with those devices upgraded their software.
+     */
+    public static boolean isMobileNetworkUserRestricted(Context context) {
+        UserManager um = context.getSystemService(UserManager.class);
+        boolean disallow = false;
+        if (um != null) {
+            disallow = um.isGuestUser() || um.hasUserRestriction(
+                    UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS);
+        }
+        return disallow;
+    }
+
+    /**
      * Returns if DPC APNs are enforced.
      */
     public static boolean isDpcApnEnforced(Context context) {