summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/content/pm/IPackageManager.aidl2
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java11
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerShellCommand.java18
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 {