diff options
author | 2024-10-30 21:45:00 +0000 | |
---|---|---|
committer | 2024-10-31 20:57:53 +0000 | |
commit | e97cf01874df6b8b1177e1cc8d062327614939ff (patch) | |
tree | fb30618f50eab48b16e1ac15a8e1fb0d526db048 | |
parent | 67167c3b4524e709fda6baa67a98612a0f4d2cad (diff) |
Add a dedicated error code for missing function ID
Flag: android.app.appfunctions.flags.enable_app_function_manager
Test: CTS
Bug: 375121362
Change-Id: I917df5c09090e549dade1c666e3d2ccaa8e8ac92
6 files changed, 38 insertions, 24 deletions
diff --git a/core/api/current.txt b/core/api/current.txt index fa2060ce77f8..522d2f28a6fc 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -8836,9 +8836,10 @@ package android.app.appfunctions { field public static final int RESULT_CANCELLED = 2001; // 0x7d1 field public static final int RESULT_DENIED = 1000; // 0x3e8 field public static final int RESULT_DISABLED = 1002; // 0x3ea - field public static final int RESULT_INTERNAL_ERROR = 2000; // 0x7d0 + field public static final int RESULT_FUNCTION_NOT_FOUND = 1003; // 0x3eb field public static final int RESULT_INVALID_ARGUMENT = 1001; // 0x3e9 field public static final int RESULT_OK = 0; // 0x0 + field public static final int RESULT_SYSTEM_ERROR = 2000; // 0x7d0 } } diff --git a/core/java/android/app/appfunctions/ExecuteAppFunctionResponse.java b/core/java/android/app/appfunctions/ExecuteAppFunctionResponse.java index 7e3409922a2b..cdf02e6f5a09 100644 --- a/core/java/android/app/appfunctions/ExecuteAppFunctionResponse.java +++ b/core/java/android/app/appfunctions/ExecuteAppFunctionResponse.java @@ -99,18 +99,23 @@ public final class ExecuteAppFunctionResponse implements Parcelable { /** * The caller tried to execute a disabled app function. * - * <p>This error is in the request error category. - * * <p>This error is in the {@link #ERROR_CATEGORY_REQUEST_ERROR} category. */ public static final int RESULT_DISABLED = 1002; /** + * The caller tried to execute a function that does not exist. + * + * <p>This error is in the {@link #ERROR_CATEGORY_REQUEST_ERROR} category. + */ + public static final int RESULT_FUNCTION_NOT_FOUND = 1003; + + /** * An internal unexpected error coming from the system. * * <p>This error is in the {@link #ERROR_CATEGORY_SYSTEM} category. */ - public static final int RESULT_INTERNAL_ERROR = 2000; + public static final int RESULT_SYSTEM_ERROR = 2000; /** * The operation was cancelled. Use this error code to report that a cancellation is done after @@ -369,7 +374,8 @@ public final class ExecuteAppFunctionResponse implements Parcelable { RESULT_OK, RESULT_DENIED, RESULT_APP_UNKNOWN_ERROR, - RESULT_INTERNAL_ERROR, + RESULT_FUNCTION_NOT_FOUND, + RESULT_SYSTEM_ERROR, RESULT_INVALID_ARGUMENT, RESULT_DISABLED, RESULT_CANCELLED diff --git a/libs/appfunctions/api/current.txt b/libs/appfunctions/api/current.txt index 89cdba8ffec0..faf84a8ab5ac 100644 --- a/libs/appfunctions/api/current.txt +++ b/libs/appfunctions/api/current.txt @@ -52,9 +52,10 @@ package com.google.android.appfunctions.sidecar { field public static final int RESULT_CANCELLED = 2001; // 0x7d1 field public static final int RESULT_DENIED = 1000; // 0x3e8 field public static final int RESULT_DISABLED = 1002; // 0x3ea - field public static final int RESULT_INTERNAL_ERROR = 2000; // 0x7d0 + field public static final int RESULT_FUNCTION_NOT_FOUND = 1003; // 0x3eb field public static final int RESULT_INVALID_ARGUMENT = 1001; // 0x3e9 field public static final int RESULT_OK = 0; // 0x0 + field public static final int RESULT_SYSTEM_ERROR = 2000; // 0x7d0 } } diff --git a/libs/appfunctions/java/com/google/android/appfunctions/sidecar/ExecuteAppFunctionResponse.java b/libs/appfunctions/java/com/google/android/appfunctions/sidecar/ExecuteAppFunctionResponse.java index bf4ab45ed939..4e88fb025a9d 100644 --- a/libs/appfunctions/java/com/google/android/appfunctions/sidecar/ExecuteAppFunctionResponse.java +++ b/libs/appfunctions/java/com/google/android/appfunctions/sidecar/ExecuteAppFunctionResponse.java @@ -76,18 +76,23 @@ public final class ExecuteAppFunctionResponse { /** * The caller tried to execute a disabled app function. * - * <p>This error is in the request error category. - * * <p>This error is in the {@link #ERROR_CATEGORY_REQUEST_ERROR} category. */ public static final int RESULT_DISABLED = 1002; /** + * The caller tried to execute a function that does not exist. + * + * <p>This error is in the {@link #ERROR_CATEGORY_REQUEST_ERROR} category. + */ + public static final int RESULT_FUNCTION_NOT_FOUND = 1003; + + /** * An internal unexpected error coming from the system. * * <p>This error is in the {@link #ERROR_CATEGORY_SYSTEM} category. */ - public static final int RESULT_INTERNAL_ERROR = 2000; + public static final int RESULT_SYSTEM_ERROR = 2000; /** * The operation was cancelled. Use this error code to report that a cancellation is done after @@ -327,7 +332,8 @@ public final class ExecuteAppFunctionResponse { RESULT_OK, RESULT_DENIED, RESULT_APP_UNKNOWN_ERROR, - RESULT_INTERNAL_ERROR, + RESULT_SYSTEM_ERROR, + RESULT_FUNCTION_NOT_FOUND, RESULT_INVALID_ARGUMENT, RESULT_DISABLED, RESULT_CANCELLED diff --git a/libs/appfunctions/tests/src/com/google/android/appfunctions/sidecar/tests/SidecarConverterTest.kt b/libs/appfunctions/tests/src/com/google/android/appfunctions/sidecar/tests/SidecarConverterTest.kt index 1f9fddd3c1ec..264f84209caf 100644 --- a/libs/appfunctions/tests/src/com/google/android/appfunctions/sidecar/tests/SidecarConverterTest.kt +++ b/libs/appfunctions/tests/src/com/google/android/appfunctions/sidecar/tests/SidecarConverterTest.kt @@ -105,7 +105,7 @@ class SidecarConverterTest { val emptyGd = GenericDocument.Builder<GenericDocument.Builder<*>>("", "", "").build() val platformResponse = ExecuteAppFunctionResponse.newFailure( - ExecuteAppFunctionResponse.RESULT_INTERNAL_ERROR, + ExecuteAppFunctionResponse.RESULT_SYSTEM_ERROR, null, null ) @@ -119,7 +119,7 @@ class SidecarConverterTest { assertThat(sidecarResponse.resultDocument.id).isEqualTo(emptyGd.id) assertThat(sidecarResponse.resultDocument.schemaType).isEqualTo(emptyGd.schemaType) assertThat(sidecarResponse.resultCode) - .isEqualTo(ExecuteAppFunctionResponse.RESULT_INTERNAL_ERROR) + .isEqualTo(ExecuteAppFunctionResponse.RESULT_SYSTEM_ERROR) assertThat(sidecarResponse.errorMessage).isNull() } @@ -152,7 +152,7 @@ class SidecarConverterTest { val emptyGd = GenericDocument.Builder<GenericDocument.Builder<*>>("", "", "").build() val sidecarResponse = com.google.android.appfunctions.sidecar.ExecuteAppFunctionResponse.newFailure( - ExecuteAppFunctionResponse.RESULT_INTERNAL_ERROR, + ExecuteAppFunctionResponse.RESULT_SYSTEM_ERROR, null, null ) @@ -166,7 +166,7 @@ class SidecarConverterTest { assertThat(platformResponse.resultDocument.id).isEqualTo(emptyGd.id) assertThat(platformResponse.resultDocument.schemaType).isEqualTo(emptyGd.schemaType) assertThat(platformResponse.resultCode) - .isEqualTo(ExecuteAppFunctionResponse.RESULT_INTERNAL_ERROR) + .isEqualTo(ExecuteAppFunctionResponse.RESULT_SYSTEM_ERROR) assertThat(platformResponse.errorMessage).isNull() } } diff --git a/services/appfunctions/java/com/android/server/appfunctions/AppFunctionManagerServiceImpl.java b/services/appfunctions/java/com/android/server/appfunctions/AppFunctionManagerServiceImpl.java index 89f14b09d397..268e56487c4b 100644 --- a/services/appfunctions/java/com/android/server/appfunctions/AppFunctionManagerServiceImpl.java +++ b/services/appfunctions/java/com/android/server/appfunctions/AppFunctionManagerServiceImpl.java @@ -86,7 +86,6 @@ public class AppFunctionManagerServiceImpl extends IAppFunctionManager.Stub { private final Context mContext; private final Map<String, Object> mLocks = new WeakHashMap<>(); - public AppFunctionManagerServiceImpl(@NonNull Context context) { this( context, @@ -201,7 +200,7 @@ public class AppFunctionManagerServiceImpl extends IAppFunctionManager.Stub { if (mCallerValidator.isUserOrganizationManaged(targetUser)) { safeExecuteAppFunctionCallback.onResult( ExecuteAppFunctionResponse.newFailure( - ExecuteAppFunctionResponse.RESULT_INTERNAL_ERROR, + ExecuteAppFunctionResponse.RESULT_SYSTEM_ERROR, "Cannot run on a device with a device owner or from the managed" + " profile.", /* extras= */ null)); @@ -256,7 +255,7 @@ public class AppFunctionManagerServiceImpl extends IAppFunctionManager.Stub { if (serviceIntent == null) { safeExecuteAppFunctionCallback.onResult( ExecuteAppFunctionResponse.newFailure( - ExecuteAppFunctionResponse.RESULT_INTERNAL_ERROR, + ExecuteAppFunctionResponse.RESULT_SYSTEM_ERROR, "Cannot find the target service.", /* extras= */ null)); return; @@ -449,7 +448,7 @@ public class AppFunctionManagerServiceImpl extends IAppFunctionManager.Stub { Slog.e(TAG, "Failed to bind to the AppFunctionService"); safeExecuteAppFunctionCallback.onResult( ExecuteAppFunctionResponse.newFailure( - ExecuteAppFunctionResponse.RESULT_INTERNAL_ERROR, + ExecuteAppFunctionResponse.RESULT_SYSTEM_ERROR, "Failed to bind the AppFunctionService.", /* extras= */ null)); } @@ -464,7 +463,7 @@ public class AppFunctionManagerServiceImpl extends IAppFunctionManager.Stub { if (e instanceof CompletionException) { e = e.getCause(); } - int resultCode = ExecuteAppFunctionResponse.RESULT_INTERNAL_ERROR; + int resultCode = ExecuteAppFunctionResponse.RESULT_SYSTEM_ERROR; if (e instanceof AppSearchException appSearchException) { resultCode = mapAppSearchResultFailureCodeToExecuteAppFunctionResponse( @@ -486,13 +485,13 @@ public class AppFunctionManagerServiceImpl extends IAppFunctionManager.Stub { switch (resultCode) { case AppSearchResult.RESULT_NOT_FOUND: - return ExecuteAppFunctionResponse.RESULT_INVALID_ARGUMENT; + return ExecuteAppFunctionResponse.RESULT_FUNCTION_NOT_FOUND; case AppSearchResult.RESULT_INVALID_ARGUMENT: case AppSearchResult.RESULT_INTERNAL_ERROR: case AppSearchResult.RESULT_SECURITY_ERROR: // fall-through } - return ExecuteAppFunctionResponse.RESULT_INTERNAL_ERROR; + return ExecuteAppFunctionResponse.RESULT_SYSTEM_ERROR; } private void registerAppSearchObserver(@NonNull TargetUser user) { @@ -543,12 +542,13 @@ public class AppFunctionManagerServiceImpl extends IAppFunctionManager.Stub { }); } } + /** * Retrieves the lock object associated with the given package name. * - * This method returns the lock object from the {@code mLocks} map if it exists. - * If no lock is found for the given package name, a new lock object is created, - * stored in the map, and returned. + * <p>This method returns the lock object from the {@code mLocks} map if it exists. If no lock + * is found for the given package name, a new lock object is created, stored in the map, and + * returned. */ @VisibleForTesting @NonNull |