blob: 87ccb660e5bd70443b91f31b741d299f3a003ffe [file] [log] [blame]
Sunny Goyal54e91342018-11-14 11:59:02 -08001/*
2 * Copyright (C) 2018 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package android.app.prediction;
17
18import android.annotation.NonNull;
19import android.annotation.Nullable;
20import android.annotation.SystemApi;
21import android.content.Context;
22import android.os.Bundle;
23import android.os.Parcel;
24import android.os.Parcelable;
25
26/**
27 * TODO(b/111701043): Add java docs
28 *
29 * @hide
30 */
31@SystemApi
32public final class AppPredictionContext implements Parcelable {
33
34 private final int mPredictedTargetCount;
35 @NonNull
36 private final String mUiSurface;
37 @NonNull
38 private final String mPackageName;
39 @Nullable
40 private final Bundle mExtras;
41
42 private AppPredictionContext(@NonNull String uiSurface, int numPredictedTargets,
43 @NonNull String packageName, @Nullable Bundle extras) {
44 mUiSurface = uiSurface;
45 mPredictedTargetCount = numPredictedTargets;
46 mPackageName = packageName;
47 mExtras = extras;
48 }
49
50 private AppPredictionContext(Parcel parcel) {
51 mUiSurface = parcel.readString();
52 mPredictedTargetCount = parcel.readInt();
53 mPackageName = parcel.readString();
54 mExtras = parcel.readBundle();
55 }
56
57 public String getUiSurface() {
58 return mUiSurface;
59 }
60
61 public int getPredictedTargetCount() {
62 return mPredictedTargetCount;
63 }
64
65 @NonNull
66 public String getPackageName() {
67 return mPackageName;
68 }
69
70 @Nullable
71 public Bundle getExtras() {
72 return mExtras;
73 }
74
75 @Override
76 public int describeContents() {
77 return 0;
78 }
79
80 @Override
81 public void writeToParcel(Parcel dest, int flags) {
82 dest.writeString(mUiSurface);
83 dest.writeInt(mPredictedTargetCount);
84 dest.writeString(mPackageName);
85 dest.writeBundle(mExtras);
86 }
87
88 /**
89 * @see Parcelable.Creator
90 */
91 public static final Parcelable.Creator<AppPredictionContext> CREATOR =
92 new Parcelable.Creator<AppPredictionContext>() {
93 public AppPredictionContext createFromParcel(Parcel parcel) {
94 return new AppPredictionContext(parcel);
95 }
96
97 public AppPredictionContext[] newArray(int size) {
98 return new AppPredictionContext[size];
99 }
100 };
101
102 /**
103 * A builder for app prediction contexts.
104 * @hide
105 */
106 @SystemApi
107 public static final class Builder {
108
109 @NonNull
110 private final String mPackageName;
111
112 private int mPredictedTargetCount;
113 @Nullable
114 private String mUiSurface;
115 @Nullable
116 private Bundle mExtras;
117
118 /**
119 * @hide
120 */
121 public Builder(@NonNull Context context) {
122 mPackageName = context.getPackageName();
123 }
124
125
126 /**
127 * Sets the number of prediction targets as a hint.
128 */
129 public Builder setPredictedTargetCount(int predictedTargetCount) {
130 mPredictedTargetCount = predictedTargetCount;
131 return this;
132 }
133
134 /**
135 * Sets the UI surface.
136 */
137 public Builder setUiSurface(@Nullable String uiSurface) {
138 mUiSurface = uiSurface;
139 return this;
140 }
141
142 /**
143 * Sets the extras.
144 */
145 public Builder setExtras(@Nullable Bundle extras) {
146 mExtras = extras;
147 return this;
148 }
149
150 /**
151 * Builds a new context instance.
152 */
153 public AppPredictionContext build() {
154 return new AppPredictionContext(mUiSurface, mPredictedTargetCount, mPackageName,
155 mExtras);
156 }
157 }
158}