diff options
2 files changed, 65 insertions, 13 deletions
diff --git a/services/appfunctions/java/com/android/server/appfunctions/FutureAppSearchSession.java b/services/appfunctions/java/com/android/server/appfunctions/FutureAppSearchSession.java index 094723814e17..39aa27ae794e 100644 --- a/services/appfunctions/java/com/android/server/appfunctions/FutureAppSearchSession.java +++ b/services/appfunctions/java/com/android/server/appfunctions/FutureAppSearchSession.java @@ -27,6 +27,7 @@ import android.app.appsearch.GenericDocument; import android.app.appsearch.GetByDocumentIdRequest; import android.app.appsearch.GetSchemaResponse; import android.app.appsearch.PutDocumentsRequest; +import android.app.appsearch.RemoveByDocumentIdRequest; import android.app.appsearch.SearchResult; import android.app.appsearch.SearchResults; import android.app.appsearch.SearchSpec; @@ -146,6 +147,22 @@ public class FutureAppSearchSession implements Closeable { }); } + /** Removes documents from the AppSearchSession database. */ + public AndroidFuture<AppSearchBatchResult<String, Void>> remove( + @NonNull RemoveByDocumentIdRequest removeRequest) { + return getSessionAsync() + .thenCompose( + session -> { + AndroidFuture<AppSearchBatchResult<String, Void>> + settableBatchResultFuture = new AndroidFuture<>(); + session.remove( + removeRequest, + mExecutor, + new BatchResultCallbackAdapter<>(settableBatchResultFuture)); + return settableBatchResultFuture; + }); + } + /** * Retrieves documents from the open AppSearchSession that match a given query string and type * of search provided. @@ -200,9 +217,7 @@ public class FutureAppSearchSession implements Closeable { Objects.requireNonNull(namespace); GetByDocumentIdRequest request = - new GetByDocumentIdRequest.Builder(namespace) - .addIds(documentId) - .build(); + new GetByDocumentIdRequest.Builder(namespace).addIds(documentId).build(); return getSessionAsync() .thenCompose( session -> { diff --git a/services/tests/appfunctions/src/com/android/server/appfunctions/FutureAppSearchSessionTest.kt b/services/tests/appfunctions/src/com/android/server/appfunctions/FutureAppSearchSessionTest.kt index a0f1a559bb52..3bc44111ba08 100644 --- a/services/tests/appfunctions/src/com/android/server/appfunctions/FutureAppSearchSessionTest.kt +++ b/services/tests/appfunctions/src/com/android/server/appfunctions/FutureAppSearchSessionTest.kt @@ -19,8 +19,10 @@ import android.app.appfunctions.AppFunctionRuntimeMetadata import android.app.appfunctions.AppFunctionRuntimeMetadata.APP_FUNCTION_RUNTIME_NAMESPACE import android.app.appfunctions.AppFunctionRuntimeMetadata.createAppFunctionRuntimeSchema import android.app.appfunctions.AppFunctionRuntimeMetadata.createParentAppFunctionRuntimeSchema +import android.app.appsearch.AppSearchBatchResult import android.app.appsearch.AppSearchManager import android.app.appsearch.PutDocumentsRequest +import android.app.appsearch.RemoveByDocumentIdRequest import android.app.appsearch.SearchSpec import android.app.appsearch.SetSchemaRequest import androidx.test.platform.app.InstrumentationRegistry @@ -56,7 +58,7 @@ class FutureAppSearchSessionTest { SetSchemaRequest.Builder() .addSchemas( createParentAppFunctionRuntimeSchema(), - createAppFunctionRuntimeSchema(TEST_PACKAGE_NAME) + createAppFunctionRuntimeSchema(TEST_PACKAGE_NAME), ) .build() @@ -74,7 +76,7 @@ class FutureAppSearchSessionTest { SetSchemaRequest.Builder() .addSchemas( createParentAppFunctionRuntimeSchema(), - createAppFunctionRuntimeSchema(TEST_PACKAGE_NAME) + createAppFunctionRuntimeSchema(TEST_PACKAGE_NAME), ) .build() val schema = session.setSchema(setSchemaRequest) @@ -93,6 +95,40 @@ class FutureAppSearchSessionTest { } @Test + fun remove() { + val searchContext = AppSearchManager.SearchContext.Builder(TEST_DB).build() + FutureAppSearchSession(appSearchManager, testExecutor, searchContext).use { session -> + val setSchemaRequest = + SetSchemaRequest.Builder() + .addSchemas( + createParentAppFunctionRuntimeSchema(), + createAppFunctionRuntimeSchema(TEST_PACKAGE_NAME), + ) + .build() + val schema = session.setSchema(setSchemaRequest) + assertThat(schema.get()).isNotNull() + val appFunctionRuntimeMetadata = + AppFunctionRuntimeMetadata.Builder(TEST_PACKAGE_NAME, TEST_FUNCTION_ID, "").build() + val putDocumentsRequest: PutDocumentsRequest = + PutDocumentsRequest.Builder() + .addGenericDocuments(appFunctionRuntimeMetadata) + .build() + val putResult = session.put(putDocumentsRequest) + assertThat(putResult.get().isSuccess).isTrue() + val removeDocumentRequest = + RemoveByDocumentIdRequest.Builder(APP_FUNCTION_RUNTIME_NAMESPACE) + .addIds(appFunctionRuntimeMetadata.id) + .build() + + val removeResult: AppSearchBatchResult<String, Void> = + session.remove(removeDocumentRequest).get() + + assertThat(removeResult).isNotNull() + assertThat(removeResult.isSuccess).isTrue() + } + } + + @Test fun search() { val searchContext = AppSearchManager.SearchContext.Builder(TEST_DB).build() FutureAppSearchSession(appSearchManager, testExecutor, searchContext).use { session -> @@ -100,7 +136,7 @@ class FutureAppSearchSessionTest { SetSchemaRequest.Builder() .addSchemas( createParentAppFunctionRuntimeSchema(), - createAppFunctionRuntimeSchema(TEST_PACKAGE_NAME) + createAppFunctionRuntimeSchema(TEST_PACKAGE_NAME), ) .build() val schema = session.setSchema(setSchemaRequest) @@ -132,7 +168,7 @@ class FutureAppSearchSessionTest { SetSchemaRequest.Builder() .addSchemas( createParentAppFunctionRuntimeSchema(), - createAppFunctionRuntimeSchema(TEST_PACKAGE_NAME) + createAppFunctionRuntimeSchema(TEST_PACKAGE_NAME), ) .build() val schema = session.setSchema(setSchemaRequest) @@ -144,12 +180,13 @@ class FutureAppSearchSessionTest { .build() val putResult = session.put(putDocumentsRequest) - val genricDocument = session - .getByDocumentId( - /* documentId= */ "${TEST_PACKAGE_NAME}/${TEST_FUNCTION_ID}", - APP_FUNCTION_RUNTIME_NAMESPACE - ) - .get() + val genricDocument = + session + .getByDocumentId( + /* documentId= */ "${TEST_PACKAGE_NAME}/${TEST_FUNCTION_ID}", + APP_FUNCTION_RUNTIME_NAMESPACE, + ) + .get() val foundAppFunctionRuntimeMetadata = AppFunctionRuntimeMetadata(genricDocument) assertThat(foundAppFunctionRuntimeMetadata.functionId).isEqualTo(TEST_FUNCTION_ID) |