Merge "Fix setRecoverySecretTypes to not always set snapshot pending" into pi-dev
am: af13eeb110
Change-Id: Ibae3e0a4a9f8b2af534c44eb8a27b9d28a4177fc
This commit is contained in:
@@ -382,10 +382,26 @@ public class RecoverableKeyStoreManager {
|
||||
Preconditions.checkNotNull(secretTypes, "secretTypes is null");
|
||||
int userId = UserHandle.getCallingUserId();
|
||||
int uid = Binder.getCallingUid();
|
||||
long updatedRows = mDatabase.setRecoverySecretTypes(userId, uid, secretTypes);
|
||||
if (updatedRows > 0) {
|
||||
mDatabase.setShouldCreateSnapshot(userId, uid, true);
|
||||
|
||||
int[] currentSecretTypes = mDatabase.getRecoverySecretTypes(userId, uid);
|
||||
if (Arrays.equals(secretTypes, currentSecretTypes)) {
|
||||
Log.v(TAG, "Not updating secret types - same as old value.");
|
||||
return;
|
||||
}
|
||||
|
||||
long updatedRows = mDatabase.setRecoverySecretTypes(userId, uid, secretTypes);
|
||||
if (updatedRows < 1) {
|
||||
throw new ServiceSpecificException(ERROR_SERVICE_INTERNAL_ERROR,
|
||||
"Database error trying to set secret types.");
|
||||
}
|
||||
|
||||
if (currentSecretTypes.length == 0) {
|
||||
Log.i(TAG, "Initialized secret types.");
|
||||
return;
|
||||
}
|
||||
|
||||
Log.i(TAG, "Updated secret types. Snapshot pending.");
|
||||
mDatabase.setShouldCreateSnapshot(userId, uid, true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -879,7 +879,7 @@ public class RecoverableKeyStoreManagerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setRecoverySecretTypes() throws Exception {
|
||||
public void setRecoverySecretTypes_updatesSecretTypes() throws Exception {
|
||||
int[] types1 = new int[]{11, 2000};
|
||||
int[] types2 = new int[]{1, 2, 3};
|
||||
int[] types3 = new int[]{};
|
||||
@@ -897,6 +897,41 @@ public class RecoverableKeyStoreManagerTest {
|
||||
types3);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setRecoverySecretTypes_doesNotSetSnapshotPendingIfIniting() throws Exception {
|
||||
int uid = Binder.getCallingUid();
|
||||
int userId = UserHandle.getCallingUserId();
|
||||
int[] secretTypes = new int[] { 101 };
|
||||
|
||||
mRecoverableKeyStoreManager.setRecoverySecretTypes(secretTypes);
|
||||
|
||||
assertThat(mRecoverableKeyStoreDb.getShouldCreateSnapshot(userId, uid)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setRecoverySecretTypes_doesNotSetSnapshotPendingIfSettingSameValue()
|
||||
throws Exception {
|
||||
int uid = Binder.getCallingUid();
|
||||
int userId = UserHandle.getCallingUserId();
|
||||
int[] secretTypes = new int[] { 101 };
|
||||
|
||||
mRecoverableKeyStoreManager.setRecoverySecretTypes(secretTypes);
|
||||
mRecoverableKeyStoreManager.setRecoverySecretTypes(secretTypes);
|
||||
|
||||
assertThat(mRecoverableKeyStoreDb.getShouldCreateSnapshot(userId, uid)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setRecoverySecretTypes_setsSnapshotPendingIfUpdatingValue() throws Exception {
|
||||
int uid = Binder.getCallingUid();
|
||||
int userId = UserHandle.getCallingUserId();
|
||||
|
||||
mRecoverableKeyStoreManager.setRecoverySecretTypes(new int[] { 101 });
|
||||
mRecoverableKeyStoreManager.setRecoverySecretTypes(new int[] { 102 });
|
||||
|
||||
assertThat(mRecoverableKeyStoreDb.getShouldCreateSnapshot(userId, uid)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setRecoverySecretTypes_throwsIfNullTypes() throws Exception {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user