Merge "Internal version of isChangeEnabled." into rvc-dev am: 6bf0b87946

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11810848

Change-Id: I605e847f2ae78d41f64207de6d03c97d8b103424
This commit is contained in:
TreeHugger Robot
2020-06-12 19:02:17 +00:00
committed by Automerger Merge Worker
4 changed files with 19 additions and 19 deletions

View File

@@ -103,6 +103,13 @@ public class PlatformCompat extends IPlatformCompat.Stub {
@Override
public boolean isChangeEnabled(long changeId, ApplicationInfo appInfo) {
checkCompatChangeReadAndLogPermission();
return isChangeEnabledInternal(changeId, appInfo);
}
/**
* Internal version of the above method. Does not perform costly permission check.
*/
public boolean isChangeEnabledInternal(long changeId, ApplicationInfo appInfo) {
if (mCompatConfig.isChangeEnabled(changeId, appInfo)) {
reportChange(changeId, appInfo.uid,
ChangeReporter.STATE_ENABLED);

View File

@@ -32,7 +32,6 @@ import android.content.pm.parsing.component.ParsedInstrumentation;
import android.content.pm.parsing.component.ParsedIntentInfo;
import android.content.pm.parsing.component.ParsedMainComponent;
import android.content.pm.parsing.component.ParsedProvider;
import android.os.Binder;
import android.os.Process;
import android.os.Trace;
import android.os.UserHandle;
@@ -239,20 +238,13 @@ public class AppsFilter {
}
private void updateEnabledState(AndroidPackage pkg) {
final long token = Binder.clearCallingIdentity();
try {
// TODO(b/135203078): Do not use toAppInfo
final boolean enabled =
mInjector.getCompatibility().isChangeEnabled(
PackageManager.FILTER_APPLICATION_QUERY,
pkg.toAppInfoWithoutState());
if (enabled) {
mDisabledPackages.remove(pkg.getPackageName());
} else {
mDisabledPackages.add(pkg.getPackageName());
}
} finally {
Binder.restoreCallingIdentity(token);
// TODO(b/135203078): Do not use toAppInfo
final boolean enabled = mInjector.getCompatibility().isChangeEnabledInternal(
PackageManager.FILTER_APPLICATION_QUERY, pkg.toAppInfoWithoutState());
if (enabled) {
mDisabledPackages.remove(pkg.getPackageName());
} else {
mDisabledPackages.add(pkg.getPackageName());
}
}

View File

@@ -349,7 +349,8 @@ public final class SELinuxMMAC {
if ((sharedUserSetting != null) && (sharedUserSetting.packages.size() != 0)) {
return sharedUserSetting.seInfoTargetSdkVersion;
}
if (compatibility.isChangeEnabled(SELINUX_LATEST_CHANGES, pkg.toAppInfoWithoutState())) {
if (compatibility.isChangeEnabledInternal(SELINUX_LATEST_CHANGES,
pkg.toAppInfoWithoutState())) {
return android.os.Build.VERSION_CODES.R;
}

View File

@@ -52,7 +52,7 @@ public class SELinuxMMACTest {
@Test
public void getSeInfoOptInToLatest() {
AndroidPackage pkg = makePackage(Build.VERSION_CODES.P);
when(mMockCompatibility.isChangeEnabled(eq(SELinuxMMAC.SELINUX_LATEST_CHANGES),
when(mMockCompatibility.isChangeEnabledInternal(eq(SELinuxMMAC.SELINUX_LATEST_CHANGES),
argThat(argument -> argument.packageName.equals(pkg.getPackageName()))))
.thenReturn(true);
assertThat(SELinuxMMAC.getSeInfo(pkg, null, mMockCompatibility),
@@ -62,7 +62,7 @@ public class SELinuxMMACTest {
@Test
public void getSeInfoNoOptIn() {
AndroidPackage pkg = makePackage(Build.VERSION_CODES.P);
when(mMockCompatibility.isChangeEnabled(eq(SELinuxMMAC.SELINUX_LATEST_CHANGES),
when(mMockCompatibility.isChangeEnabledInternal(eq(SELinuxMMAC.SELINUX_LATEST_CHANGES),
argThat(argument -> argument.packageName.equals(pkg.getPackageName()))))
.thenReturn(false);
assertThat(SELinuxMMAC.getSeInfo(pkg, null, mMockCompatibility),
@@ -72,7 +72,7 @@ public class SELinuxMMACTest {
@Test
public void getSeInfoNoOptInButAlreadyR() {
AndroidPackage pkg = makePackage(OPT_IN_VERSION);
when(mMockCompatibility.isChangeEnabled(eq(SELinuxMMAC.SELINUX_LATEST_CHANGES),
when(mMockCompatibility.isChangeEnabledInternal(eq(SELinuxMMAC.SELINUX_LATEST_CHANGES),
argThat(argument -> argument.packageName.equals(pkg.getPackageName()))))
.thenReturn(false);
assertThat(SELinuxMMAC.getSeInfo(pkg, null, mMockCompatibility),