Loading apex/appsearch/framework/api/current.txt +10 −1 Original line number Diff line number Diff line Loading @@ -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(); } Loading @@ -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 { Loading @@ -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(); Loading @@ -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(); Loading apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java +2 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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() { Loading apex/appsearch/framework/java/android/app/appsearch/AppSearchSession.java +12 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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() { Loading apex/appsearch/framework/java/android/app/appsearch/IAppSearchManager.aidl +3 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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. * Loading apex/appsearch/framework/java/external/android/app/appsearch/PackageIdentifier.java +24 −12 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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 Loading @@ -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
apex/appsearch/framework/api/current.txt +10 −1 Original line number Diff line number Diff line Loading @@ -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(); } Loading @@ -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 { Loading @@ -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(); Loading @@ -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(); Loading
apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java +2 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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() { Loading
apex/appsearch/framework/java/android/app/appsearch/AppSearchSession.java +12 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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() { Loading
apex/appsearch/framework/java/android/app/appsearch/IAppSearchManager.aidl +3 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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. * Loading
apex/appsearch/framework/java/external/android/app/appsearch/PackageIdentifier.java +24 −12 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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 Loading @@ -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); } }