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

Commit afa2ec89 authored by Alexander Dorokhine's avatar Alexander Dorokhine Committed by Android (Google) Code Review
Browse files

Merge "Update Framework from Jetpack."

parents e69483b3 747a1e67
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -162,7 +162,7 @@ package android.app.appsearch {
  public static final class PutDocumentsRequest.Builder {
    ctor public PutDocumentsRequest.Builder();
    method @NonNull public android.app.appsearch.PutDocumentsRequest.Builder addGenericDocument(@NonNull android.app.appsearch.GenericDocument...);
    method @NonNull public android.app.appsearch.PutDocumentsRequest.Builder addGenericDocument(@NonNull java.util.Collection<android.app.appsearch.GenericDocument>);
    method @NonNull public android.app.appsearch.PutDocumentsRequest.Builder addGenericDocument(@NonNull java.util.Collection<? extends android.app.appsearch.GenericDocument>);
    method @NonNull public android.app.appsearch.PutDocumentsRequest build();
  }

@@ -182,6 +182,7 @@ package android.app.appsearch {
  public final class SearchResult {
    method @NonNull public android.app.appsearch.GenericDocument getDocument();
    method @NonNull public java.util.List<android.app.appsearch.SearchResult.MatchInfo> getMatches();
    method @NonNull public String getPackageName();
  }

  public static final class SearchResult.MatchInfo {
@@ -204,9 +205,11 @@ package android.app.appsearch {
  }

  public final class SearchSpec {
    method @NonNull public java.util.List<java.lang.String> getFilterPackageNames();
    method public int getMaxSnippetSize();
    method @NonNull public java.util.List<java.lang.String> getNamespaces();
    method public int getOrder();
    method @NonNull public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getProjections();
    method public int getRankingStrategy();
    method public int getResultCountPerPage();
    method @NonNull public java.util.List<java.lang.String> getSchemaTypes();
@@ -215,17 +218,23 @@ package android.app.appsearch {
    method public int getTermMatch();
    field public static final int ORDER_ASCENDING = 1; // 0x1
    field public static final int ORDER_DESCENDING = 0; // 0x0
    field public static final String PROJECTION_SCHEMA_TYPE_WILDCARD = "*";
    field public static final int RANKING_STRATEGY_CREATION_TIMESTAMP = 2; // 0x2
    field public static final int RANKING_STRATEGY_DOCUMENT_SCORE = 1; // 0x1
    field public static final int RANKING_STRATEGY_NONE = 0; // 0x0
    field public static final int RANKING_STRATEGY_RELEVANCE_SCORE = 3; // 0x3
    field public static final int TERM_MATCH_EXACT_ONLY = 1; // 0x1
    field public static final int TERM_MATCH_PREFIX = 2; // 0x2
  }

  public static final class SearchSpec.Builder {
    ctor public SearchSpec.Builder();
    method @NonNull public android.app.appsearch.SearchSpec.Builder addFilterPackageNames(@NonNull java.lang.String...);
    method @NonNull public android.app.appsearch.SearchSpec.Builder addFilterPackageNames(@NonNull java.util.Collection<java.lang.String>);
    method @NonNull public android.app.appsearch.SearchSpec.Builder addNamespace(@NonNull java.lang.String...);
    method @NonNull public android.app.appsearch.SearchSpec.Builder addNamespace(@NonNull java.util.Collection<java.lang.String>);
    method @NonNull public android.app.appsearch.SearchSpec.Builder addProjection(@NonNull String, @NonNull java.lang.String...);
    method @NonNull public android.app.appsearch.SearchSpec.Builder addProjection(@NonNull String, @NonNull java.util.Collection<java.lang.String>);
    method @NonNull public android.app.appsearch.SearchSpec.Builder addSchemaType(@NonNull java.lang.String...);
    method @NonNull public android.app.appsearch.SearchSpec.Builder addSchemaType(@NonNull java.util.Collection<java.lang.String>);
    method @NonNull public android.app.appsearch.SearchSpec build();
+2 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import com.android.internal.infra.AndroidFuture;
import com.android.internal.util.Preconditions;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -234,6 +235,7 @@ public class AppSearchManager {
                    DEFAULT_DATABASE_NAME,
                    schemaBundles,
                    new ArrayList<>(request.getSchemasNotVisibleToSystemUi()),
                    /*schemasPackageAccessible=*/ Collections.emptyMap(),
                    request.isForceOverride(),
                    mContext.getUserId(),
                    new IAppSearchResultCallback.Stub() {
+12 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.annotation.UserIdInt;
import android.os.Bundle;
import android.os.ParcelableException;
import android.os.RemoteException;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Log;

@@ -161,11 +162,22 @@ public final class AppSearchSession {
        for (AppSearchSchema schema : request.getSchemas()) {
            schemaBundles.add(schema.getBundle());
        }
        Map<String, List<Bundle>> schemasPackageAccessibleBundles =
                new ArrayMap<>(request.getSchemasVisibleToPackagesInternal().size());
        for (Map.Entry<String, Set<PackageIdentifier>> entry :
                request.getSchemasVisibleToPackagesInternal().entrySet()) {
            List<Bundle> packageIdentifierBundles = new ArrayList<>(entry.getValue().size());
            for (PackageIdentifier packageIdentifier : entry.getValue()) {
                packageIdentifierBundles.add(packageIdentifier.getBundle());
            }
            schemasPackageAccessibleBundles.put(entry.getKey(), packageIdentifierBundles);
        }
        try {
            mService.setSchema(
                    mDatabaseName,
                    schemaBundles,
                    new ArrayList<>(request.getSchemasNotVisibleToSystemUi()),
                    schemasPackageAccessibleBundles,
                    request.isForceOverride(),
                    mUserId,
                    new IAppSearchResultCallback.Stub() {
+3 −1
Original line number Diff line number Diff line
@@ -34,6 +34,8 @@ interface IAppSearchManager {
     * @param schemaBundles List of {@link AppSearchSchema} bundles.
     * @param schemasNotPlatformSurfaceable Schema types that should not be surfaced on platform
     *     surfaces.
     * @param schemasPackageAccessibleBundles Schema types that are visible to the specified
     *     packages. The value List contains PackageIdentifier Bundles.
     * @param forceOverride Whether to apply the new schema even if it is incompatible. All
     *     incompatible documents will be deleted.
     * @param userId Id of the calling user
@@ -44,11 +46,11 @@ interface IAppSearchManager {
        in String databaseName,
        in List<Bundle> schemaBundles,
        in List<String> schemasNotPlatformSurfaceable,
        in Map<String, List<Bundle>> schemasPackageAccessibleBundles,
        boolean forceOverride,
        in int userId,
        in IAppSearchResultCallback callback);


    /**
     * Retrieves the AppSearch schema for this database.
     *
+24 −12
Original line number Diff line number Diff line
@@ -17,16 +17,17 @@
package android.app.appsearch;

import android.annotation.NonNull;
import android.app.appsearch.util.BundleUtil;
import android.os.Bundle;

import com.android.internal.util.Preconditions;

import java.util.Arrays;
import java.util.Objects;

/** This class represents a uniquely identifiable package. */
public class PackageIdentifier {
    private final String mPackageName;
    private final byte[] mSha256Certificate;
    private static final String PACKAGE_NAME_FIELD = "packageName";
    private static final String SHA256_CERTIFICATE_FIELD = "sha256Certificate";

    private final Bundle mBundle;

    /**
     * Creates a unique identifier for a package.
@@ -35,18 +36,30 @@ public class PackageIdentifier {
     * @param sha256Certificate SHA256 certificate digest of the package.
     */
    public PackageIdentifier(@NonNull String packageName, @NonNull byte[] sha256Certificate) {
        mPackageName = Preconditions.checkNotNull(packageName);
        mSha256Certificate = Preconditions.checkNotNull(sha256Certificate);
        mBundle = new Bundle();
        mBundle.putString(PACKAGE_NAME_FIELD, packageName);
        mBundle.putByteArray(SHA256_CERTIFICATE_FIELD, sha256Certificate);
    }

    /** @hide */
    public PackageIdentifier(@NonNull Bundle bundle) {
        mBundle = Preconditions.checkNotNull(bundle);
    }

    /** @hide */
    @NonNull
    public Bundle getBundle() {
        return mBundle;
    }

    @NonNull
    public String getPackageName() {
        return mPackageName;
        return Preconditions.checkNotNull(mBundle.getString(PACKAGE_NAME_FIELD));
    }

    @NonNull
    public byte[] getSha256Certificate() {
        return mSha256Certificate;
        return Preconditions.checkNotNull(mBundle.getByteArray(SHA256_CERTIFICATE_FIELD));
    }

    @Override
@@ -58,12 +71,11 @@ public class PackageIdentifier {
            return false;
        }
        final PackageIdentifier other = (PackageIdentifier) obj;
        return this.mPackageName.equals(other.mPackageName)
                && Arrays.equals(this.mSha256Certificate, other.mSha256Certificate);
        return BundleUtil.deepEquals(mBundle, other.mBundle);
    }

    @Override
    public int hashCode() {
        return Objects.hash(mPackageName, Arrays.hashCode(mSha256Certificate));
        return BundleUtil.deepHashCode(mBundle);
    }
}
Loading