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:
@@ -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);
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user