diff options
3 files changed, 31 insertions, 0 deletions
diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl index 08f185366c49..bff90f1d2298 100644 --- a/core/java/android/content/pm/IPackageManager.aidl +++ b/core/java/android/content/pm/IPackageManager.aidl @@ -846,4 +846,6 @@ interface IPackageManager { @EnforcePermission("GET_APP_METADATA") int getAppMetadataSource(String packageName, int userId); + + ComponentName getDomainVerificationAgent(); } diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 5b168c4dcc10..afd4fb17dff5 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -6484,6 +6484,17 @@ public class PackageManagerService implements PackageSender, TestUtilityService } @Override + @Nullable + public ComponentName getDomainVerificationAgent() { + final int callerUid = Binder.getCallingUid(); + if (!PackageManagerServiceUtils.isRootOrShell(callerUid)) { + throw new SecurityException("Not allowed to query domain verification agent"); + } + final Computer snapshot = snapshotComputer(); + return getDomainVerificationAgentComponentNameLPr(snapshot); + } + + @Override public boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException { try { diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java index e329f09b0c32..89589ed30f5a 100644 --- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java +++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java @@ -396,6 +396,8 @@ class PackageManagerShellCommand extends ShellCommand { return runArchive(); case "request-unarchive": return runUnarchive(); + case "get-domain-verification-agent": + return runGetDomainVerificationAgent(); default: { if (ART_SERVICE_COMMANDS.contains(cmd)) { if (DexOptHelper.useArtService()) { @@ -4794,6 +4796,19 @@ class PackageManagerShellCommand extends ShellCommand { return 0; } + private int runGetDomainVerificationAgent() throws RemoteException { + final PrintWriter pw = getOutPrintWriter(); + try { + final ComponentName domainVerificationAgent = mInterface.getDomainVerificationAgent(); + pw.println(domainVerificationAgent == null + ? "No Domain Verifier available!" : domainVerificationAgent.toString()); + } catch (Exception e) { + pw.println("Failure [" + e.getMessage() + "]"); + return 1; + } + return 0; + } + @Override public void onHelp() { final PrintWriter pw = getOutPrintWriter(); @@ -5194,6 +5209,9 @@ class PackageManagerShellCommand extends ShellCommand { pw.println(" to unarchive an app to the responsible installer. Options are:"); pw.println(" --user: request unarchival of the app from the given user."); pw.println(""); + pw.println(" get-domain-verification-agent"); + pw.println(" Displays the component name of the domain verification agent on device."); + pw.println(""); if (DexOptHelper.useArtService()) { printArtServiceHelp(); } else { |