blob: bc4d54f9290361eabc2cd90d0d818b85f405ac86 [file] [log] [blame]
/*
* Copyright (C) 2020 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.searchuiservice.cts;
import static androidx.test.InstrumentationRegistry.getContext;
import android.app.search.Query;
import android.app.search.SearchAction;
import android.app.search.SearchTarget;
import android.appwidget.AppWidgetProviderInfo;
import android.content.Intent;
import android.content.pm.ShortcutInfo;
import android.net.Uri;
import android.os.Bundle;
import android.os.UserHandle;
import java.util.ArrayList;
import java.util.List;
public class SearchUiUtils {
static final String LAYOUT_TYPE_HERO = "hero";
static final int RESULT_CORPUS1 = 1 << 0;
static final int RESULT_CORPUS2 = 1 << 1;
static final int RESULT_CORPUS3 = 1 << 2;
static final String QUERY_INPUT = "b";
static final int QUERY_TIMESTAMP = 314;
/**
* Generate total {@param num} of {@link SearchTarget}s.
*/
static List<SearchTarget> generateSearchTargetList(int num) {
return generateSearchTargetList(num, false, false, false, false);
}
/**
* Generate total {@param num} of {@link SearchTarget}s.
*/
static List<SearchTarget> generateSearchTargetList(int num,
boolean includeSearchAction,
boolean includeShortcutInfo,
boolean includeAppWidgetProviderInfo,
boolean includeSliceUri) {
List<SearchTarget> targets = new ArrayList<>();
for (int seed = 0; seed < num; seed++) {
targets.add(generateSearchTarget(seed,
includeSearchAction,
includeShortcutInfo,
includeAppWidgetProviderInfo,
includeSliceUri));
}
return targets;
}
/**
* Generate sample search target using the {@param seed}.
*/
static SearchTarget generateSearchTarget(int seed,
boolean includeSearchAction,
boolean includeShortcutInfo,
boolean includeAppWidgetProviderInfo,
boolean includeSliceUri) {
SearchTarget.Builder builder = new SearchTarget.Builder(RESULT_CORPUS1, LAYOUT_TYPE_HERO, String.valueOf(seed))
.setPackageName("package name")
.setUserHandle(UserHandle.CURRENT);
if (includeSearchAction) {
builder.setSearchAction(new SearchAction.Builder("id" + seed, "title" + seed)
.setIntent(new Intent())
.build());
}
if (includeShortcutInfo) {
builder.setShortcutInfo(new ShortcutInfo.Builder(getContext(), "id" + seed)
.build());
}
if (includeAppWidgetProviderInfo) {
builder.setAppWidgetProviderInfo(new AppWidgetProviderInfo());
}
if (includeSliceUri) {
builder.setSliceUri(new Uri.Builder().build());
}
return builder.build();
}
static Query generateQuery(Bundle extras) {
return new Query(QUERY_INPUT, QUERY_TIMESTAMP, extras);
}
}