Prevents users from being added if device is not provisioned

Also added a utility function for checking provisioning, instead of
repeating code for this check in several places.

bug:26156445
Change-Id: I9f4a280dd0cdf889f892e386dbf6a3fdb2a052ef
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 058ebea..79b717a 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -339,9 +339,7 @@
         mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
 
         setIfOnlyAvailableForAdmins(true);
-        if (isUiRestricted()
-                || Settings.Global.getInt(getActivity().getContentResolver(),
-                        Settings.Global.DEVICE_PROVISIONED, 0) == 0) {
+        if (isUiRestricted() || !Utils.isDeviceProvisioned(getActivity())) {
             // Block access to developer options if the user is not the owner, if user policy
             // restricts it, or if the device has not been provisioned
             mUnavailable = true;
diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java
index 0f51011..ff7334b 100644
--- a/src/com/android/settings/DeviceInfoSettings.java
+++ b/src/com/android/settings/DeviceInfoSettings.java
@@ -231,8 +231,7 @@
             if (!mUm.isAdminUser()) return true;
 
             // Don't enable developer options until device has been provisioned
-            if (Settings.Global.getInt(getActivity().getContentResolver(),
-                    Settings.Global.DEVICE_PROVISIONED, 0) == 0) {
+            if (!Utils.isDeviceProvisioned(getActivity())) {
                 return true;
             }
 
diff --git a/src/com/android/settings/MasterClearConfirm.java b/src/com/android/settings/MasterClearConfirm.java
index 7c14bad..77e283e 100644
--- a/src/com/android/settings/MasterClearConfirm.java
+++ b/src/com/android/settings/MasterClearConfirm.java
@@ -68,8 +68,7 @@
                     getActivity().getSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE);
 
             if (pdbManager != null && !pdbManager.getOemUnlockEnabled() &&
-                    Settings.Global.getInt(getActivity().getContentResolver(),
-                            Settings.Global.DEVICE_PROVISIONED, 0) != 0) {
+                    Utils.isDeviceProvisioned(getActivity())) {
                 // if OEM unlock is enabled, this will be wiped during FR process. If disabled, it
                 // will be wiped here, unless the device is still being provisioned, in which case
                 // the persistent data block will be preserved.
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 60973e1..84bb2dd 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -63,6 +63,7 @@
 import android.provider.ContactsContract.Data;
 import android.provider.ContactsContract.Profile;
 import android.provider.ContactsContract.RawContacts;
+import android.provider.Settings;
 import android.service.persistentdata.PersistentDataBlockManager;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceGroup;
@@ -1100,5 +1101,10 @@
             }
         }
     }
+
+    public static boolean isDeviceProvisioned(Context context) {
+        return Settings.Global.getInt(context.getContentResolver(),
+                Settings.Global.DEVICE_PROVISIONED, 0) != 0;
+    }
 }
 
diff --git a/src/com/android/settings/sim/SimSelectNotification.java b/src/com/android/settings/sim/SimSelectNotification.java
index 29da205..67e423b 100644
--- a/src/com/android/settings/sim/SimSelectNotification.java
+++ b/src/com/android/settings/sim/SimSelectNotification.java
@@ -32,6 +32,7 @@
 import com.android.internal.telephony.IccCardConstants;
 import com.android.settings.R;
 import com.android.settings.Settings.SimSettingsActivity;
+import com.android.settings.Utils;
 
 import java.util.List;
 
@@ -45,11 +46,9 @@
                 context.getSystemService(Context.TELEPHONY_SERVICE);
         final SubscriptionManager subscriptionManager = SubscriptionManager.from(context);
         final int numSlots = telephonyManager.getSimCount();
-        final boolean isInProvisioning = Settings.Global.getInt(context.getContentResolver(),
-                Settings.Global.DEVICE_PROVISIONED, 0) == 0;
 
-        // Do not create notifications on single SIM devices or when provisiong i.e. Setup Wizard.
-        if (numSlots < 2 || isInProvisioning) {
+        // Do not create notifications on single SIM devices or when provisioning i.e. Setup Wizard.
+        if (numSlots < 2 || !Utils.isDeviceProvisioned(context)) {
             return;
         }
 
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index 2163245..b3fad0f 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -223,7 +223,7 @@
         }
         mAddUser = (DimmableIconPreference) findPreference(KEY_ADD_USER);
         // Determine if add user/profile button should be visible
-        if (mUserCaps.mCanAddUser) {
+        if (mUserCaps.mCanAddUser && Utils.isDeviceProvisioned(getActivity())) {
             mAddUser.setOnPreferenceClickListener(this);
             // change label to only mention user, if restricted profiles are not supported
             if (!mUserCaps.mCanAddRestrictedProfile) {
@@ -826,7 +826,8 @@
         }
 
         // Append Add user to the end of the list
-        if (mUserCaps.mCanAddUser || mUserCaps.mDisallowAddUserSetByAdmin) {
+        if ((mUserCaps.mCanAddUser || mUserCaps.mDisallowAddUserSetByAdmin) &&
+                Utils.isDeviceProvisioned(getActivity())) {
             boolean moreUsers = mUserManager.canAddMoreUsers();
             mAddUser.setOrder(Preference.DEFAULT_ORDER);
             preferenceScreen.addPreference(mAddUser);