diff --git a/services/core/java/com/android/server/pm/verify/domain/proxy/DomainVerificationProxy.java b/services/core/java/com/android/server/pm/verify/domain/proxy/DomainVerificationProxy.java index 09abdd092648e..7333d2394b2f3 100644 --- a/services/core/java/com/android/server/pm/verify/domain/proxy/DomainVerificationProxy.java +++ b/services/core/java/com/android/server/pm/verify/domain/proxy/DomainVerificationProxy.java @@ -31,7 +31,6 @@ import com.android.server.pm.verify.domain.DomainVerificationMessageCodes; import java.util.Objects; import java.util.Set; -// TODO(b/170321181): Combine the proxy versions for supporting v1 and v2 at once public interface DomainVerificationProxy { String TAG = "DomainVerificationProxy"; @@ -81,8 +80,7 @@ public interface DomainVerificationProxy { return new DomainVerificationProxyUnavailable(); } - default void sendBroadcastForPackages(@NonNull Set packageNames) { - } + void sendBroadcastForPackages(@NonNull Set packageNames); /** * Runs a message on the caller's Handler as a result of {@link BaseConnection#schedule(int, @@ -94,18 +92,12 @@ public interface DomainVerificationProxy { * @param messageCode One of the values in {@link DomainVerificationMessageCodes}. * @param object Arbitrary object that was originally included. */ - default boolean runMessage(int messageCode, Object object) { - return false; - } + boolean runMessage(int messageCode, Object object); - default boolean isCallerVerifier(int callingUid) { - return false; - } + boolean isCallerVerifier(int callingUid); @Nullable - default ComponentName getComponentName() { - return null; - } + ComponentName getComponentName(); interface BaseConnection { diff --git a/services/core/java/com/android/server/pm/verify/domain/proxy/DomainVerificationProxyCombined.java b/services/core/java/com/android/server/pm/verify/domain/proxy/DomainVerificationProxyCombined.java index 8571c08699bd1..5732d6b168fbd 100644 --- a/services/core/java/com/android/server/pm/verify/domain/proxy/DomainVerificationProxyCombined.java +++ b/services/core/java/com/android/server/pm/verify/domain/proxy/DomainVerificationProxyCombined.java @@ -17,6 +17,7 @@ package com.android.server.pm.verify.domain.proxy; import android.annotation.NonNull; +import android.content.ComponentName; import java.util.Set; @@ -51,4 +52,10 @@ class DomainVerificationProxyCombined implements DomainVerificationProxy { public boolean isCallerVerifier(int callingUid) { return mProxyV2.isCallerVerifier(callingUid) || mProxyV1.isCallerVerifier(callingUid); } + + @NonNull + @Override + public ComponentName getComponentName() { + return mProxyV2.getComponentName(); + } } diff --git a/services/core/java/com/android/server/pm/verify/domain/proxy/DomainVerificationProxyUnavailable.java b/services/core/java/com/android/server/pm/verify/domain/proxy/DomainVerificationProxyUnavailable.java index bd77983256c5d..363f9697633c5 100644 --- a/services/core/java/com/android/server/pm/verify/domain/proxy/DomainVerificationProxyUnavailable.java +++ b/services/core/java/com/android/server/pm/verify/domain/proxy/DomainVerificationProxyUnavailable.java @@ -16,6 +16,32 @@ package com.android.server.pm.verify.domain.proxy; +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.content.ComponentName; + +import java.util.Set; + /** Stub implementation for when the verification agent is unavailable */ public class DomainVerificationProxyUnavailable implements DomainVerificationProxy { + + @Override + public void sendBroadcastForPackages(@NonNull Set packageNames) { + } + + @Override + public boolean runMessage(int messageCode, Object object) { + return false; + } + + @Override + public boolean isCallerVerifier(int callingUid) { + return false; + } + + @Nullable + @Override + public ComponentName getComponentName() { + return null; + } } diff --git a/services/core/java/com/android/server/pm/verify/domain/proxy/DomainVerificationProxyV1.java b/services/core/java/com/android/server/pm/verify/domain/proxy/DomainVerificationProxyV1.java index fa36683e4aff7..c8e46b62f6b05 100644 --- a/services/core/java/com/android/server/pm/verify/domain/proxy/DomainVerificationProxyV1.java +++ b/services/core/java/com/android/server/pm/verify/domain/proxy/DomainVerificationProxyV1.java @@ -298,6 +298,12 @@ public class DomainVerificationProxyV1 implements DomainVerificationProxy { return builder.toString(); } + @NonNull + @Override + public ComponentName getComponentName() { + return mVerifierComponent; + } + private static class Response { public final int callingUid; public final int verificationId; diff --git a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationProxyTest.kt b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationProxyTest.kt index a9b77ea6d95b6..0a54094b4b855 100644 --- a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationProxyTest.kt +++ b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationProxyTest.kt @@ -466,6 +466,44 @@ class DomainVerificationProxyTest { } } + @Test + fun nonNullComponentName() { + val connection = mockConnection() + DomainVerificationProxy.makeProxy( + componentTwo, + null, + context, + manager, + collector, + connection + ).run { + assertThat(componentName).isEqualTo(componentTwo) + } + + DomainVerificationProxy.makeProxy( + null, + componentThree, + context, + manager, + collector, + connection + ).run { + assertThat(componentName).isEqualTo(componentThree) + } + + DomainVerificationProxy.makeProxy( + componentTwo, + componentThree, + context, + manager, + collector, + connection + ).run { + // Higher version takes precedence + assertThat(componentName).isEqualTo(componentThree) + } + } + private fun mockConnection(block: Connection.() -> Unit = {}) = mockThrowOnUnmocked { whenever(isCallerPackage(TEST_CALLING_UID_ACCEPT, TEST_PKG_NAME_ONE)) { true }