Merge "Take package snapshot before locking DomainVerificationService" into tm-dev am: 7e2cc98e30
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16991228 Change-Id: I112e724875d6295e486703fc6af74654a9c0a91a
This commit is contained in:
@@ -256,8 +256,8 @@ public class DomainVerificationService extends SystemService
|
|||||||
public DomainVerificationInfo getDomainVerificationInfo(@NonNull String packageName)
|
public DomainVerificationInfo getDomainVerificationInfo(@NonNull String packageName)
|
||||||
throws NameNotFoundException {
|
throws NameNotFoundException {
|
||||||
mEnforcer.assertApprovedQuerent(mConnection.getCallingUid(), mProxy);
|
mEnforcer.assertApprovedQuerent(mConnection.getCallingUid(), mProxy);
|
||||||
synchronized (mLock) {
|
|
||||||
final Computer snapshot = mConnection.snapshot();
|
final Computer snapshot = mConnection.snapshot();
|
||||||
|
synchronized (mLock) {
|
||||||
PackageStateInternal pkgSetting = snapshot.getPackageStateInternal(packageName);
|
PackageStateInternal pkgSetting = snapshot.getPackageStateInternal(packageName);
|
||||||
AndroidPackage pkg = pkgSetting == null ? null : pkgSetting.getPkg();
|
AndroidPackage pkg = pkgSetting == null ? null : pkgSetting.getPkg();
|
||||||
if (pkg == null) {
|
if (pkg == null) {
|
||||||
@@ -315,8 +315,8 @@ public class DomainVerificationService extends SystemService
|
|||||||
@NonNull Set<String> domains, int state)
|
@NonNull Set<String> domains, int state)
|
||||||
throws NameNotFoundException {
|
throws NameNotFoundException {
|
||||||
mEnforcer.assertApprovedVerifier(callingUid, mProxy);
|
mEnforcer.assertApprovedVerifier(callingUid, mProxy);
|
||||||
synchronized (mLock) {
|
|
||||||
final Computer snapshot = mConnection.snapshot();
|
final Computer snapshot = mConnection.snapshot();
|
||||||
|
synchronized (mLock) {
|
||||||
List<String> verifiedDomains = new ArrayList<>();
|
List<String> verifiedDomains = new ArrayList<>();
|
||||||
|
|
||||||
GetAttachedResult result = getAndValidateAttachedLocked(domainSetId, domains,
|
GetAttachedResult result = getAndValidateAttachedLocked(domainSetId, domains,
|
||||||
@@ -369,8 +369,8 @@ public class DomainVerificationService extends SystemService
|
|||||||
|
|
||||||
ArraySet<String> verifiedDomains = new ArraySet<>();
|
ArraySet<String> verifiedDomains = new ArraySet<>();
|
||||||
if (packageName == null) {
|
if (packageName == null) {
|
||||||
synchronized (mLock) {
|
|
||||||
final Computer snapshot = mConnection.snapshot();
|
final Computer snapshot = mConnection.snapshot();
|
||||||
|
synchronized (mLock) {
|
||||||
ArraySet<String> validDomains = new ArraySet<>();
|
ArraySet<String> validDomains = new ArraySet<>();
|
||||||
|
|
||||||
int size = mAttachedPkgStates.size();
|
int size = mAttachedPkgStates.size();
|
||||||
@@ -403,8 +403,8 @@ public class DomainVerificationService extends SystemService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
synchronized (mLock) {
|
|
||||||
final Computer snapshot = mConnection.snapshot();
|
final Computer snapshot = mConnection.snapshot();
|
||||||
|
synchronized (mLock) {
|
||||||
DomainVerificationPkgState pkgState = mAttachedPkgStates.get(packageName);
|
DomainVerificationPkgState pkgState = mAttachedPkgStates.get(packageName);
|
||||||
if (pkgState == null) {
|
if (pkgState == null) {
|
||||||
throw DomainVerificationUtils.throwPackageUnavailable(packageName);
|
throw DomainVerificationUtils.throwPackageUnavailable(packageName);
|
||||||
@@ -539,8 +539,8 @@ public class DomainVerificationService extends SystemService
|
|||||||
return DomainVerificationManager.ERROR_DOMAIN_SET_ID_INVALID;
|
return DomainVerificationManager.ERROR_DOMAIN_SET_ID_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized (mLock) {
|
|
||||||
final Computer snapshot = mConnection.snapshot();
|
final Computer snapshot = mConnection.snapshot();
|
||||||
|
synchronized (mLock) {
|
||||||
GetAttachedResult result = getAndValidateAttachedLocked(domainSetId, domains,
|
GetAttachedResult result = getAndValidateAttachedLocked(domainSetId, domains,
|
||||||
false /* forAutoVerify */, callingUid, userId, snapshot);
|
false /* forAutoVerify */, callingUid, userId, snapshot);
|
||||||
if (result.isError()) {
|
if (result.isError()) {
|
||||||
@@ -578,8 +578,8 @@ public class DomainVerificationService extends SystemService
|
|||||||
@NonNull String packageName, boolean enabled, @Nullable ArraySet<String> domains)
|
@NonNull String packageName, boolean enabled, @Nullable ArraySet<String> domains)
|
||||||
throws NameNotFoundException {
|
throws NameNotFoundException {
|
||||||
mEnforcer.assertInternal(mConnection.getCallingUid());
|
mEnforcer.assertInternal(mConnection.getCallingUid());
|
||||||
synchronized (mLock) {
|
|
||||||
final Computer snapshot = mConnection.snapshot();
|
final Computer snapshot = mConnection.snapshot();
|
||||||
|
synchronized (mLock) {
|
||||||
DomainVerificationPkgState pkgState = mAttachedPkgStates.get(packageName);
|
DomainVerificationPkgState pkgState = mAttachedPkgStates.get(packageName);
|
||||||
if (pkgState == null) {
|
if (pkgState == null) {
|
||||||
throw DomainVerificationUtils.throwPackageUnavailable(packageName);
|
throw DomainVerificationUtils.throwPackageUnavailable(packageName);
|
||||||
@@ -682,8 +682,8 @@ public class DomainVerificationService extends SystemService
|
|||||||
throw DomainVerificationUtils.throwPackageUnavailable(packageName);
|
throw DomainVerificationUtils.throwPackageUnavailable(packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized (mLock) {
|
|
||||||
final Computer snapshot = mConnection.snapshot();
|
final Computer snapshot = mConnection.snapshot();
|
||||||
|
synchronized (mLock) {
|
||||||
PackageStateInternal pkgSetting = snapshot.getPackageStateInternal(packageName);
|
PackageStateInternal pkgSetting = snapshot.getPackageStateInternal(packageName);
|
||||||
AndroidPackage pkg = pkgSetting == null ? null : pkgSetting.getPkg();
|
AndroidPackage pkg = pkgSetting == null ? null : pkgSetting.getPkg();
|
||||||
if (pkg == null) {
|
if (pkg == null) {
|
||||||
@@ -1179,8 +1179,8 @@ public class DomainVerificationService extends SystemService
|
|||||||
public void printOwnersForPackage(@NonNull IndentingPrintWriter writer,
|
public void printOwnersForPackage(@NonNull IndentingPrintWriter writer,
|
||||||
@Nullable String packageName, @Nullable @UserIdInt Integer userId)
|
@Nullable String packageName, @Nullable @UserIdInt Integer userId)
|
||||||
throws NameNotFoundException {
|
throws NameNotFoundException {
|
||||||
synchronized (mLock) {
|
|
||||||
final Computer snapshot = mConnection.snapshot();
|
final Computer snapshot = mConnection.snapshot();
|
||||||
|
synchronized (mLock) {
|
||||||
if (packageName == null) {
|
if (packageName == null) {
|
||||||
int size = mAttachedPkgStates.size();
|
int size = mAttachedPkgStates.size();
|
||||||
for (int index = 0; index < size; index++) {
|
for (int index = 0; index < size; index++) {
|
||||||
@@ -1227,8 +1227,8 @@ public class DomainVerificationService extends SystemService
|
|||||||
@Override
|
@Override
|
||||||
public void printOwnersForDomains(@NonNull IndentingPrintWriter writer,
|
public void printOwnersForDomains(@NonNull IndentingPrintWriter writer,
|
||||||
@NonNull List<String> domains, @Nullable @UserIdInt Integer userId) {
|
@NonNull List<String> domains, @Nullable @UserIdInt Integer userId) {
|
||||||
synchronized (mLock) {
|
|
||||||
final Computer snapshot = mConnection.snapshot();
|
final Computer snapshot = mConnection.snapshot();
|
||||||
|
synchronized (mLock) {
|
||||||
int size = domains.size();
|
int size = domains.size();
|
||||||
for (int index = 0; index < size; index++) {
|
for (int index = 0; index < size; index++) {
|
||||||
printOwnersForDomain(writer, domains.get(index), userId, snapshot);
|
printOwnersForDomain(writer, domains.get(index), userId, snapshot);
|
||||||
@@ -1403,8 +1403,8 @@ public class DomainVerificationService extends SystemService
|
|||||||
@Override
|
@Override
|
||||||
public void clearDomainVerificationState(@Nullable List<String> packageNames) {
|
public void clearDomainVerificationState(@Nullable List<String> packageNames) {
|
||||||
mEnforcer.assertInternal(mConnection.getCallingUid());
|
mEnforcer.assertInternal(mConnection.getCallingUid());
|
||||||
synchronized (mLock) {
|
|
||||||
final Computer snapshot = mConnection.snapshot();
|
final Computer snapshot = mConnection.snapshot();
|
||||||
|
synchronized (mLock) {
|
||||||
if (packageNames == null) {
|
if (packageNames == null) {
|
||||||
int size = mAttachedPkgStates.size();
|
int size = mAttachedPkgStates.size();
|
||||||
for (int index = 0; index < size; index++) {
|
for (int index = 0; index < size; index++) {
|
||||||
|
|||||||
Reference in New Issue
Block a user