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

Commit ad71d830 authored by Alexander Dorokhine's avatar Alexander Dorokhine
Browse files

Move Executor parameter into SearchResult#getNextPage.

Bug: 180460795
Test: AppSearchSessionCtsTest
Change-Id: Iaf8ef970222801bf097a6b83643909d48ad44844
parent 30063556
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -148,7 +148,7 @@ package android.app.appsearch {
    method public void remove(@NonNull android.app.appsearch.RemoveByUriRequest, @NonNull java.util.concurrent.Executor, @NonNull android.app.appsearch.BatchResultCallback<java.lang.String,java.lang.Void>);
    method public void remove(@NonNull android.app.appsearch.RemoveByUriRequest, @NonNull java.util.concurrent.Executor, @NonNull android.app.appsearch.BatchResultCallback<java.lang.String,java.lang.Void>);
    method public void remove(@NonNull String, @NonNull android.app.appsearch.SearchSpec, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.appsearch.AppSearchResult<java.lang.Void>>);
    method public void remove(@NonNull String, @NonNull android.app.appsearch.SearchSpec, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.appsearch.AppSearchResult<java.lang.Void>>);
    method public void reportUsage(@NonNull android.app.appsearch.ReportUsageRequest, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.appsearch.AppSearchResult<java.lang.Void>>);
    method public void reportUsage(@NonNull android.app.appsearch.ReportUsageRequest, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.appsearch.AppSearchResult<java.lang.Void>>);
    method @NonNull public android.app.appsearch.SearchResults search(@NonNull String, @NonNull android.app.appsearch.SearchSpec, @NonNull java.util.concurrent.Executor);
    method @NonNull public android.app.appsearch.SearchResults search(@NonNull String, @NonNull android.app.appsearch.SearchSpec);
    method public void setSchema(@NonNull android.app.appsearch.SetSchemaRequest, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.appsearch.AppSearchResult<android.app.appsearch.SetSchemaResponse>>);
    method public void setSchema(@NonNull android.app.appsearch.SetSchemaRequest, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.appsearch.AppSearchResult<android.app.appsearch.SetSchemaResponse>>);
  }
  }


@@ -217,7 +217,7 @@ package android.app.appsearch {


  public class GlobalSearchSession implements java.io.Closeable {
  public class GlobalSearchSession implements java.io.Closeable {
    method public void close();
    method public void close();
    method @NonNull public android.app.appsearch.SearchResults search(@NonNull String, @NonNull android.app.appsearch.SearchSpec, @NonNull java.util.concurrent.Executor);
    method @NonNull public android.app.appsearch.SearchResults search(@NonNull String, @NonNull android.app.appsearch.SearchSpec);
  }
  }


  public class PackageIdentifier {
  public class PackageIdentifier {
@@ -287,7 +287,7 @@ package android.app.appsearch {


  public class SearchResults implements java.io.Closeable {
  public class SearchResults implements java.io.Closeable {
    method public void close();
    method public void close();
    method public void getNextPage(@NonNull java.util.function.Consumer<android.app.appsearch.AppSearchResult<java.util.List<android.app.appsearch.SearchResult>>>);
    method public void getNextPage(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.appsearch.AppSearchResult<java.util.List<android.app.appsearch.SearchResult>>>);
  }
  }


  public final class SearchSpec {
  public final class SearchSpec {
+2 −8
Original line number Original line Diff line number Diff line
@@ -395,21 +395,15 @@ public final class AppSearchSession implements Closeable {
     * @param queryExpression query string to search.
     * @param queryExpression query string to search.
     * @param searchSpec spec for setting document filters, adding projection, setting term match
     * @param searchSpec spec for setting document filters, adding projection, setting term match
     *     type, etc.
     *     type, etc.
     * @param executor        Executor on which to invoke the callback of the following request
     *                        {@link SearchResults#getNextPage}.
     * @return a {@link SearchResults} object for retrieved matched documents.
     * @return a {@link SearchResults} object for retrieved matched documents.
     */
     */
    @NonNull
    @NonNull
    public SearchResults search(
    public SearchResults search(@NonNull String queryExpression, @NonNull SearchSpec searchSpec) {
            @NonNull String queryExpression,
            @NonNull SearchSpec searchSpec,
            @NonNull @CallbackExecutor Executor executor) {
        Objects.requireNonNull(queryExpression);
        Objects.requireNonNull(queryExpression);
        Objects.requireNonNull(searchSpec);
        Objects.requireNonNull(searchSpec);
        Objects.requireNonNull(executor);
        Preconditions.checkState(!mIsClosed, "AppSearchSession has already been closed");
        Preconditions.checkState(!mIsClosed, "AppSearchSession has already been closed");
        return new SearchResults(mService, mPackageName, mDatabaseName, queryExpression,
        return new SearchResults(mService, mPackageName, mDatabaseName, queryExpression,
                searchSpec, mUserId, executor);
                searchSpec, mUserId);
    }
    }


    /**
    /**
+2 −8
Original line number Original line Diff line number Diff line
@@ -106,21 +106,15 @@ public class GlobalSearchSession implements Closeable {
     * @param queryExpression query string to search.
     * @param queryExpression query string to search.
     * @param searchSpec spec for setting document filters, adding projection, setting term match
     * @param searchSpec spec for setting document filters, adding projection, setting term match
     *     type, etc.
     *     type, etc.
     * @param executor        Executor on which to invoke the callback of the following request
     *                        {@link SearchResults#getNextPage}.
     * @return a {@link SearchResults} object for retrieved matched documents.
     * @return a {@link SearchResults} object for retrieved matched documents.
     */
     */
    @NonNull
    @NonNull
    public SearchResults search(
    public SearchResults search(@NonNull String queryExpression, @NonNull SearchSpec searchSpec) {
            @NonNull String queryExpression,
            @NonNull SearchSpec searchSpec,
            @NonNull @CallbackExecutor Executor executor) {
        Objects.requireNonNull(queryExpression);
        Objects.requireNonNull(queryExpression);
        Objects.requireNonNull(searchSpec);
        Objects.requireNonNull(searchSpec);
        Objects.requireNonNull(executor);
        Preconditions.checkState(!mIsClosed, "GlobalSearchSession has already been closed");
        Preconditions.checkState(!mIsClosed, "GlobalSearchSession has already been closed");
        return new SearchResults(mService, mPackageName, /*databaseName=*/null, queryExpression,
        return new SearchResults(mService, mPackageName, /*databaseName=*/null, queryExpression,
                searchSpec, mUserId, executor);
                searchSpec, mUserId);
    }
    }


    /** Closes the {@link GlobalSearchSession}. */
    /** Closes the {@link GlobalSearchSession}. */
+12 −10
Original line number Original line Diff line number Diff line
@@ -65,8 +65,6 @@ public class SearchResults implements Closeable {
    @UserIdInt
    @UserIdInt
    private final int mUserId;
    private final int mUserId;


    private final Executor mExecutor;

    private long mNextPageToken;
    private long mNextPageToken;


    private boolean mIsFirstLoad = true;
    private boolean mIsFirstLoad = true;
@@ -79,15 +77,13 @@ public class SearchResults implements Closeable {
            @Nullable String databaseName,
            @Nullable String databaseName,
            @NonNull String queryExpression,
            @NonNull String queryExpression,
            @NonNull SearchSpec searchSpec,
            @NonNull SearchSpec searchSpec,
            @UserIdInt int userId,
            @UserIdInt int userId) {
            @NonNull @CallbackExecutor Executor executor) {
        mService = Objects.requireNonNull(service);
        mService = Objects.requireNonNull(service);
        mPackageName = packageName;
        mPackageName = packageName;
        mDatabaseName = databaseName;
        mDatabaseName = databaseName;
        mQueryExpression = Objects.requireNonNull(queryExpression);
        mQueryExpression = Objects.requireNonNull(queryExpression);
        mSearchSpec = Objects.requireNonNull(searchSpec);
        mSearchSpec = Objects.requireNonNull(searchSpec);
        mUserId = userId;
        mUserId = userId;
        mExecutor = Objects.requireNonNull(executor);
    }
    }


    /**
    /**
@@ -98,9 +94,14 @@ public class SearchResults implements Closeable {
     * <p>Continue calling this method to access results until it returns an empty list, signifying
     * <p>Continue calling this method to access results until it returns an empty list, signifying
     * there are no more results.
     * there are no more results.
     *
     *
     * @param executor Executor on which to invoke the callback.
     * @param callback Callback to receive the pending result of performing this operation.
     * @param callback Callback to receive the pending result of performing this operation.
     */
     */
    public void getNextPage(@NonNull Consumer<AppSearchResult<List<SearchResult>>> callback) {
    public void getNextPage(
            @NonNull @CallbackExecutor Executor executor,
            @NonNull Consumer<AppSearchResult<List<SearchResult>>> callback) {
        Objects.requireNonNull(executor);
        Objects.requireNonNull(callback);
        Preconditions.checkState(!mIsClosed, "SearchResults has already been closed");
        Preconditions.checkState(!mIsClosed, "SearchResults has already been closed");
        try {
        try {
            if (mIsFirstLoad) {
            if (mIsFirstLoad) {
@@ -108,14 +109,14 @@ public class SearchResults implements Closeable {
                if (mDatabaseName == null) {
                if (mDatabaseName == null) {
                    // Global query, there's no one package-database combination to check.
                    // Global query, there's no one package-database combination to check.
                    mService.globalQuery(mPackageName, mQueryExpression,
                    mService.globalQuery(mPackageName, mQueryExpression,
                            mSearchSpec.getBundle(), mUserId, wrapCallback(callback));
                            mSearchSpec.getBundle(), mUserId, wrapCallback(executor, callback));
                } else {
                } else {
                    // Normal local query, pass in specified database.
                    // Normal local query, pass in specified database.
                    mService.query(mPackageName, mDatabaseName, mQueryExpression,
                    mService.query(mPackageName, mDatabaseName, mQueryExpression,
                            mSearchSpec.getBundle(), mUserId, wrapCallback(callback));
                            mSearchSpec.getBundle(), mUserId, wrapCallback(executor, callback));
                }
                }
            } else {
            } else {
                mService.getNextPage(mNextPageToken, mUserId, wrapCallback(callback));
                mService.getNextPage(mNextPageToken, mUserId, wrapCallback(executor, callback));
            }
            }
        } catch (RemoteException e) {
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
            throw e.rethrowFromSystemServer();
@@ -135,10 +136,11 @@ public class SearchResults implements Closeable {
    }
    }


    private IAppSearchResultCallback wrapCallback(
    private IAppSearchResultCallback wrapCallback(
            @NonNull @CallbackExecutor Executor executor,
            @NonNull Consumer<AppSearchResult<List<SearchResult>>> callback) {
            @NonNull Consumer<AppSearchResult<List<SearchResult>>> callback) {
        return new IAppSearchResultCallback.Stub() {
        return new IAppSearchResultCallback.Stub() {
            public void onResult(AppSearchResult result) {
            public void onResult(AppSearchResult result) {
                mExecutor.execute(() -> invokeCallback(result, callback));
                executor.execute(() -> invokeCallback(result, callback));
            }
            }
        };
        };
    }
    }
+1 −2
Original line number Original line Diff line number Diff line
@@ -124,8 +124,7 @@ public class AppSearchSessionShimImpl implements AppSearchSessionShim {
    @NonNull
    @NonNull
    public SearchResultsShim search(
    public SearchResultsShim search(
            @NonNull String queryExpression, @NonNull SearchSpec searchSpec) {
            @NonNull String queryExpression, @NonNull SearchSpec searchSpec) {
        SearchResults searchResults =
        SearchResults searchResults = mAppSearchSession.search(queryExpression, searchSpec);
                mAppSearchSession.search(queryExpression, searchSpec, mExecutor);
        return new SearchResultsShimImpl(searchResults, mExecutor);
        return new SearchResultsShimImpl(searchResults, mExecutor);
    }
    }


Loading