From a1c0dabb7a7487eae1e59eb70de098e17cb7c5a0 Mon Sep 17 00:00:00 2001 From: felipeal Date: Tue, 12 May 2020 17:32:23 -0700 Subject: [PATCH] Added test to check package whitelisting. Also changed report-system-user-package-whitelist-problems --critical-only to ignore errors on log mode. Test: atest UserManagerServiceTest Test: adb shell cmd user report-system-user-package-whitelist-problems --critical-only --mode 2 Fixes: 154112291 Change-Id: Ibe729ebd7720d62e5fec049bd95764309662e529 --- .../server/pm/UserSystemPackageInstaller.java | 6 +++++- .../server/pm/UserManagerServiceTest.java | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/pm/UserSystemPackageInstaller.java b/services/core/java/com/android/server/pm/UserSystemPackageInstaller.java index f8d039c349ff4..530c1158a2e02 100644 --- a/services/core/java/com/android/server/pm/UserSystemPackageInstaller.java +++ b/services/core/java/com/android/server/pm/UserSystemPackageInstaller.java @@ -344,7 +344,7 @@ class UserSystemPackageInstaller { */ @NonNull private List getPackagesWhitelistErrors(@PackageWhitelistMode int mode) { - if ((!isEnforceMode(mode) || isImplicitWhitelistMode(mode)) && !isLogMode(mode)) { + if ((!isEnforceMode(mode) || isImplicitWhitelistMode(mode))) { return Collections.emptyList(); } @@ -752,6 +752,10 @@ class UserSystemPackageInstaller { } else if (mode == USER_TYPE_PACKAGE_WHITELIST_MODE_DEVICE_DEFAULT) { mode = getDeviceDefaultWhitelistMode(); } + if (criticalOnly) { + // Flip-out log mode + mode &= ~USER_TYPE_PACKAGE_WHITELIST_MODE_LOG; + } Slog.v(TAG, "dumpPackageWhitelistProblems(): using mode " + modeToString(mode)); final List errors = getPackagesWhitelistErrors(mode); diff --git a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java index d1366144d33bf..6c1c019f504e3 100644 --- a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java @@ -22,10 +22,14 @@ import android.os.FileUtils; import android.os.Parcelable; import android.os.UserHandle; import android.os.UserManager; +import android.support.test.uiautomator.UiDevice; import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.SmallTest; +import android.text.TextUtils; import android.util.AtomicFile; +import androidx.test.InstrumentationRegistry; + import java.io.File; import java.io.IOException; import java.util.Arrays; @@ -74,6 +78,14 @@ public class UserManagerServiceTest extends AndroidTestCase { assertEquals(accountName, um.getUserAccount(tempUserId)); } + public void testUserSystemPackageWhitelist() throws Exception { + String cmd = "cmd user report-system-user-package-whitelist-problems --critical-only"; + final String result = runShellCommand(cmd); + if (!TextUtils.isEmpty(result)) { + fail("Command '" + cmd + " reported errors:\n" + result); + } + } + private Bundle createBundle() { Bundle result = new Bundle(); // Tests for 6 allowed types: Integer, Boolean, String, String[], Bundle and Parcelable[] @@ -118,4 +130,8 @@ public class UserManagerServiceTest extends AndroidTestCase { assertEquals(1, childBundle.getInt("bundle_int")); } + private static String runShellCommand(String cmd) throws Exception { + return UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) + .executeShellCommand(cmd); + } }