diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2020-06-12 18:54:22 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-06-12 18:54:22 +0000 |
commit | 6bf0b87946288763dd0d455720bda726ee707e5c (patch) | |
tree | 4b24991fe1d81315741510aa903440095412c547 | |
parent | 3800919656b6eda3bad44ef20678b8f3cced6f1e (diff) | |
parent | 6e3c563f071eb57a05981d40808c820d347c20f1 (diff) |
Merge "Internal version of isChangeEnabled." into rvc-dev
4 files changed, 19 insertions, 19 deletions
diff --git a/services/core/java/com/android/server/compat/PlatformCompat.java b/services/core/java/com/android/server/compat/PlatformCompat.java index 8ed864c71625..d7e9499cf8db 100644 --- a/services/core/java/com/android/server/compat/PlatformCompat.java +++ b/services/core/java/com/android/server/compat/PlatformCompat.java @@ -102,6 +102,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); diff --git a/services/core/java/com/android/server/pm/AppsFilter.java b/services/core/java/com/android/server/pm/AppsFilter.java index 4b6ee71803a7..5b9db64dd9b1 100644 --- a/services/core/java/com/android/server/pm/AppsFilter.java +++ b/services/core/java/com/android/server/pm/AppsFilter.java @@ -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()); } } diff --git a/services/core/java/com/android/server/pm/SELinuxMMAC.java b/services/core/java/com/android/server/pm/SELinuxMMAC.java index 67e1994eac9a..fdd9636ae7b2 100644 --- a/services/core/java/com/android/server/pm/SELinuxMMAC.java +++ b/services/core/java/com/android/server/pm/SELinuxMMAC.java @@ -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; } diff --git a/services/tests/servicestests/src/com/android/server/pm/SELinuxMMACTest.java b/services/tests/servicestests/src/com/android/server/pm/SELinuxMMACTest.java index efc1c057d8f4..a550b27a62a2 100644 --- a/services/tests/servicestests/src/com/android/server/pm/SELinuxMMACTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/SELinuxMMACTest.java @@ -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), |