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

Commit 17e406e2 authored by Alexander Dorokhine's avatar Alexander Dorokhine
Browse files

Sync AppSearch from framework.

Contains changes:
* 37a4e9: Split indexing configs into per-type configs.
* 69d6e3: Add projection to the Get api.

Bug: 175039682
Bug: 177572431
Bug: 171857731
Test: Presubmit

Change-Id: Ida457b2d617be6e85557023bfb4716ad78c8db6c
parent 3311711b
Loading
Loading
Loading
Loading
+65 −18
Original line number Diff line number Diff line
@@ -43,6 +43,15 @@ package android.app.appsearch {
    method @IntRange(from=0) public int getVersion();
  }

  public static final class AppSearchSchema.BooleanPropertyConfig extends android.app.appsearch.AppSearchSchema.PropertyConfig {
  }

  public static final class AppSearchSchema.BooleanPropertyConfig.Builder {
    ctor public AppSearchSchema.BooleanPropertyConfig.Builder(@NonNull String);
    method @NonNull public android.app.appsearch.AppSearchSchema.BooleanPropertyConfig build();
    method @NonNull public android.app.appsearch.AppSearchSchema.BooleanPropertyConfig.Builder setCardinality(int);
  }

  public static final class AppSearchSchema.Builder {
    ctor public AppSearchSchema.Builder(@NonNull String);
    method @NonNull public android.app.appsearch.AppSearchSchema.Builder addProperty(@NonNull android.app.appsearch.AppSearchSchema.PropertyConfig);
@@ -50,22 +59,58 @@ package android.app.appsearch {
    method @NonNull public android.app.appsearch.AppSearchSchema.Builder setVersion(@IntRange(from=0) int);
  }

  public static final class AppSearchSchema.PropertyConfig {
  public static final class AppSearchSchema.BytesPropertyConfig extends android.app.appsearch.AppSearchSchema.PropertyConfig {
  }

  public static final class AppSearchSchema.BytesPropertyConfig.Builder {
    ctor public AppSearchSchema.BytesPropertyConfig.Builder(@NonNull String);
    method @NonNull public android.app.appsearch.AppSearchSchema.BytesPropertyConfig build();
    method @NonNull public android.app.appsearch.AppSearchSchema.BytesPropertyConfig.Builder setCardinality(int);
  }

  public static final class AppSearchSchema.DocumentPropertyConfig extends android.app.appsearch.AppSearchSchema.PropertyConfig {
    method @NonNull public String getSchemaType();
    method public boolean isIndexNestedProperties();
  }

  public static final class AppSearchSchema.DocumentPropertyConfig.Builder {
    ctor public AppSearchSchema.DocumentPropertyConfig.Builder(@NonNull String);
    method @NonNull public android.app.appsearch.AppSearchSchema.DocumentPropertyConfig build();
    method @NonNull public android.app.appsearch.AppSearchSchema.DocumentPropertyConfig.Builder setCardinality(int);
    method @NonNull public android.app.appsearch.AppSearchSchema.DocumentPropertyConfig.Builder setIndexNestedProperties(boolean);
    method @NonNull public android.app.appsearch.AppSearchSchema.DocumentPropertyConfig.Builder setSchemaType(@NonNull String);
  }

  public static final class AppSearchSchema.DoublePropertyConfig extends android.app.appsearch.AppSearchSchema.PropertyConfig {
  }

  public static final class AppSearchSchema.DoublePropertyConfig.Builder {
    ctor public AppSearchSchema.DoublePropertyConfig.Builder(@NonNull String);
    method @NonNull public android.app.appsearch.AppSearchSchema.DoublePropertyConfig build();
    method @NonNull public android.app.appsearch.AppSearchSchema.DoublePropertyConfig.Builder setCardinality(int);
  }

  public static final class AppSearchSchema.Int64PropertyConfig extends android.app.appsearch.AppSearchSchema.PropertyConfig {
  }

  public static final class AppSearchSchema.Int64PropertyConfig.Builder {
    ctor public AppSearchSchema.Int64PropertyConfig.Builder(@NonNull String);
    method @NonNull public android.app.appsearch.AppSearchSchema.Int64PropertyConfig build();
    method @NonNull public android.app.appsearch.AppSearchSchema.Int64PropertyConfig.Builder setCardinality(int);
  }

  public abstract static class AppSearchSchema.PropertyConfig {
    method public int getCardinality();
    method public int getDataType();
    method public int getIndexingType();
    method @NonNull public String getName();
    method @Nullable public String getSchemaType();
    method public int getTokenizerType();
    field public static final int CARDINALITY_OPTIONAL = 2; // 0x2
    field public static final int CARDINALITY_REPEATED = 1; // 0x1
    field public static final int CARDINALITY_REQUIRED = 3; // 0x3
    field public static final int DATA_TYPE_BOOLEAN = 4; // 0x4
    field public static final int DATA_TYPE_BYTES = 5; // 0x5
    field public static final int DATA_TYPE_DOCUMENT = 6; // 0x6
    field public static final int DATA_TYPE_DOUBLE = 3; // 0x3
    field public static final int DATA_TYPE_INT64 = 2; // 0x2
    field public static final int DATA_TYPE_STRING = 1; // 0x1
  }

  public static final class AppSearchSchema.StringPropertyConfig extends android.app.appsearch.AppSearchSchema.PropertyConfig {
    method public int getIndexingType();
    method public int getTokenizerType();
    field public static final int INDEXING_TYPE_EXACT_TERMS = 1; // 0x1
    field public static final int INDEXING_TYPE_NONE = 0; // 0x0
    field public static final int INDEXING_TYPE_PREFIXES = 2; // 0x2
@@ -73,14 +118,12 @@ package android.app.appsearch {
    field public static final int TOKENIZER_TYPE_PLAIN = 1; // 0x1
  }

  public static final class AppSearchSchema.PropertyConfig.Builder {
    ctor public AppSearchSchema.PropertyConfig.Builder(@NonNull String);
    method @NonNull public android.app.appsearch.AppSearchSchema.PropertyConfig build();
    method @NonNull public android.app.appsearch.AppSearchSchema.PropertyConfig.Builder setCardinality(int);
    method @NonNull public android.app.appsearch.AppSearchSchema.PropertyConfig.Builder setDataType(int);
    method @NonNull public android.app.appsearch.AppSearchSchema.PropertyConfig.Builder setIndexingType(int);
    method @NonNull public android.app.appsearch.AppSearchSchema.PropertyConfig.Builder setSchemaType(@NonNull String);
    method @NonNull public android.app.appsearch.AppSearchSchema.PropertyConfig.Builder setTokenizerType(int);
  public static final class AppSearchSchema.StringPropertyConfig.Builder {
    ctor public AppSearchSchema.StringPropertyConfig.Builder(@NonNull String);
    method @NonNull public android.app.appsearch.AppSearchSchema.StringPropertyConfig build();
    method @NonNull public android.app.appsearch.AppSearchSchema.StringPropertyConfig.Builder setCardinality(int);
    method @NonNull public android.app.appsearch.AppSearchSchema.StringPropertyConfig.Builder setIndexingType(int);
    method @NonNull public android.app.appsearch.AppSearchSchema.StringPropertyConfig.Builder setTokenizerType(int);
  }

  public final class AppSearchSession implements java.io.Closeable {
@@ -143,11 +186,15 @@ package android.app.appsearch {

  public final class GetByUriRequest {
    method @NonNull public String getNamespace();
    method @NonNull public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getProjections();
    method @NonNull public java.util.Set<java.lang.String> getUris();
    field public static final String PROJECTION_SCHEMA_TYPE_WILDCARD = "*";
  }

  public static final class GetByUriRequest.Builder {
    ctor public GetByUriRequest.Builder();
    method @NonNull public android.app.appsearch.GetByUriRequest.Builder addProjection(@NonNull String, @NonNull java.lang.String...);
    method @NonNull public android.app.appsearch.GetByUriRequest.Builder addProjection(@NonNull String, @NonNull java.util.Collection<java.lang.String>);
    method @NonNull public android.app.appsearch.GetByUriRequest.Builder addUri(@NonNull java.lang.String...);
    method @NonNull public android.app.appsearch.GetByUriRequest.Builder addUri(@NonNull java.util.Collection<java.lang.String>);
    method @NonNull public android.app.appsearch.GetByUriRequest build();
+1 −0
Original line number Diff line number Diff line
@@ -330,6 +330,7 @@ public class AppSearchManager {
                    DEFAULT_DATABASE_NAME,
                    request.getNamespace(),
                    uris,
                    request.getProjectionsVisibleToPackagesInternal(),
                    mContext.getUserId(),
                    new IAppSearchBatchResultCallback.Stub() {
                        public void onResult(AppSearchBatchResult result) {
+7 −2
Original line number Diff line number Diff line
@@ -311,8 +311,13 @@ public final class AppSearchSession implements Closeable {
        Objects.requireNonNull(callback);
        Preconditions.checkState(!mIsClosed, "AppSearchSession has already been closed");
        try {
            mService.getDocuments(mPackageName, mDatabaseName, request.getNamespace(),
                    new ArrayList<>(request.getUris()), mUserId,
            mService.getDocuments(
                    mPackageName,
                    mDatabaseName,
                    request.getNamespace(),
                    new ArrayList<>(request.getUris()),
                    request.getProjectionsVisibleToPackagesInternal(),
                    mUserId,
                    new IAppSearchBatchResultCallback.Stub() {
                        public void onResult(AppSearchBatchResult result) {
                            executor.execute(() -> {
+3 −0
Original line number Diff line number Diff line
@@ -97,6 +97,8 @@ interface IAppSearchManager {
     * @param databaseName  The databaseName this document resides in.
     * @param namespace    The namespace this document resides in.
     * @param uris The URIs of the documents to retrieve
     * @param typePropertyPaths A map of schema type to a list of property paths to return in the
     *     result.
     * @param userId Id of the calling user
     * @param callback
     *     If the call fails to start, {@link IAppSearchBatchResultCallback#onSystemError}
@@ -110,6 +112,7 @@ interface IAppSearchManager {
        in String databaseName,
        in String namespace,
        in List<String> uris,
        in Map<String, List<String>> typePropertyPaths,
        in int userId,
        in IAppSearchBatchResultCallback callback);

+19 −24
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.app.appsearch;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.appsearch.AppSearchSchema.PropertyConfig;
import android.app.appsearch.AppSearchSchema.StringPropertyConfig;

/**
 * Encapsulates a {@link GenericDocument} that represent an email.
@@ -41,46 +42,40 @@ public class AppSearchEmail extends GenericDocument {
    public static final AppSearchSchema SCHEMA =
            new AppSearchSchema.Builder(SCHEMA_TYPE)
                    .addProperty(
                            new PropertyConfig.Builder(KEY_FROM)
                                    .setDataType(PropertyConfig.DATA_TYPE_STRING)
                            new StringPropertyConfig.Builder(KEY_FROM)
                                    .setCardinality(PropertyConfig.CARDINALITY_OPTIONAL)
                                    .setTokenizerType(PropertyConfig.TOKENIZER_TYPE_PLAIN)
                                    .setIndexingType(PropertyConfig.INDEXING_TYPE_PREFIXES)
                                    .setTokenizerType(StringPropertyConfig.TOKENIZER_TYPE_PLAIN)
                                    .setIndexingType(StringPropertyConfig.INDEXING_TYPE_PREFIXES)
                                    .build())
                    .addProperty(
                            new PropertyConfig.Builder(KEY_TO)
                                    .setDataType(PropertyConfig.DATA_TYPE_STRING)
                            new StringPropertyConfig.Builder(KEY_TO)
                                    .setCardinality(PropertyConfig.CARDINALITY_REPEATED)
                                    .setTokenizerType(PropertyConfig.TOKENIZER_TYPE_PLAIN)
                                    .setIndexingType(PropertyConfig.INDEXING_TYPE_PREFIXES)
                                    .setTokenizerType(StringPropertyConfig.TOKENIZER_TYPE_PLAIN)
                                    .setIndexingType(StringPropertyConfig.INDEXING_TYPE_PREFIXES)
                                    .build())
                    .addProperty(
                            new PropertyConfig.Builder(KEY_CC)
                                    .setDataType(PropertyConfig.DATA_TYPE_STRING)
                            new StringPropertyConfig.Builder(KEY_CC)
                                    .setCardinality(PropertyConfig.CARDINALITY_REPEATED)
                                    .setTokenizerType(PropertyConfig.TOKENIZER_TYPE_PLAIN)
                                    .setIndexingType(PropertyConfig.INDEXING_TYPE_PREFIXES)
                                    .setTokenizerType(StringPropertyConfig.TOKENIZER_TYPE_PLAIN)
                                    .setIndexingType(StringPropertyConfig.INDEXING_TYPE_PREFIXES)
                                    .build())
                    .addProperty(
                            new PropertyConfig.Builder(KEY_BCC)
                                    .setDataType(PropertyConfig.DATA_TYPE_STRING)
                            new StringPropertyConfig.Builder(KEY_BCC)
                                    .setCardinality(PropertyConfig.CARDINALITY_REPEATED)
                                    .setTokenizerType(PropertyConfig.TOKENIZER_TYPE_PLAIN)
                                    .setIndexingType(PropertyConfig.INDEXING_TYPE_PREFIXES)
                                    .setTokenizerType(StringPropertyConfig.TOKENIZER_TYPE_PLAIN)
                                    .setIndexingType(StringPropertyConfig.INDEXING_TYPE_PREFIXES)
                                    .build())
                    .addProperty(
                            new PropertyConfig.Builder(KEY_SUBJECT)
                                    .setDataType(PropertyConfig.DATA_TYPE_STRING)
                            new StringPropertyConfig.Builder(KEY_SUBJECT)
                                    .setCardinality(PropertyConfig.CARDINALITY_OPTIONAL)
                                    .setTokenizerType(PropertyConfig.TOKENIZER_TYPE_PLAIN)
                                    .setIndexingType(PropertyConfig.INDEXING_TYPE_PREFIXES)
                                    .setTokenizerType(StringPropertyConfig.TOKENIZER_TYPE_PLAIN)
                                    .setIndexingType(StringPropertyConfig.INDEXING_TYPE_PREFIXES)
                                    .build())
                    .addProperty(
                            new PropertyConfig.Builder(KEY_BODY)
                                    .setDataType(PropertyConfig.DATA_TYPE_STRING)
                            new StringPropertyConfig.Builder(KEY_BODY)
                                    .setCardinality(PropertyConfig.CARDINALITY_OPTIONAL)
                                    .setTokenizerType(PropertyConfig.TOKENIZER_TYPE_PLAIN)
                                    .setIndexingType(PropertyConfig.INDEXING_TYPE_PREFIXES)
                                    .setTokenizerType(StringPropertyConfig.TOKENIZER_TYPE_PLAIN)
                                    .setIndexingType(StringPropertyConfig.INDEXING_TYPE_PREFIXES)
                                    .build())
                    .build();

Loading