Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a13d2873 authored by Oluwarotimi Adesina's avatar Oluwarotimi Adesina
Browse files

Add remove to FutureAppSearchSession

Flag: android.app.appfunctions.flags.enable_app_function_manager
Test: atest FrameworksAppFunctionsTests -c
Bug: 357551503
Change-Id: Ib3ec4eae9e1055ddb93ad34653a903555389ca83
parent a7583fcc
Loading
Loading
Loading
Loading
+18 −3
Original line number Diff line number Diff line
@@ -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 -> {
+47 −10
Original line number Diff line number Diff line
@@ -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)
@@ -92,6 +94,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()
@@ -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,10 +180,11 @@ class FutureAppSearchSessionTest {
                    .build()
            val putResult = session.put(putDocumentsRequest)

            val genricDocument = session
            val genricDocument =
                session
                    .getByDocumentId(
                        /* documentId= */ "${TEST_PACKAGE_NAME}/${TEST_FUNCTION_ID}",
                    APP_FUNCTION_RUNTIME_NAMESPACE
                        APP_FUNCTION_RUNTIME_NAMESPACE,
                    )
                    .get()