Update Settings to reflect service API change

Change from getEnrollmentHandlesForUser to getDeviceInfoForUser

Bug: 129552708
Test: Build and flash
Change-Id: Ie75d3dd2fb6bf15c7d6b5c2ffe1cea0c48effcbb
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 58c383d..2c8ebb3 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -987,8 +987,6 @@
         <item quantity="one"><xliff:g id="count" example="1">%d</xliff:g> device</item>
         <item quantity="other"><xliff:g id="count" example="10">%d</xliff:g> devices</item>
     </plurals>
-    <!-- Preference file key for trusted device -->
-    <string name="trusted_device_preference_file_key" translatable="false">trusted_device_shared_preference</string>
     <!-- Message in dialog which will remind the user what a trusted device can do. [CHAR LIMIT=NONE]-->
     <string name="remove_device_message">Your <xliff:g id="connected_device_name" example="Pixel2">%1$s</xliff:g> will unlock this car when it\'s connected. If someone takes your <xliff:g id="connected_device_name" example="Pixel2">%1$s</xliff:g>, they may be able to access this device</string>
     <!-- Confirm button label of confirm pairing code dialog [CHAR LIMIT=30]-->
diff --git a/src/com/android/car/settings/security/AddTrustedDevicePreferenceController.java b/src/com/android/car/settings/security/AddTrustedDevicePreferenceController.java
index 807e199..5289747 100644
--- a/src/com/android/car/settings/security/AddTrustedDevicePreferenceController.java
+++ b/src/com/android/car/settings/security/AddTrustedDevicePreferenceController.java
@@ -26,7 +26,6 @@
 import android.car.userlib.CarUserManagerHelper;
 import android.content.Context;
 import android.content.Intent;
-import android.content.SharedPreferences;
 import android.widget.Toast;
 
 import androidx.annotation.VisibleForTesting;
@@ -37,7 +36,6 @@
 import com.android.car.settings.common.Logger;
 import com.android.car.settings.common.PreferenceController;
 import com.android.internal.widget.LockPatternUtils;
-import com.android.settingslib.utils.ThreadUtils;
 
 /**
  * Business logic when user click on add trusted device, a new screen will be shown and user can add
@@ -47,7 +45,6 @@
 public class AddTrustedDevicePreferenceController extends PreferenceController<Preference> {
 
     private static final Logger LOG = new Logger(AddTrustedDevicePreferenceController.class);
-    private final SharedPreferences mPrefs;
     private final Car mCar;
     private final CarUserManagerHelper mCarUserManagerHelper;
     private final LockPatternUtils mLockPatternUtils;
@@ -86,12 +83,10 @@
                 @Override
                 public void onEscrowTokenActiveStateChanged(long handle, boolean active) {
                     if (active) {
-                        ThreadUtils.postOnMainThread(
-                                () -> mPrefs.edit().putString(String.valueOf(handle),
-                                        mBluetoothDevice.getName()).apply());
+                        // TODO(b/124052887) to show the local device name of the device
                         Toast.makeText(getContext(), getContext().getString(
                                 R.string.trusted_device_success_enrollment_toast,
-                                mBluetoothDevice.getName()), Toast.LENGTH_LONG).show();
+                                mBluetoothDevice.getAddress()), Toast.LENGTH_LONG).show();
                     } else {
                         LOG.d(handle + " has been deactivated");
                     }
@@ -160,9 +155,6 @@
         mCar = Car.createCar(context);
         mCarUserManagerHelper = new CarUserManagerHelper(context);
         mLockPatternUtils = new LockPatternUtils(context);
-        mPrefs = context.getSharedPreferences(
-                context.getString(R.string.trusted_device_preference_file_key),
-                Context.MODE_PRIVATE);
         try {
             mCarTrustAgentEnrollmentManager = (CarTrustAgentEnrollmentManager) mCar.getCarManager(
                     Car.CAR_TRUST_AGENT_ENROLLMENT_SERVICE);
diff --git a/src/com/android/car/settings/security/TrustedDeviceEntryPreferenceController.java b/src/com/android/car/settings/security/TrustedDeviceEntryPreferenceController.java
index 294368e..7efd671 100644
--- a/src/com/android/car/settings/security/TrustedDeviceEntryPreferenceController.java
+++ b/src/com/android/car/settings/security/TrustedDeviceEntryPreferenceController.java
@@ -65,7 +65,7 @@
     protected void updateState(Preference preference) {
         int listSize = 0;
         try {
-            listSize = mCarTrustAgentEnrollmentManager.getEnrollmentHandlesForUser(
+            listSize = mCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
                     mCarUserManagerHelper.getCurrentProcessUserId()).size();
         } catch (CarNotConnectedException e) {
             LOG.e(e.getMessage(), e);
diff --git a/src/com/android/car/settings/security/TrustedDeviceListPreferenceController.java b/src/com/android/car/settings/security/TrustedDeviceListPreferenceController.java
index ce37692..8e0d087 100644
--- a/src/com/android/car/settings/security/TrustedDeviceListPreferenceController.java
+++ b/src/com/android/car/settings/security/TrustedDeviceListPreferenceController.java
@@ -22,9 +22,9 @@
 import android.car.Car;
 import android.car.drivingstate.CarUxRestrictions;
 import android.car.trust.CarTrustAgentEnrollmentManager;
+import android.car.trust.TrustedDeviceInfo;
 import android.car.userlib.CarUserManagerHelper;
 import android.content.Context;
-import android.content.SharedPreferences;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
@@ -35,7 +35,6 @@
 import com.android.car.settings.common.Logger;
 import com.android.car.settings.common.PreferenceController;
 import com.android.internal.widget.LockPatternUtils;
-import com.android.settingslib.utils.ThreadUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -45,7 +44,6 @@
  */
 public class TrustedDeviceListPreferenceController extends PreferenceController<PreferenceGroup> {
     private static final Logger LOG = new Logger(TrustedDeviceListPreferenceController.class);
-    private final SharedPreferences mPrefs;
     private final CarUserManagerHelper mCarUserManagerHelper;
     private final LockPatternUtils mLockPatternUtils;
     private final Car mCar;
@@ -69,8 +67,6 @@
 
                 @Override
                 public void onEscrowTokenRemoved(long handle) {
-                    ThreadUtils.postOnMainThread(
-                            () -> mPrefs.edit().remove(String.valueOf(handle)).commit());
                     refreshUi();
                 }
 
@@ -96,9 +92,6 @@
         super(context, preferenceKey, fragmentController, uxRestrictions);
         mCarUserManagerHelper = new CarUserManagerHelper(context);
         mLockPatternUtils = new LockPatternUtils(context);
-        mPrefs = context.getSharedPreferences(
-                context.getString(R.string.trusted_device_preference_file_key),
-                Context.MODE_PRIVATE);
         mCar = Car.createCar(context);
         mCarTrustAgentEnrollmentManager = (CarTrustAgentEnrollmentManager) mCar.getCarManager(
                 Car.CAR_TRUST_AGENT_ENROLLMENT_SERVICE);
@@ -173,27 +166,25 @@
 
     private List<Preference> createTrustDevicePreferenceList() {
         List<Preference> trustedDevicesList = new ArrayList<>();
-        List<Long> handles = mCarTrustAgentEnrollmentManager.getEnrollmentHandlesForUser(
-                mCarUserManagerHelper.getCurrentProcessUserId());
-        for (Long handle : handles) {
-            String res = mPrefs.getString(String.valueOf(handle), null);
-            if (res != null) {
-                trustedDevicesList.add(createTrustedDevicePreference(res, handle));
-            } else {
-                LOG.e("Can not find device name for handle: " + handle);
-            }
+        List<TrustedDeviceInfo> devices =
+                mCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+                        mCarUserManagerHelper.getCurrentProcessUserId());
+        for (TrustedDeviceInfo deviceInfo : devices) {
+            trustedDevicesList.add(
+                    // TODO(b/124052887) it should be getName here
+                    createTrustedDevicePreference(deviceInfo.getAddress(), deviceInfo.getHandle()));
         }
         return trustedDevicesList;
     }
 
-    private Preference createTrustedDevicePreference(String deviceName, long deviceId) {
+    private Preference createTrustedDevicePreference(String deviceName, long handle) {
         Preference preference = new Preference(getContext());
         preference.setIcon(R.drawable.ic_settings_bluetooth);
         preference.setTitle(deviceName);
-        preference.setKey(String.valueOf(deviceId));
+        preference.setKey(String.valueOf(handle));
         preference.setOnPreferenceClickListener((Preference pref) -> {
             ConfirmRemoveDeviceDialog dialog = ConfirmRemoveDeviceDialog.newInstance(deviceName,
-                    deviceId);
+                    handle);
             dialog.setConfirmRemoveDeviceListener(mConfirmRemoveDeviceListener);
             getFragmentController().showDialog(dialog, ConfirmRemoveDeviceDialog.TAG);
             return true;
diff --git a/tests/robotests/src/com/android/car/settings/security/TrustedDeviceEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/security/TrustedDeviceEntryPreferenceControllerTest.java
index 2666231..a91bb5d 100644
--- a/tests/robotests/src/com/android/car/settings/security/TrustedDeviceEntryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/security/TrustedDeviceEntryPreferenceControllerTest.java
@@ -25,6 +25,7 @@
 import android.car.Car;
 import android.car.CarNotConnectedException;
 import android.car.trust.CarTrustAgentEnrollmentManager;
+import android.car.trust.TrustedDeviceInfo;
 import android.car.userlib.CarUserManagerHelper;
 import android.content.Context;
 
@@ -44,7 +45,7 @@
 import org.robolectric.annotation.Config;
 
 import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.List;
 
 @RunWith(CarSettingsRobolectricTestRunner.class)
 @Config(shadows = {ShadowCar.class})
@@ -82,9 +83,12 @@
 
     @Test
     public void testUpdateState() throws CarNotConnectedException {
-        when(mMockCarTrustAgentEnrollmentManager.getEnrollmentHandlesForUser(
+        List<TrustedDeviceInfo> devices = new ArrayList<>();
+        devices.add(new TrustedDeviceInfo(1, "", ""));
+        devices.add(new TrustedDeviceInfo(2, "", ""));
+        when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
                 mCarUserManagerHelper.getCurrentProcessUserId()))
-                .thenReturn(new ArrayList<>(Arrays.asList(1L, 2L)));
+                .thenReturn(devices);
         mController.refreshUi();
         assertThat(mTrustedDevicePreference.getSummary()).isEqualTo("2 devices");
     }
diff --git a/tests/robotests/src/com/android/car/settings/security/TrustedDeviceListPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/security/TrustedDeviceListPreferenceControllerTest.java
index 3dbf4f3..b130812 100644
--- a/tests/robotests/src/com/android/car/settings/security/TrustedDeviceListPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/security/TrustedDeviceListPreferenceControllerTest.java
@@ -26,9 +26,9 @@
 import android.app.admin.DevicePolicyManager;
 import android.car.Car;
 import android.car.trust.CarTrustAgentEnrollmentManager;
+import android.car.trust.TrustedDeviceInfo;
 import android.car.userlib.CarUserManagerHelper;
 import android.content.Context;
-import android.content.SharedPreferences;
 
 import androidx.lifecycle.Lifecycle;
 import androidx.preference.Preference;
@@ -53,7 +53,6 @@
 import org.robolectric.annotation.Config;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -72,8 +71,12 @@
     private LockPatternUtils mLockPatternUtils;
     private CarUserManagerHelper mCarUserManagerHelper;
     private PreferenceGroup mPreferenceGroup;
-    private SharedPreferences mPrefs;
     private TrustedDeviceListPreferenceController mController;
+    private TrustedDeviceInfo mTestDevice1 = new TrustedDeviceInfo(1, "", "");
+    private TrustedDeviceInfo mTestDevice2 = new TrustedDeviceInfo(2, "", "");
+    private TrustedDeviceInfo mTestDevice3 = new TrustedDeviceInfo(3, "", "");
+    List<TrustedDeviceInfo> mUpdatedDevices = new ArrayList<>();
+    List<TrustedDeviceInfo> mDevices = new ArrayList<>();
 
     @Before
     public void setUp() {
@@ -82,19 +85,16 @@
         ShadowCar.setCarManager(Car.CAR_TRUST_AGENT_ENROLLMENT_SERVICE,
                 mMockCarTrustAgentEnrollmentManager);
         ShadowLockPatternUtils.setInstance(mLockPatternUtils);
-        mPrefs = mContext.getSharedPreferences(
-                mContext.getString(R.string.trusted_device_preference_file_key),
-                Context.MODE_PRIVATE);
-        SharedPreferences.Editor preferencesEditor = mPrefs.edit();
-        preferencesEditor.putString("1", "device1");
-        preferencesEditor.putString("2", "device2");
-        preferencesEditor.putString("3", "device3");
-        preferencesEditor.apply();
         mPreferenceGroup = new LogicalPreferenceGroup(mContext);
         mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
                 TrustedDeviceListPreferenceController.class, mPreferenceGroup);
         mController = mPreferenceControllerHelper.getController();
         mCarUserManagerHelper = new CarUserManagerHelper(mContext);
+        mDevices.add(mTestDevice1);
+        mDevices.add(mTestDevice2);
+        mUpdatedDevices.add(mTestDevice1);
+        mUpdatedDevices.add(mTestDevice2);
+        mUpdatedDevices.add(mTestDevice3);
         mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
     }
 
@@ -106,12 +106,11 @@
 
     @Test
     public void onDeviceRemoved_refreshUi() {
-        List<Long> handles = new ArrayList<>(Arrays.asList(1L, 2L, 3L));
         when(mLockPatternUtils.getKeyguardStoredPasswordQuality(
                 mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(
                 DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
-        when(mMockCarTrustAgentEnrollmentManager.getEnrollmentHandlesForUser(
-                mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(handles);
+        when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+                mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(mUpdatedDevices);
 
         mController.refreshUi();
 
@@ -121,17 +120,18 @@
                 ArgumentCaptor.forClass(
                         CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback.class);
         verify(mMockCarTrustAgentEnrollmentManager).setEnrollmentCallback(callBack.capture());
-
-        callBack.getValue().onEscrowTokenRemoved(handles.get(0));
+        mUpdatedDevices.remove(0);
+        when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+                mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(mUpdatedDevices);
+        callBack.getValue().onEscrowTokenRemoved(mUpdatedDevices.get(0).getHandle());
 
         assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
     }
 
     @Test
     public void onDeviceAdded_refreshUi() {
-        List<Long> handles = new ArrayList<>(Arrays.asList(1L, 2L));
-        when(mMockCarTrustAgentEnrollmentManager.getEnrollmentHandlesForUser(
-                mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(handles);
+        when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+                mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(mDevices);
         when(mLockPatternUtils.getKeyguardStoredPasswordQuality(
                 mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(
                 DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
@@ -139,15 +139,15 @@
 
         assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
 
-        List<Long> updatedHandles = new ArrayList<>(Arrays.asList(1L, 2L, 3L));
         ArgumentCaptor<CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback> callBack =
                 ArgumentCaptor.forClass(
                         CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback.class);
-        when(mMockCarTrustAgentEnrollmentManager.getEnrollmentHandlesForUser(
-                mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(updatedHandles);
+        when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+                mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(mUpdatedDevices);
         verify(mMockCarTrustAgentEnrollmentManager).setEnrollmentCallback(callBack.capture());
 
-        callBack.getValue().onEscrowTokenActiveStateChanged(updatedHandles.get(0), true);
+        callBack.getValue().onEscrowTokenActiveStateChanged(mUpdatedDevices.get(0).getHandle(),
+                true);
 
         assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(3);
     }
@@ -157,9 +157,8 @@
         when(mLockPatternUtils.getKeyguardStoredPasswordQuality(
                 mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(
                 DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
-        List<Long> updatedHandles = new ArrayList<>();
-        when(mMockCarTrustAgentEnrollmentManager.getEnrollmentHandlesForUser(
-                mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(updatedHandles);
+        when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+                mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(new ArrayList<>());
 
         mController.refreshUi();
 
@@ -172,9 +171,8 @@
         when(mLockPatternUtils.getKeyguardStoredPasswordQuality(
                 mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(
                 DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
-        List<Long> updatedHandles = new ArrayList<>(Arrays.asList(1L, 2L, 3L));
-        when(mMockCarTrustAgentEnrollmentManager.getEnrollmentHandlesForUser(
-                mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(updatedHandles);
+        when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+                mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(mUpdatedDevices);
 
         mController.refreshUi();
 
@@ -200,9 +198,8 @@
         when(mLockPatternUtils.getKeyguardStoredPasswordQuality(
                 mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(
                 DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
-        List<Long> handles = new ArrayList<>(Arrays.asList(1L, 2L));
-        when(mMockCarTrustAgentEnrollmentManager.getEnrollmentHandlesForUser(
-                mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(handles);
+        when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+                mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(mDevices);
         mController.refreshUi();
         Preference p = mPreferenceGroup.getPreference(0);
 
@@ -219,16 +216,4 @@
         verify(mMockCarTrustAgentEnrollmentManager).removeEscrowToken(1,
                 mCarUserManagerHelper.getCurrentProcessUserId());
     }
-
-    @Test
-    public void onEscrowTokenRemoved_removeHandleFromSharedPreference() {
-        ArgumentCaptor<CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback> callBack =
-                ArgumentCaptor.forClass(
-                        CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback.class);
-        verify(mMockCarTrustAgentEnrollmentManager).setEnrollmentCallback(callBack.capture());
-
-        callBack.getValue().onEscrowTokenRemoved(1);
-
-        assertThat(mPrefs.getString("1", null)).isNull();
-    }
 }