Hides DELETE button for system user, since sys users cannot be deleted.

Change-Id: I242cd1a146682c4cd93b7f1e5f91efce3485ac83
Fixes: 67384316
Test: Visually verified the existence and location of delete button for various user scenarios on mojave.
diff --git a/src/com/android/car/settings/users/UserDetailsSettingsFragment.java b/src/com/android/car/settings/users/UserDetailsSettingsFragment.java
index 6ff311a..a33e328 100644
--- a/src/com/android/car/settings/users/UserDetailsSettingsFragment.java
+++ b/src/com/android/car/settings/users/UserDetailsSettingsFragment.java
@@ -15,10 +15,9 @@
  */
 package com.android.car.settings.users;
 
-import android.app.ActivityManager;
+import android.annotation.IdRes;
 import android.content.pm.UserInfo;
 import android.os.Bundle;
-import android.os.UserHandle;
 import android.support.design.widget.TextInputEditText;
 import android.view.View;
 import android.widget.Button;
@@ -35,9 +34,6 @@
     private static final String TAG = "UserDetailsSettingsFragment";
     private UserInfo mUserInfo;
 
-    private boolean mCurrentUserIsOwner;
-    private boolean mIsCurrentUser;
-
     private TextInputEditText mUserNameEditText;
     private Button mOkButton;
     private Button mCancelButton;
@@ -60,8 +56,6 @@
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         mUserInfo = getArguments().getParcelable(EXTRA_USER_INFO);
-        mCurrentUserIsOwner = ActivityManager.getCurrentUser() == UserHandle.USER_SYSTEM;
-        mIsCurrentUser = ActivityManager.getCurrentUser() == mUserInfo.id;
     }
 
     @Override
@@ -78,8 +72,7 @@
 
         configureUsernameEditing();
 
-        showRemoveUserButton();
-        showSwitchButton();
+        showActionButtons();
     }
 
     @Override
@@ -105,8 +98,9 @@
             getActivity().onBackPressed();
         });
 
-        if (mIsCurrentUser /* Each user can edit their own name. */
-                || mCurrentUserIsOwner /* Owner can edit everyone's name. */) {
+        // Each user can edit their own name. Owner can edit everyone's name.
+        if (mUserManagerHelper.userIsCurrentUser(mUserInfo)
+                || mUserManagerHelper.currentUserIsSystemUser()) {
             allowUserNameEditing();
         } else {
             mUserNameEditText.setEnabled(false);
@@ -130,8 +124,25 @@
         });
     }
 
-    private void showRemoveUserButton() {
-        Button removeUserBtn = (Button) getActivity().findViewById(R.id.action_button1);
+    private void showActionButtons() {
+        if (mUserManagerHelper.userIsCurrentUser(mUserInfo)) {
+            // Already in current user, shouldn't show SWITCH button.
+            showRemoveUserButton(R.id.action_button1);
+            return;
+        }
+
+        showRemoveUserButton(R.id.action_button2);
+        showSwitchButton(R.id.action_button1);
+    }
+
+    private void showRemoveUserButton(@IdRes int buttonId) {
+        if (!mUserManagerHelper.userCanBeRemoved(mUserInfo)) {
+            // User cannot be removed, do not show delete button.
+            return;
+        }
+
+        Button removeUserBtn = (Button) getActivity().findViewById(buttonId);
+        removeUserBtn.setVisibility(View.VISIBLE);
         removeUserBtn.setText(R.string.delete_button);
         removeUserBtn
                 .setOnClickListener(v -> {
@@ -142,15 +153,13 @@
                 });
     }
 
-    private void showSwitchButton() {
-        if (!mIsCurrentUser) {
-            Button switchUserBtn = (Button) getActivity().findViewById(R.id.action_button2);
-            switchUserBtn.setVisibility(View.VISIBLE);
-            switchUserBtn.setText(R.string.user_switch);
-            switchUserBtn.setOnClickListener(v -> {
-                mUserManagerHelper.switchToUser(mUserInfo);
-                getActivity().onBackPressed();
-            });
-        }
+    private void showSwitchButton(@IdRes int buttonId) {
+        Button switchUserBtn = (Button) getActivity().findViewById(buttonId);
+        switchUserBtn.setVisibility(View.VISIBLE);
+        switchUserBtn.setText(R.string.user_switch);
+        switchUserBtn.setOnClickListener(v -> {
+            mUserManagerHelper.switchToUser(mUserInfo);
+            getActivity().onBackPressed();
+        });
     }
 }
diff --git a/src/com/android/car/settings/users/UserManagerHelper.java b/src/com/android/car/settings/users/UserManagerHelper.java
index 28a6531..8627288 100644
--- a/src/com/android/car/settings/users/UserManagerHelper.java
+++ b/src/com/android/car/settings/users/UserManagerHelper.java
@@ -180,6 +180,45 @@
     }
 
     /**
+     * Checks whether the user is system user (admin).
+     *
+     * @param userInfo User to check against system user.
+     * @return {@code true} if system user, {@code false} otherwise.
+     */
+    public boolean userIsSystemUser(UserInfo userInfo) {
+        return userInfo.id == UserHandle.USER_SYSTEM;
+    }
+
+    /**
+     * Returns whether this user can be removed from the system.
+     *
+     * @param userInfo User to be removed
+     * @return {@code true} if they can be removed, {@code false} otherwise.
+     */
+    public boolean userCanBeRemoved(UserInfo userInfo) {
+        return !userIsSystemUser(userInfo);
+    }
+
+    /**
+     * Checks whether currently logged in user is also the system user (admin).
+     *
+     * @return {@code true} if current user is admin, {@code false} otherwise.
+     */
+    public boolean currentUserIsSystemUser() {
+        return userIsSystemUser(getCurrentUserInfo());
+    }
+
+    /**
+     * Checks whether passed in user is the user that's currently logged in.
+     *
+     * @param userInfo User to check.
+     * @return {@code true} if current user, {@code false} otherwise.
+     */
+    public boolean userIsCurrentUser(UserInfo userInfo) {
+        return getCurrentUserInfo().id == userInfo.id;
+    }
+
+    /**
      * Switches (logs in) to another user.
      *
      * @param userInfo User to switch to.