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

Commit d0c066ee authored by Utkarsh Nigam's avatar Utkarsh Nigam
Browse files

Close the SearchResults object when there are no more results.

Change-Id: I1d6d5172cf3fc432368b847039eb95958bc585bd
Flag: android.app.appfunctions.flags.enable_app_function_manager
Test: CTS
Bug: 357551503
parent 19cb1d78
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)
        }