Merge "Do not synchronize if not necessary"
This commit is contained in:
committed by
Android (Google) Code Review
commit
f81dc1cfbc
@@ -376,7 +376,7 @@ public class RoleUserState {
|
||||
|
||||
version = mVersion;
|
||||
packagesHash = mPackagesHash;
|
||||
roles = getRoleHolders();
|
||||
roles = snapshotRolesLocked();
|
||||
}
|
||||
|
||||
AtomicFile atomicFile = new AtomicFile(getFile(mUserId), "roles-" + mUserId);
|
||||
@@ -541,7 +541,7 @@ public class RoleUserState {
|
||||
|
||||
version = mVersion;
|
||||
packagesHash = mPackagesHash;
|
||||
roles = getRoleHolders();
|
||||
roles = snapshotRolesLocked();
|
||||
}
|
||||
|
||||
long fieldToken = dumpOutputStream.start(fieldName, fieldId);
|
||||
@@ -578,18 +578,23 @@ public class RoleUserState {
|
||||
@NonNull
|
||||
public ArrayMap<String, ArraySet<String>> getRoleHolders() {
|
||||
synchronized (mLock) {
|
||||
ArrayMap<String, ArraySet<String>> roles = new ArrayMap<>();
|
||||
for (int i = 0, size = CollectionUtils.size(mRoles); i < size; ++i) {
|
||||
String roleName = mRoles.keyAt(i);
|
||||
ArraySet<String> roleHolders = mRoles.valueAt(i);
|
||||
|
||||
roleHolders = new ArraySet<>(roleHolders);
|
||||
roles.put(roleName, roleHolders);
|
||||
}
|
||||
return roles;
|
||||
return snapshotRolesLocked();
|
||||
}
|
||||
}
|
||||
|
||||
@GuardedBy("mLock")
|
||||
private ArrayMap<String, ArraySet<String>> snapshotRolesLocked() {
|
||||
ArrayMap<String, ArraySet<String>> roles = new ArrayMap<>();
|
||||
for (int i = 0, size = CollectionUtils.size(mRoles); i < size; ++i) {
|
||||
String roleName = mRoles.keyAt(i);
|
||||
ArraySet<String> roleHolders = mRoles.valueAt(i);
|
||||
|
||||
roleHolders = new ArraySet<>(roleHolders);
|
||||
roles.put(roleName, roleHolders);
|
||||
}
|
||||
return roles;
|
||||
}
|
||||
|
||||
/**
|
||||
* Destroy this user state and delete the corresponding file. Any pending writes to the file
|
||||
* will be cancelled, and any future interaction with this state will throw an exception.
|
||||
|
||||
Reference in New Issue
Block a user