File: SearchContext.java

package info (click to toggle)
android-platform-frameworks-base 1%3A14~beta1-3
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 326,092 kB
  • sloc: java: 2,032,373; xml: 343,016; cpp: 304,181; python: 3,683; ansic: 2,090; sh: 1,871; makefile: 117; sed: 19
file content (143 lines) | stat: -rw-r--r-- 4,052 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
/*
 * 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.app.search;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;

import java.util.Objects;
import java.util.concurrent.Executor;
import java.util.function.Consumer;

/**
 * When {@link SearchSession} is created, {@link SearchContext} object is created
 * to pass the result types from the {@link SearchSession#query(Query, Executor, Consumer)}
 * method that the client wants.
 *
 * @hide
 */
@SystemApi
public final class SearchContext implements Parcelable {

    /**
     * Result types the client UI is expecting the service to return.
     */
    private final int mResultTypes;

    /**
     * Timeout constraint imposed from the client UI for the first search result.
     */
    private final int mTimeoutMillis;

    /**
     * Send other client UI configurations in extras.
     */
    @Nullable
    private final Bundle mExtras;

    /**
     * Package name of the client.
     */
    @Nullable
    private String mPackageName;

    /**
     * @param resultTypes {@link SearchTarget.SearchResultType}s combined using bit OR operation
     * @param timeoutMillis timeout before client renders its own fallback result
     */
    public SearchContext(@SearchTarget.SearchResultType int resultTypes, int timeoutMillis) {
        this(resultTypes, timeoutMillis, new Bundle());
    }

    /**
     * @param resultTypes {@link SearchTarget.SearchResultType}s combined using bit OR operation
     * @param timeoutMillis timeout before client renders its own fallback result
     * @param extras other client constraints (e.g., height of the search surface)
     */
    public SearchContext(int resultTypes,
            int timeoutMillis,
            @NonNull Bundle extras) {
        mResultTypes = resultTypes;
        mTimeoutMillis = timeoutMillis;
        mExtras = Objects.requireNonNull(extras);
    }

    private SearchContext(Parcel parcel) {
        mResultTypes = parcel.readInt();
        mTimeoutMillis = parcel.readInt();
        mPackageName = parcel.readString();
        mExtras = parcel.readBundle();
    }

    @Nullable
    public String getPackageName() {
        return mPackageName;
    }

    /**
     * @hide
     */
    void setPackageName(@Nullable String packageName) {
        mPackageName = packageName;
    }

    @NonNull
    public int getTimeoutMillis() {
        return mTimeoutMillis;
    }

    @NonNull
    public Bundle getExtras() {
        return mExtras;
    }

    @NonNull
    public int getResultTypes() {
        return mResultTypes;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        dest.writeInt(mResultTypes);
        dest.writeInt(mTimeoutMillis);
        dest.writeString(mPackageName);
        dest.writeBundle(mExtras);
    }

    /**
     * @see Parcelable.Creator
     */
    @NonNull
    public static final Parcelable.Creator<SearchContext> CREATOR =
            new Parcelable.Creator<SearchContext>() {
                public SearchContext createFromParcel(Parcel parcel) {
                    return new SearchContext(parcel);
                }

                public SearchContext[] newArray(int size) {
                    return new SearchContext[size];
                }
            };
}