summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/content/pm/verify/pkg/IVerificationSessionCallback.aidl34
-rw-r--r--core/java/android/content/pm/verify/pkg/IVerificationSessionInterface.aidl11
-rw-r--r--core/java/android/content/pm/verify/pkg/VerificationSession.java14
-rw-r--r--core/tests/coretests/src/android/content/pm/verify/VerificationSessionTest.java14
-rw-r--r--core/tests/coretests/src/android/content/pm/verify/VerifierServiceTest.java4
-rw-r--r--services/core/java/com/android/server/pm/verify/pkg/VerifierController.java21
6 files changed, 25 insertions, 73 deletions
diff --git a/core/java/android/content/pm/verify/pkg/IVerificationSessionCallback.aidl b/core/java/android/content/pm/verify/pkg/IVerificationSessionCallback.aidl
deleted file mode 100644
index 38a7956603ae..000000000000
--- a/core/java/android/content/pm/verify/pkg/IVerificationSessionCallback.aidl
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.content.pm.verify.pkg;
-
-import android.content.pm.verify.pkg.VerificationStatus;
-import android.os.PersistableBundle;
-
-/**
- * Oneway interface that allows the verifier to send response or verification results back to
- * the system.
- * @hide
- */
-oneway interface IVerificationSessionCallback {
- @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT)")
- void reportVerificationIncomplete(int verificationId, int reason);
- @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT)")
- void reportVerificationComplete(int verificationId, in VerificationStatus status);
- @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT)")
- void reportVerificationCompleteWithExtensionResponse(int verificationId, in VerificationStatus status, in PersistableBundle response);
-}
diff --git a/core/java/android/content/pm/verify/pkg/IVerificationSessionInterface.aidl b/core/java/android/content/pm/verify/pkg/IVerificationSessionInterface.aidl
index 036c1e69cb0d..66caf2d0fec0 100644
--- a/core/java/android/content/pm/verify/pkg/IVerificationSessionInterface.aidl
+++ b/core/java/android/content/pm/verify/pkg/IVerificationSessionInterface.aidl
@@ -16,8 +16,11 @@
package android.content.pm.verify.pkg;
+import android.content.pm.verify.pkg.VerificationStatus;
+import android.os.PersistableBundle;
+
/**
- * Non-oneway interface that allows the verifier to retrieve information from the system.
+ * Non-oneway interface that allows the verifier to communicate with the system.
* @hide
*/
interface IVerificationSessionInterface {
@@ -27,4 +30,10 @@ interface IVerificationSessionInterface {
long extendTimeRemaining(int verificationId, long additionalMs);
@JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT)")
boolean setVerificationPolicy(int verificationId, int policy);
+ @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT)")
+ void reportVerificationIncomplete(int verificationId, int reason);
+ @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT)")
+ void reportVerificationComplete(int verificationId, in VerificationStatus status);
+ @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT)")
+ void reportVerificationCompleteWithExtensionResponse(int verificationId, in VerificationStatus status, in PersistableBundle response);
} \ No newline at end of file
diff --git a/core/java/android/content/pm/verify/pkg/VerificationSession.java b/core/java/android/content/pm/verify/pkg/VerificationSession.java
index f393be829aed..4ade21198f37 100644
--- a/core/java/android/content/pm/verify/pkg/VerificationSession.java
+++ b/core/java/android/content/pm/verify/pkg/VerificationSession.java
@@ -79,8 +79,6 @@ public final class VerificationSession implements Parcelable {
private final PersistableBundle mExtensionParams;
@NonNull
private final IVerificationSessionInterface mSession;
- @NonNull
- private final IVerificationSessionCallback mCallback;
/**
* The current policy that is active for the session. It might not be
* the same as the original policy that was initially assigned for this verification session,
@@ -100,8 +98,7 @@ public final class VerificationSession implements Parcelable {
@NonNull List<SharedLibraryInfo> declaredLibraries,
@NonNull PersistableBundle extensionParams,
@PackageInstaller.VerificationPolicy int defaultPolicy,
- @NonNull IVerificationSessionInterface session,
- @NonNull IVerificationSessionCallback callback) {
+ @NonNull IVerificationSessionInterface session) {
mId = id;
mInstallSessionId = installSessionId;
mPackageName = packageName;
@@ -111,7 +108,6 @@ public final class VerificationSession implements Parcelable {
mExtensionParams = extensionParams;
mVerificationPolicy = defaultPolicy;
mSession = session;
- mCallback = callback;
}
/**
@@ -236,7 +232,7 @@ public final class VerificationSession implements Parcelable {
@RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT)
public void reportVerificationIncomplete(@VerificationIncompleteReason int reason) {
try {
- mCallback.reportVerificationIncomplete(mId, reason);
+ mSession.reportVerificationIncomplete(mId, reason);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -250,7 +246,7 @@ public final class VerificationSession implements Parcelable {
@RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT)
public void reportVerificationComplete(@NonNull VerificationStatus status) {
try {
- mCallback.reportVerificationComplete(mId, status);
+ mSession.reportVerificationComplete(mId, status);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -265,7 +261,7 @@ public final class VerificationSession implements Parcelable {
public void reportVerificationComplete(@NonNull VerificationStatus status,
@NonNull PersistableBundle response) {
try {
- mCallback.reportVerificationCompleteWithExtensionResponse(mId, status, response);
+ mSession.reportVerificationCompleteWithExtensionResponse(mId, status, response);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -281,7 +277,6 @@ public final class VerificationSession implements Parcelable {
mExtensionParams = in.readPersistableBundle(getClass().getClassLoader());
mVerificationPolicy = in.readInt();
mSession = IVerificationSessionInterface.Stub.asInterface(in.readStrongBinder());
- mCallback = IVerificationSessionCallback.Stub.asInterface(in.readStrongBinder());
}
@Override
@@ -300,7 +295,6 @@ public final class VerificationSession implements Parcelable {
dest.writePersistableBundle(mExtensionParams);
dest.writeInt(mVerificationPolicy);
dest.writeStrongBinder(mSession.asBinder());
- dest.writeStrongBinder(mCallback.asBinder());
}
@NonNull
diff --git a/core/tests/coretests/src/android/content/pm/verify/VerificationSessionTest.java b/core/tests/coretests/src/android/content/pm/verify/VerificationSessionTest.java
index 80255c5f6600..90ae306952fe 100644
--- a/core/tests/coretests/src/android/content/pm/verify/VerificationSessionTest.java
+++ b/core/tests/coretests/src/android/content/pm/verify/VerificationSessionTest.java
@@ -33,7 +33,6 @@ import static org.mockito.Mockito.when;
import android.content.pm.SharedLibraryInfo;
import android.content.pm.SigningInfo;
import android.content.pm.VersionedPackage;
-import android.content.pm.verify.pkg.IVerificationSessionCallback;
import android.content.pm.verify.pkg.IVerificationSessionInterface;
import android.content.pm.verify.pkg.VerificationSession;
import android.content.pm.verify.pkg.VerificationStatus;
@@ -84,8 +83,6 @@ public class VerificationSessionTest {
private final PersistableBundle mTestExtensionParams = new PersistableBundle();
@Mock
private IVerificationSessionInterface mTestSessionInterface;
- @Mock
- private IVerificationSessionCallback mTestCallback;
private VerificationSession mTestSession;
@Before
@@ -96,7 +93,7 @@ public class VerificationSessionTest {
mTestExtensionParams.putString(TEST_KEY, TEST_VALUE);
mTestSession = new VerificationSession(TEST_ID, TEST_INSTALL_SESSION_ID,
TEST_PACKAGE_NAME, TEST_PACKAGE_URI, TEST_SIGNING_INFO, mTestDeclaredLibraries,
- mTestExtensionParams, TEST_POLICY, mTestSessionInterface, mTestCallback);
+ mTestExtensionParams, TEST_POLICY, mTestSessionInterface);
}
@Test
@@ -138,25 +135,22 @@ public class VerificationSessionTest {
assertThat(mTestSession.extendTimeRemaining(TEST_EXTEND_TIME)).isEqualTo(TEST_EXTEND_TIME);
verify(mTestSessionInterface, times(1)).extendTimeRemaining(
eq(TEST_ID), eq(TEST_EXTEND_TIME));
- }
- @Test
- public void testCallback() throws Exception {
PersistableBundle response = new PersistableBundle();
response.putString("test key", "test value");
final VerificationStatus status =
new VerificationStatus.Builder().setVerified(true).build();
mTestSession.reportVerificationComplete(status);
- verify(mTestCallback, times(1)).reportVerificationComplete(
+ verify(mTestSessionInterface, times(1)).reportVerificationComplete(
eq(TEST_ID), eq(status));
mTestSession.reportVerificationComplete(status, response);
- verify(mTestCallback, times(1))
+ verify(mTestSessionInterface, times(1))
.reportVerificationCompleteWithExtensionResponse(
eq(TEST_ID), eq(status), eq(response));
final int reason = VerificationSession.VERIFICATION_INCOMPLETE_UNKNOWN;
mTestSession.reportVerificationIncomplete(reason);
- verify(mTestCallback, times(1)).reportVerificationIncomplete(
+ verify(mTestSessionInterface, times(1)).reportVerificationIncomplete(
eq(TEST_ID), eq(reason));
}
diff --git a/core/tests/coretests/src/android/content/pm/verify/VerifierServiceTest.java b/core/tests/coretests/src/android/content/pm/verify/VerifierServiceTest.java
index 7807c8a94530..56fc66a286c3 100644
--- a/core/tests/coretests/src/android/content/pm/verify/VerifierServiceTest.java
+++ b/core/tests/coretests/src/android/content/pm/verify/VerifierServiceTest.java
@@ -27,6 +27,7 @@ import static org.mockito.Mockito.when;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.SigningInfo;
+import android.content.pm.verify.pkg.IVerificationSessionInterface;
import android.content.pm.verify.pkg.IVerifierService;
import android.content.pm.verify.pkg.VerificationSession;
import android.content.pm.verify.pkg.VerifierService;
@@ -63,7 +64,8 @@ public class VerifierServiceTest {
mService = Mockito.mock(VerifierService.class, Answers.CALLS_REAL_METHODS);
mSession = new VerificationSession(TEST_ID, TEST_INSTALL_SESSION_ID,
TEST_PACKAGE_NAME, TEST_PACKAGE_URI, TEST_SIGNING_INFO,
- new ArrayList<>(), new PersistableBundle(), TEST_POLICY, null, null);
+ new ArrayList<>(), new PersistableBundle(), TEST_POLICY, Mockito.mock(
+ IVerificationSessionInterface.class));
}
@Test
diff --git a/services/core/java/com/android/server/pm/verify/pkg/VerifierController.java b/services/core/java/com/android/server/pm/verify/pkg/VerifierController.java
index b7cc7ccead89..0dd1f4c77246 100644
--- a/services/core/java/com/android/server/pm/verify/pkg/VerifierController.java
+++ b/services/core/java/com/android/server/pm/verify/pkg/VerifierController.java
@@ -35,7 +35,6 @@ import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.SharedLibraryInfo;
import android.content.pm.SigningInfo;
-import android.content.pm.verify.pkg.IVerificationSessionCallback;
import android.content.pm.verify.pkg.IVerificationSessionInterface;
import android.content.pm.verify.pkg.IVerifierService;
import android.content.pm.verify.pkg.VerificationSession;
@@ -45,7 +44,6 @@ import android.os.Build;
import android.os.Handler;
import android.os.PersistableBundle;
import android.os.Process;
-import android.os.RemoteException;
import android.os.UserHandle;
import android.provider.DeviceConfig;
import android.util.Pair;
@@ -307,8 +305,7 @@ public class VerifierController {
/* id= */ verificationId,
/* installSessionId= */ installationSessionId,
packageName, stagedPackageUri, signingInfo, declaredLibraries, extensionParams,
- verificationPolicy, new VerificationSessionInterface(callback),
- new VerificationSessionCallback(callback));
+ verificationPolicy, new VerificationSessionInterface(callback));
AndroidFuture<Void> unusedFuture = mRemoteService.post(service -> {
if (!retry) {
if (DEBUG) {
@@ -468,17 +465,9 @@ public class VerifierController {
}
return mCallback.setVerificationPolicy(policy);
}
- }
-
- private class VerificationSessionCallback extends IVerificationSessionCallback.Stub {
- private final PackageInstallerSession.VerifierCallback mCallback;
-
- VerificationSessionCallback(PackageInstallerSession.VerifierCallback callback) {
- mCallback = callback;
- }
@Override
- public void reportVerificationIncomplete(int id, int reason) throws RemoteException {
+ public void reportVerificationIncomplete(int id, int reason) {
checkCallerPermission();
final VerificationStatusTracker tracker;
synchronized (mVerificationStatus) {
@@ -494,16 +483,14 @@ public class VerifierController {
}
@Override
- public void reportVerificationComplete(int id, VerificationStatus verificationStatus)
- throws RemoteException {
+ public void reportVerificationComplete(int id, VerificationStatus verificationStatus) {
reportVerificationCompleteWithExtensionResponse(id, verificationStatus,
/* extensionResponse= */ null);
}
@Override
public void reportVerificationCompleteWithExtensionResponse(int id,
- VerificationStatus verificationStatus, PersistableBundle extensionResponse)
- throws RemoteException {
+ VerificationStatus verificationStatus, PersistableBundle extensionResponse) {
checkCallerPermission();
final VerificationStatusTracker tracker;
synchronized (mVerificationStatus) {