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();
- }
}