Merge "Internal version of isChangeEnabled." into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
6bf0b87946
@@ -102,6 +102,13 @@ public class PlatformCompat extends IPlatformCompat.Stub {
|
|||||||
@Override
|
@Override
|
||||||
public boolean isChangeEnabled(long changeId, ApplicationInfo appInfo) {
|
public boolean isChangeEnabled(long changeId, ApplicationInfo appInfo) {
|
||||||
checkCompatChangeReadAndLogPermission();
|
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)) {
|
if (mCompatConfig.isChangeEnabled(changeId, appInfo)) {
|
||||||
reportChange(changeId, appInfo.uid,
|
reportChange(changeId, appInfo.uid,
|
||||||
ChangeReporter.STATE_ENABLED);
|
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.ParsedIntentInfo;
|
||||||
import android.content.pm.parsing.component.ParsedMainComponent;
|
import android.content.pm.parsing.component.ParsedMainComponent;
|
||||||
import android.content.pm.parsing.component.ParsedProvider;
|
import android.content.pm.parsing.component.ParsedProvider;
|
||||||
import android.os.Binder;
|
|
||||||
import android.os.Process;
|
import android.os.Process;
|
||||||
import android.os.Trace;
|
import android.os.Trace;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
@@ -239,20 +238,13 @@ public class AppsFilter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateEnabledState(AndroidPackage pkg) {
|
private void updateEnabledState(AndroidPackage pkg) {
|
||||||
final long token = Binder.clearCallingIdentity();
|
// TODO(b/135203078): Do not use toAppInfo
|
||||||
try {
|
final boolean enabled = mInjector.getCompatibility().isChangeEnabledInternal(
|
||||||
// TODO(b/135203078): Do not use toAppInfo
|
PackageManager.FILTER_APPLICATION_QUERY, pkg.toAppInfoWithoutState());
|
||||||
final boolean enabled =
|
if (enabled) {
|
||||||
mInjector.getCompatibility().isChangeEnabled(
|
mDisabledPackages.remove(pkg.getPackageName());
|
||||||
PackageManager.FILTER_APPLICATION_QUERY,
|
} else {
|
||||||
pkg.toAppInfoWithoutState());
|
mDisabledPackages.add(pkg.getPackageName());
|
||||||
if (enabled) {
|
|
||||||
mDisabledPackages.remove(pkg.getPackageName());
|
|
||||||
} else {
|
|
||||||
mDisabledPackages.add(pkg.getPackageName());
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
Binder.restoreCallingIdentity(token);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -349,7 +349,8 @@ public final class SELinuxMMAC {
|
|||||||
if ((sharedUserSetting != null) && (sharedUserSetting.packages.size() != 0)) {
|
if ((sharedUserSetting != null) && (sharedUserSetting.packages.size() != 0)) {
|
||||||
return sharedUserSetting.seInfoTargetSdkVersion;
|
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;
|
return android.os.Build.VERSION_CODES.R;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ public class SELinuxMMACTest {
|
|||||||
@Test
|
@Test
|
||||||
public void getSeInfoOptInToLatest() {
|
public void getSeInfoOptInToLatest() {
|
||||||
AndroidPackage pkg = makePackage(Build.VERSION_CODES.P);
|
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()))))
|
argThat(argument -> argument.packageName.equals(pkg.getPackageName()))))
|
||||||
.thenReturn(true);
|
.thenReturn(true);
|
||||||
assertThat(SELinuxMMAC.getSeInfo(pkg, null, mMockCompatibility),
|
assertThat(SELinuxMMAC.getSeInfo(pkg, null, mMockCompatibility),
|
||||||
@@ -62,7 +62,7 @@ public class SELinuxMMACTest {
|
|||||||
@Test
|
@Test
|
||||||
public void getSeInfoNoOptIn() {
|
public void getSeInfoNoOptIn() {
|
||||||
AndroidPackage pkg = makePackage(Build.VERSION_CODES.P);
|
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()))))
|
argThat(argument -> argument.packageName.equals(pkg.getPackageName()))))
|
||||||
.thenReturn(false);
|
.thenReturn(false);
|
||||||
assertThat(SELinuxMMAC.getSeInfo(pkg, null, mMockCompatibility),
|
assertThat(SELinuxMMAC.getSeInfo(pkg, null, mMockCompatibility),
|
||||||
@@ -72,7 +72,7 @@ public class SELinuxMMACTest {
|
|||||||
@Test
|
@Test
|
||||||
public void getSeInfoNoOptInButAlreadyR() {
|
public void getSeInfoNoOptInButAlreadyR() {
|
||||||
AndroidPackage pkg = makePackage(OPT_IN_VERSION);
|
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()))))
|
argThat(argument -> argument.packageName.equals(pkg.getPackageName()))))
|
||||||
.thenReturn(false);
|
.thenReturn(false);
|
||||||
assertThat(SELinuxMMAC.getSeInfo(pkg, null, mMockCompatibility),
|
assertThat(SELinuxMMAC.getSeInfo(pkg, null, mMockCompatibility),
|
||||||
|
|||||||
Reference in New Issue
Block a user