Revert "Implement getDocuments() support in AppSearchImpl."
Revert "Add CTS tests for AppSearch.getDocuments APIs."
Revert submission 10081469-060-get-impl
Reason for revert: Breaks build due to collision with ag/10111175
Reverted Changes:
I013ac2f01: Implement getDocuments() support in AppSearchImpl....
Ia518a91fe: Add CTS tests for AppSearch.getDocuments APIs.
Change-Id: Ib6437eb41c53f7bf00aac7951b427455982f2247
diff --git a/apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java b/apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java
index be59b82..15c3368 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java
+++ b/apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java
@@ -24,7 +24,6 @@
import com.android.internal.infra.AndroidFuture;
-import com.google.android.icing.proto.DocumentProto;
import com.google.android.icing.proto.SchemaProto;
import com.google.android.icing.proto.SearchResultProto;
import com.google.android.icing.proto.SearchSpecProto;
@@ -182,53 +181,6 @@
}
/**
- * Retrieves {@link android.app.appsearch.AppSearch.Document}s by URI.
- *
- * <p>You should not call this method directly; instead, use the
- * {@code AppSearch#getDocuments()} API provided by JetPack.
- *
- * @param uris URIs of the documents to look up.
- * @param executor Executor on which to invoke the callback.
- * @param callback Callback to receive the documents or error.
- */
- public void getDocuments(
- @NonNull List<String> uris,
- @NonNull @CallbackExecutor Executor executor,
- @NonNull BiConsumer<List<AppSearch.Document>, ? super Throwable> callback) {
- AndroidFuture<List<byte[]>> future = new AndroidFuture<>();
- future.whenCompleteAsync((documentProtos, err) -> {
- if (err != null) {
- callback.accept(null, err);
- return;
- }
- if (documentProtos != null) {
- List<AppSearch.Document> results = new ArrayList<>(documentProtos.size());
- for (int i = 0; i < documentProtos.size(); i++) {
- DocumentProto documentProto;
- try {
- documentProto = DocumentProto.parseFrom(documentProtos.get(i));
- } catch (InvalidProtocolBufferException e) {
- callback.accept(null, e);
- return;
- }
- results.add(new AppSearch.Document(documentProto));
- }
- callback.accept(results, null);
- return;
- }
- // Nothing was supplied in the future at all
- callback.accept(null, new IllegalStateException(
- "Unknown failure occurred while retrieving documents"));
- }, executor);
- // TODO(b/146386470) stream uris?
- try {
- mService.getDocuments(uris.toArray(new String[uris.size()]), future);
- } catch (RemoteException e) {
- future.completeExceptionally(e);
- }
- }
-
- /**
* This method searches for documents based on a given query string. It also accepts
* specifications regarding how to search and format the results.
*
@@ -285,6 +237,7 @@
callback.accept(null, err);
return;
}
+
if (searchResultBytes != null) {
SearchResultProto searchResultProto;
try {
@@ -304,10 +257,12 @@
callback.accept(searchResults, null);
return;
}
+
// Nothing was supplied in the future at all
callback.accept(
null, new IllegalStateException("Unknown failure occurred while querying"));
}, executor);
+
try {
SearchSpecProto searchSpecProto = searchSpec.getSearchSpecProto();
searchSpecProto = searchSpecProto.toBuilder().setQuery(queryExpression).build();
diff --git a/apex/appsearch/framework/java/android/app/appsearch/IAppSearchManager.aidl b/apex/appsearch/framework/java/android/app/appsearch/IAppSearchManager.aidl
index b800825..eef41ed 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/IAppSearchManager.aidl
+++ b/apex/appsearch/framework/java/android/app/appsearch/IAppSearchManager.aidl
@@ -47,16 +47,6 @@
void putDocuments(in List documentsBytes, in AndroidFuture<AppSearchBatchResult> callback);
/**
- * Retrieves documents from the index.
- *
- * @param uris The URIs of the documents to retrieve
- * @param callback {@link AndroidFuture}<{@link List}<byte[]>>. Will be completed
- * with a {@link List} containing serialized DocumentProtos, or completed exceptionally if
- * get fails.
- */
- void getDocuments(in String[] uris, in AndroidFuture callback);
-
- /**
* Searches a document based on a given specifications.
*
* @param searchSpecBytes Serialized SearchSpecProto.
diff --git a/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java b/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java
index 2608e84..6293ee7 100644
--- a/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java
+++ b/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java
@@ -35,7 +35,6 @@
import com.google.android.icing.proto.SearchSpecProto;
import com.google.android.icing.protobuf.InvalidProtocolBufferException;
-import java.util.ArrayList;
import java.util.List;
/**
@@ -104,30 +103,6 @@
Binder.restoreCallingIdentity(callingIdentity);
}
}
-
- @Override
- public void getDocuments(String[] uris, AndroidFuture callback) {
- Preconditions.checkNotNull(uris);
- Preconditions.checkNotNull(callback);
- int callingUid = Binder.getCallingUidOrThrow();
- int callingUserId = UserHandle.getUserId(callingUid);
- long callingIdentity = Binder.clearCallingIdentity();
- try {
- AppSearchImpl impl = ImplInstanceManager.getInstance(getContext(), callingUserId);
- // Contains serialized DocumentProto. byte[][] is not transmissible via Binder.
- List<byte[]> results = new ArrayList<>(uris.length);
- for (String uri : uris) {
- DocumentProto result = impl.getDocument(callingUid, uri);
- results.add(result.toByteArray());
- }
- callback.complete(results);
- } catch (Throwable t) {
- callback.completeExceptionally(t);
- } finally {
- Binder.restoreCallingIdentity(callingIdentity);
- }
- }
-
// TODO(sidchhabra):Init FakeIcing properly.
// TODO(sidchhabra): Do this in a threadpool.
@Override
diff --git a/apex/appsearch/service/java/com/android/server/appsearch/impl/AppSearchImpl.java b/apex/appsearch/service/java/com/android/server/appsearch/impl/AppSearchImpl.java
index 7442d06..04b4b14 100644
--- a/apex/appsearch/service/java/com/android/server/appsearch/impl/AppSearchImpl.java
+++ b/apex/appsearch/service/java/com/android/server/appsearch/impl/AppSearchImpl.java
@@ -17,7 +17,6 @@
package com.android.server.appsearch.impl;
import android.annotation.NonNull;
-import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.content.Context;
@@ -107,65 +106,30 @@
// Rewrite the type names to include the app's prefix
String typePrefix = getTypePrefix(callingUid);
DocumentProto.Builder documentBuilder = origDocument.toBuilder();
- rewriteDocumentTypes(typePrefix, documentBuilder, /*add=*/ true);
+ rewriteDocumentTypes(typePrefix, documentBuilder);
mFakeIcing.put(documentBuilder.build());
}
/**
- * Retrieves a document from the AppSearch index by URI.
- *
- * @param callingUid The uid of the app calling AppSearch.
- * @param uri The URI of the document to get.
- * @return The Document contents, or {@code null} if no such URI exists in the system.
- */
- @Nullable
- public DocumentProto getDocument(int callingUid, @NonNull String uri) {
- String typePrefix = getTypePrefix(callingUid);
- DocumentProto document = mFakeIcing.get(uri);
- // Rewrite the type names to remove the app's prefix
- DocumentProto.Builder documentBuilder = document.toBuilder();
- rewriteDocumentTypes(typePrefix, documentBuilder, /*add=*/ false);
- return documentBuilder.build();
- }
-
- /**
- * Rewrites all types mentioned anywhere in {@code documentBuilder} to prepend or remove
+ * Rewrites all types mentioned anywhere in {@code documentBuilder} to prepend
* {@code typePrefix}.
*
- * @param typePrefix The prefix to add or remove
+ * @param typePrefix The prefix to add
* @param documentBuilder The document to mutate
- * @param add Whether to add typePrefix to the types. If {@code false}, typePrefix will be
- * removed from the types.
- * @throws IllegalArgumentException If {@code add=false} and the document has a type that
- * doesn't start with {@code typePrefix}.
*/
@VisibleForTesting
void rewriteDocumentTypes(
@NonNull String typePrefix,
- @NonNull DocumentProto.Builder documentBuilder,
- boolean add) {
- // Rewrite the type name to include/remove the app's prefix
- String newSchema;
- if (add) {
- newSchema = typePrefix + documentBuilder.getSchema();
- } else {
- newSchema = removePrefix(typePrefix, documentBuilder.getSchema());
- }
+ @NonNull DocumentProto.Builder documentBuilder) {
+ // Rewrite the type name to include the app's prefix
+ String newSchema = typePrefix + documentBuilder.getSchema();
documentBuilder.setSchema(newSchema);
- // Add/remove namespace. If we ever allow users to set their own namespaces, this will have
+ // Add namespace. If we ever allow users to set their own namespaces, this will have
// to change to prepend the prefix instead of setting the whole namespace. We will also have
// to store the namespaces in a map similar to the type map so we can rewrite queries with
// empty namespaces.
- if (add) {
- documentBuilder.setNamespace(typePrefix);
- } else if (!documentBuilder.getNamespace().equals(typePrefix)) {
- throw new IllegalStateException(
- "Unexpected namespace \"" + documentBuilder.getNamespace()
- + "\" (expected \"" + typePrefix + "\")");
- } else {
- documentBuilder.clearNamespace();
- }
+ documentBuilder.setNamespace(typePrefix);
// Recurse into derived documents
for (int propertyIdx = 0;
@@ -178,7 +142,7 @@
for (int documentIdx = 0; documentIdx < documentCount; documentIdx++) {
DocumentProto.Builder derivedDocumentBuilder =
propertyBuilder.getDocumentValues(documentIdx).toBuilder();
- rewriteDocumentTypes(typePrefix, derivedDocumentBuilder, add);
+ rewriteDocumentTypes(typePrefix, derivedDocumentBuilder);
propertyBuilder.setDocumentValues(documentIdx, derivedDocumentBuilder);
}
documentBuilder.setProperties(propertyIdx, propertyBuilder);
@@ -201,13 +165,4 @@
}
return callingUidName + "@" + mUserId + "/";
}
-
- @NonNull
- private static String removePrefix(@NonNull String prefix, @NonNull String input) {
- if (!input.startsWith(prefix)) {
- throw new IllegalArgumentException(
- "Input \"" + input + "\" does not start with \"" + prefix + "\"");
- }
- return input.substring(prefix.length());
- }
}