/* * Copyright (C) 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.app.cloudsearch; import android.annotation.CallbackExecutor; import android.annotation.NonNull; import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.annotation.SystemService; import android.content.Context; import java.util.concurrent.Executor; /** * A {@link CloudSearchManager} is the class having all the information passed to search providers. * * @hide */ @SystemApi @SystemService(Context.CLOUDSEARCH_SERVICE) public class CloudSearchManager { /** * CallBack Interface for this API. */ public interface CallBack { /** * Invoked by receiving app with the result of the search. * * @param request original request for the search. * @param response search result. */ void onSearchSucceeded(@NonNull SearchRequest request, @NonNull SearchResponse response); /** * Invoked when the search is not successful. * Each failure is recorded. The client may receive a failure from one provider and * subsequently receive successful searches from other providers * * @param request original request for the search. * @param response search result. */ void onSearchFailed(@NonNull SearchRequest request, @NonNull SearchResponse response); } /** @hide **/ public CloudSearchManager() { } /** * Execute an {@link android.app.cloudsearch.SearchRequest} from the given parameters * to the designated cloud lookup services. After the lookup is done, the given * callback will be invoked by the system with the result or lack thereof. * * @param request request to be searched. * @param callbackExecutor where the callback is invoked. * @param callback invoked when the result is available. * @hide */ @SystemApi @RequiresPermission(android.Manifest.permission.MANAGE_CLOUDSEARCH) public void search(@NonNull SearchRequest request, @NonNull @CallbackExecutor Executor callbackExecutor, @NonNull CallBack callback) { callbackExecutor.execute( () -> callback.onSearchFailed(request, new SearchResponse.Builder(SearchResponse.SEARCH_STATUS_UNKNOWN).build())); } }