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

Commit 82b3f05b authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Close the SearchResults object when there are no more results." into main

parents a2477b62 d0c066ee
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -84,8 +84,8 @@ public final class AppFunctionDumpHelper {
                new FutureGlobalSearchSession(appSearchManager, Runnable::run)) {
            pw.println();

            FutureSearchResults futureSearchResults =
                    searchSession.search("", buildAppFunctionMetadataSearchSpec()).get();
            try (FutureSearchResults futureSearchResults =
                    searchSession.search("", buildAppFunctionMetadataSearchSpec()).get(); ) {
                List<SearchResult> searchResultsList;
                do {
                    searchResultsList = futureSearchResults.getNextPage().get();
@@ -93,6 +93,8 @@ public final class AppFunctionDumpHelper {
                        dumpAppFunctionMetadata(pw, searchResult);
                    }
                } while (!searchResultsList.isEmpty());
            }

        } catch (Exception e) {
            pw.println("Failed to dump AppFunction state: " + e);
        }
+5 −1
Original line number Diff line number Diff line
@@ -24,11 +24,12 @@ import android.app.appsearch.SearchResults;

import com.android.internal.infra.AndroidFuture;

import java.io.Closeable;
import java.io.IOException;
import java.util.List;

/** A future API wrapper of {@link android.app.appsearch.SearchResults}. */
public interface FutureSearchResults {
public interface FutureSearchResults extends Closeable {

    /** Converts a failed app search result codes into an exception. */
    @NonNull
@@ -52,4 +53,7 @@ public interface FutureSearchResults {
     * there are no more results.
     */
    AndroidFuture<List<SearchResult>> getNextPage();

    @Override
    void close();
}
+5 −0
Original line number Diff line number Diff line
@@ -54,4 +54,9 @@ public class FutureSearchResultsImpl implements FutureSearchResults {
                            }
                        });
    }

    @Override
    public void close() {
        mSearchResults.close();
    }
}
+17 −14
Original line number Diff line number Diff line
@@ -420,19 +420,21 @@ public class MetadataSyncAdapter {
        Objects.requireNonNull(propertyPackageName);
        ArrayMap<String, ArraySet<String>> packageToFunctionIds = new ArrayMap<>();

        FutureSearchResults futureSearchResults =
        try (FutureSearchResults futureSearchResults =
                searchSession
                        .search(
                                "",
                                buildMetadataSearchSpec(
                                        schemaType, propertyFunctionId, propertyPackageName))
                        .get();
                        .get(); ) {
            List<SearchResult> searchResultsList = futureSearchResults.getNextPage().get();
            // TODO(b/357551503): This could be expensive if we have more functions
            while (!searchResultsList.isEmpty()) {
                for (SearchResult searchResult : searchResultsList) {
                    String packageName =
                        searchResult.getGenericDocument().getPropertyString(propertyPackageName);
                            searchResult
                                    .getGenericDocument()
                                    .getPropertyString(propertyPackageName);
                    String functionId =
                            searchResult.getGenericDocument().getPropertyString(propertyFunctionId);
                    packageToFunctionIds
@@ -441,6 +443,7 @@ public class MetadataSyncAdapter {
                }
                searchResultsList = futureSearchResults.getNextPage().get();
            }
        }
        return packageToFunctionIds;
    }

+4 −0
Original line number Diff line number Diff line
@@ -391,6 +391,10 @@ class MetadataSyncAdapterTest {
                            return AndroidFuture.completedFuture(mutableListOf())
                        }
                    }

                    override fun close() {
                        Log.d("FakeRuntimeMetadataSearchSession", "Closing session")
                    }
                }
            return AndroidFuture.completedFuture(futureSearchResults)
        }