Move more file handling into LockSettingsStorage

Strengthens the guarantee of only one kind of lock type existing at one
time by clearing all of the relevant files out closer to time of write.

Change-Id: I141103dab5d7d4bc80b05a22b8566326d1c9e7e1
This commit is contained in:
Robin Lee
2015-03-10 12:34:28 +00:00
parent f3ece36535
commit 68e4ba4dd0

View File

@@ -238,12 +238,21 @@ class LockSettingsStorage {
public void writePatternHash(byte[] hash, int userId) {
writeFile(getLockPatternFilename(userId), hash);
clearPasswordHash(userId);
}
private void clearPatternHash(int userId) {
writeFile(getLockPatternFilename(userId), null);
}
public void writePasswordHash(byte[] hash, int userId) {
writeFile(getLockPasswordFilename(userId), hash);
clearPatternHash(userId);
}
private void clearPasswordHash(int userId) {
writeFile(getLockPasswordFilename(userId), null);
}
@VisibleForTesting
String getLockPatternFilename(int userId) {
@@ -279,16 +288,15 @@ class LockSettingsStorage {
return userId;
}
public void removeUser(int userId) {
SQLiteDatabase db = mOpenHelper.getWritableDatabase();
final UserManager um = (UserManager) mContext.getSystemService(USER_SERVICE);
final UserInfo parentInfo = um.getProfileParent(userId);
synchronized (mFileWriteLock) {
if (parentInfo == null) {
// This user owns its lock settings files - safe to delete them
if (parentInfo == null) {
// This user owns its lock settings files - safe to delete them
synchronized (mFileWriteLock) {
String name = getLockPasswordFilename(userId);
File file = new File(name);
if (file.exists()) {