Move Executor parameter into SearchResult#getNextPage.
Bug: 180460795
Test: AppSearchSessionCtsTest
Change-Id: Iaf8ef970222801bf097a6b83643909d48ad44844
diff --git a/framework/api/current.txt b/framework/api/current.txt
index cc79f6b..168c7c2 100644
--- a/framework/api/current.txt
+++ b/framework/api/current.txt
@@ -148,7 +148,7 @@
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 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>>);
}
@@ -217,7 +217,7 @@
public class GlobalSearchSession implements java.io.Closeable {
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 {
@@ -287,7 +287,7 @@
public class SearchResults implements java.io.Closeable {
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 {
diff --git a/framework/java/android/app/appsearch/AppSearchSession.java b/framework/java/android/app/appsearch/AppSearchSession.java
index 54f3350..24cc60e 100644
--- a/framework/java/android/app/appsearch/AppSearchSession.java
+++ b/framework/java/android/app/appsearch/AppSearchSession.java
@@ -395,21 +395,15 @@
* @param queryExpression query string to search.
* @param searchSpec spec for setting document filters, adding projection, setting term match
* 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.
*/
@NonNull
- public SearchResults search(
- @NonNull String queryExpression,
- @NonNull SearchSpec searchSpec,
- @NonNull @CallbackExecutor Executor executor) {
+ public SearchResults search(@NonNull String queryExpression, @NonNull SearchSpec searchSpec) {
Objects.requireNonNull(queryExpression);
Objects.requireNonNull(searchSpec);
- Objects.requireNonNull(executor);
Preconditions.checkState(!mIsClosed, "AppSearchSession has already been closed");
return new SearchResults(mService, mPackageName, mDatabaseName, queryExpression,
- searchSpec, mUserId, executor);
+ searchSpec, mUserId);
}
/**
diff --git a/framework/java/android/app/appsearch/GlobalSearchSession.java b/framework/java/android/app/appsearch/GlobalSearchSession.java
index 93b102b..8dd9dc1 100644
--- a/framework/java/android/app/appsearch/GlobalSearchSession.java
+++ b/framework/java/android/app/appsearch/GlobalSearchSession.java
@@ -106,21 +106,15 @@
* @param queryExpression query string to search.
* @param searchSpec spec for setting document filters, adding projection, setting term match
* 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.
*/
@NonNull
- public SearchResults search(
- @NonNull String queryExpression,
- @NonNull SearchSpec searchSpec,
- @NonNull @CallbackExecutor Executor executor) {
+ public SearchResults search(@NonNull String queryExpression, @NonNull SearchSpec searchSpec) {
Objects.requireNonNull(queryExpression);
Objects.requireNonNull(searchSpec);
- Objects.requireNonNull(executor);
Preconditions.checkState(!mIsClosed, "GlobalSearchSession has already been closed");
return new SearchResults(mService, mPackageName, /*databaseName=*/null, queryExpression,
- searchSpec, mUserId, executor);
+ searchSpec, mUserId);
}
/** Closes the {@link GlobalSearchSession}. */
diff --git a/framework/java/android/app/appsearch/SearchResults.java b/framework/java/android/app/appsearch/SearchResults.java
index e9e978e..531c984 100644
--- a/framework/java/android/app/appsearch/SearchResults.java
+++ b/framework/java/android/app/appsearch/SearchResults.java
@@ -65,8 +65,6 @@
@UserIdInt
private final int mUserId;
- private final Executor mExecutor;
-
private long mNextPageToken;
private boolean mIsFirstLoad = true;
@@ -79,15 +77,13 @@
@Nullable String databaseName,
@NonNull String queryExpression,
@NonNull SearchSpec searchSpec,
- @UserIdInt int userId,
- @NonNull @CallbackExecutor Executor executor) {
+ @UserIdInt int userId) {
mService = Objects.requireNonNull(service);
mPackageName = packageName;
mDatabaseName = databaseName;
mQueryExpression = Objects.requireNonNull(queryExpression);
mSearchSpec = Objects.requireNonNull(searchSpec);
mUserId = userId;
- mExecutor = Objects.requireNonNull(executor);
}
/**
@@ -98,9 +94,14 @@
* <p>Continue calling this method to access results until it returns an empty list, signifying
* 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.
*/
- 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");
try {
if (mIsFirstLoad) {
@@ -108,14 +109,14 @@
if (mDatabaseName == null) {
// Global query, there's no one package-database combination to check.
mService.globalQuery(mPackageName, mQueryExpression,
- mSearchSpec.getBundle(), mUserId, wrapCallback(callback));
+ mSearchSpec.getBundle(), mUserId, wrapCallback(executor, callback));
} else {
// Normal local query, pass in specified database.
mService.query(mPackageName, mDatabaseName, mQueryExpression,
- mSearchSpec.getBundle(), mUserId, wrapCallback(callback));
+ mSearchSpec.getBundle(), mUserId, wrapCallback(executor, callback));
}
} else {
- mService.getNextPage(mNextPageToken, mUserId, wrapCallback(callback));
+ mService.getNextPage(mNextPageToken, mUserId, wrapCallback(executor, callback));
}
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -135,10 +136,11 @@
}
private IAppSearchResultCallback wrapCallback(
+ @NonNull @CallbackExecutor Executor executor,
@NonNull Consumer<AppSearchResult<List<SearchResult>>> callback) {
return new IAppSearchResultCallback.Stub() {
public void onResult(AppSearchResult result) {
- mExecutor.execute(() -> invokeCallback(result, callback));
+ executor.execute(() -> invokeCallback(result, callback));
}
};
}
diff --git a/testing/java/com/android/server/appsearch/testing/AppSearchSessionShimImpl.java b/testing/java/com/android/server/appsearch/testing/AppSearchSessionShimImpl.java
index afa633a..9ef6e0b 100644
--- a/testing/java/com/android/server/appsearch/testing/AppSearchSessionShimImpl.java
+++ b/testing/java/com/android/server/appsearch/testing/AppSearchSessionShimImpl.java
@@ -124,8 +124,7 @@
@NonNull
public SearchResultsShim search(
@NonNull String queryExpression, @NonNull SearchSpec searchSpec) {
- SearchResults searchResults =
- mAppSearchSession.search(queryExpression, searchSpec, mExecutor);
+ SearchResults searchResults = mAppSearchSession.search(queryExpression, searchSpec);
return new SearchResultsShimImpl(searchResults, mExecutor);
}
diff --git a/testing/java/com/android/server/appsearch/testing/GlobalSearchSessionShimImpl.java b/testing/java/com/android/server/appsearch/testing/GlobalSearchSessionShimImpl.java
index 6595d8d..69a4c18 100644
--- a/testing/java/com/android/server/appsearch/testing/GlobalSearchSessionShimImpl.java
+++ b/testing/java/com/android/server/appsearch/testing/GlobalSearchSessionShimImpl.java
@@ -75,8 +75,7 @@
@Override
public SearchResultsShim search(
@NonNull String queryExpression, @NonNull SearchSpec searchSpec) {
- SearchResults searchResults =
- mGlobalSearchSession.search(queryExpression, searchSpec, mExecutor);
+ SearchResults searchResults = mGlobalSearchSession.search(queryExpression, searchSpec);
return new SearchResultsShimImpl(searchResults, mExecutor);
}
diff --git a/testing/java/com/android/server/appsearch/testing/SearchResultsShimImpl.java b/testing/java/com/android/server/appsearch/testing/SearchResultsShimImpl.java
index 75add81..5f26e8c 100644
--- a/testing/java/com/android/server/appsearch/testing/SearchResultsShimImpl.java
+++ b/testing/java/com/android/server/appsearch/testing/SearchResultsShimImpl.java
@@ -47,7 +47,7 @@
@NonNull
public ListenableFuture<List<SearchResult>> getNextPage() {
SettableFuture<AppSearchResult<List<SearchResult>>> future = SettableFuture.create();
- mSearchResults.getNextPage(future::set);
+ mSearchResults.getNextPage(mExecutor, future::set);
return Futures.transform(future, AppSearchResult::getResultValue, mExecutor);
}